@bitgo-beta/sdk-coin-vet 1.0.1-beta.32 → 1.0.1-beta.321

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 (99) hide show
  1. package/.mocharc.yml +1 -1
  2. package/CHANGELOG.md +150 -0
  3. package/dist/src/index.d.ts +2 -0
  4. package/dist/src/index.d.ts.map +1 -1
  5. package/dist/src/index.js +3 -1
  6. package/dist/src/lib/constants.d.ts +11 -1
  7. package/dist/src/lib/constants.d.ts.map +1 -1
  8. package/dist/src/lib/constants.js +13 -3
  9. package/dist/src/lib/iface.d.ts +28 -1
  10. package/dist/src/lib/iface.d.ts.map +1 -1
  11. package/dist/src/lib/iface.js +1 -1
  12. package/dist/src/lib/index.d.ts +18 -3
  13. package/dist/src/lib/index.d.ts.map +1 -1
  14. package/dist/src/lib/index.js +35 -5
  15. package/dist/src/lib/transaction/addressInitializationTransaction.d.ts +31 -0
  16. package/dist/src/lib/transaction/addressInitializationTransaction.d.ts.map +1 -0
  17. package/dist/src/lib/transaction/addressInitializationTransaction.js +170 -0
  18. package/dist/src/lib/transaction/burnNftTransaction.d.ts +26 -0
  19. package/dist/src/lib/transaction/burnNftTransaction.d.ts.map +1 -0
  20. package/dist/src/lib/transaction/burnNftTransaction.js +124 -0
  21. package/dist/src/lib/transaction/claimRewards.d.ts +58 -0
  22. package/dist/src/lib/transaction/claimRewards.d.ts.map +1 -0
  23. package/dist/src/lib/transaction/claimRewards.js +242 -0
  24. package/dist/src/lib/transaction/exitDelegation.d.ts +26 -0
  25. package/dist/src/lib/transaction/exitDelegation.d.ts.map +1 -0
  26. package/dist/src/lib/transaction/exitDelegation.js +124 -0
  27. package/dist/src/lib/transaction/flushTokenTransaction.d.ts +20 -0
  28. package/dist/src/lib/transaction/flushTokenTransaction.d.ts.map +1 -0
  29. package/dist/src/lib/transaction/flushTokenTransaction.js +98 -0
  30. package/dist/src/lib/transaction/nftTransaction.d.ts +17 -0
  31. package/dist/src/lib/transaction/nftTransaction.d.ts.map +1 -0
  32. package/dist/src/lib/transaction/nftTransaction.js +108 -0
  33. package/dist/src/lib/transaction/stakingTransaction.d.ts +21 -0
  34. package/dist/src/lib/transaction/stakingTransaction.d.ts.map +1 -0
  35. package/dist/src/lib/transaction/stakingTransaction.js +136 -0
  36. package/dist/src/lib/transaction/tokenTransaction.d.ts +14 -0
  37. package/dist/src/lib/transaction/tokenTransaction.d.ts.map +1 -0
  38. package/dist/src/lib/transaction/tokenTransaction.js +95 -0
  39. package/dist/src/lib/transaction/transaction.d.ts +106 -0
  40. package/dist/src/lib/transaction/transaction.d.ts.map +1 -0
  41. package/dist/src/lib/transaction/transaction.js +468 -0
  42. package/dist/src/lib/transactionBuilder/addressInitializationBuilder.d.ts +78 -0
  43. package/dist/src/lib/transactionBuilder/addressInitializationBuilder.d.ts.map +1 -0
  44. package/dist/src/lib/transactionBuilder/addressInitializationBuilder.js +158 -0
  45. package/dist/src/lib/transactionBuilder/burnNftBuilder.d.ts +65 -0
  46. package/dist/src/lib/transactionBuilder/burnNftBuilder.d.ts.map +1 -0
  47. package/dist/src/lib/transactionBuilder/burnNftBuilder.js +130 -0
  48. package/dist/src/lib/transactionBuilder/claimRewardsBuilder.d.ts +57 -0
  49. package/dist/src/lib/transactionBuilder/claimRewardsBuilder.d.ts.map +1 -0
  50. package/dist/src/lib/transactionBuilder/claimRewardsBuilder.js +145 -0
  51. package/dist/src/lib/transactionBuilder/exitDelegationBuilder.d.ts +65 -0
  52. package/dist/src/lib/transactionBuilder/exitDelegationBuilder.d.ts.map +1 -0
  53. package/dist/src/lib/transactionBuilder/exitDelegationBuilder.js +132 -0
  54. package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.d.ts +66 -0
  55. package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.d.ts.map +1 -0
  56. package/dist/src/lib/transactionBuilder/flushTokenTransactionBuilder.js +129 -0
  57. package/dist/src/lib/transactionBuilder/nftTransactionBuilder.d.ts +23 -0
  58. package/dist/src/lib/transactionBuilder/nftTransactionBuilder.d.ts.map +1 -0
  59. package/dist/src/lib/transactionBuilder/nftTransactionBuilder.js +93 -0
  60. package/dist/src/lib/transactionBuilder/stakingBuilder.d.ts +72 -0
  61. package/dist/src/lib/transactionBuilder/stakingBuilder.d.ts.map +1 -0
  62. package/dist/src/lib/transactionBuilder/stakingBuilder.js +129 -0
  63. package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.d.ts +21 -0
  64. package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.d.ts.map +1 -0
  65. package/dist/src/lib/transactionBuilder/tokenTransactionBuilder.js +70 -0
  66. package/dist/src/lib/{transactionBuilder.d.ts → transactionBuilder/transactionBuilder.d.ts} +29 -18
  67. package/dist/src/lib/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  68. package/dist/src/lib/transactionBuilder/transactionBuilder.js +155 -0
  69. package/dist/src/lib/{transferBuilder.d.ts → transactionBuilder/transferBuilder.d.ts} +4 -2
  70. package/dist/src/lib/transactionBuilder/transferBuilder.d.ts.map +1 -0
  71. package/dist/src/lib/transactionBuilder/transferBuilder.js +45 -0
  72. package/dist/src/lib/transactionBuilderFactory.d.ts +64 -5
  73. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  74. package/dist/src/lib/transactionBuilderFactory.js +140 -5
  75. package/dist/src/lib/types.d.ts +15 -0
  76. package/dist/src/lib/types.d.ts.map +1 -0
  77. package/dist/src/lib/types.js +3 -0
  78. package/dist/src/lib/utils.d.ts +19 -1
  79. package/dist/src/lib/utils.d.ts.map +1 -1
  80. package/dist/src/lib/utils.js +110 -3
  81. package/dist/src/register.d.ts.map +1 -1
  82. package/dist/src/register.js +9 -1
  83. package/dist/src/vet.d.ts +15 -4
  84. package/dist/src/vet.d.ts.map +1 -1
  85. package/dist/src/vet.js +154 -7
  86. package/dist/src/vetNFTCollection.d.ts +18 -0
  87. package/dist/src/vetNFTCollection.d.ts.map +1 -0
  88. package/dist/src/vetNFTCollection.js +52 -0
  89. package/dist/src/vetToken.d.ts +19 -0
  90. package/dist/src/vetToken.d.ts.map +1 -0
  91. package/dist/src/vetToken.js +52 -0
  92. package/package.json +14 -9
  93. package/dist/src/lib/transaction.d.ts +0 -8
  94. package/dist/src/lib/transaction.d.ts.map +0 -1
  95. package/dist/src/lib/transaction.js +0 -17
  96. package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
  97. package/dist/src/lib/transactionBuilder.js +0 -78
  98. package/dist/src/lib/transferBuilder.d.ts.map +0 -1
  99. package/dist/src/lib/transferBuilder.js +0 -15
@@ -0,0 +1,65 @@
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 default address from constants.
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
+ * Generates the transaction data for exit delegation by encoding the exitDelegation method call.
59
+ *
60
+ * @private
61
+ * @returns {string} The encoded transaction data as a hex string
62
+ */
63
+ private getExitDelegationData;
64
+ }
65
+ //# 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;AAI7D,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,GAAE,MAAoC,GAAG,IAAI;IAMvE,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,CAAC,EAAE,yBAAyB,GAAG,IAAI;IAUlE,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAQ3D;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;CAU9B"}
@@ -0,0 +1,132 @@
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 ethereumjs_abi_1 = __importDefault(require("ethereumjs-abi"));
10
+ const ethereumjs_util_1 = require("ethereumjs-util");
11
+ const transactionBuilder_1 = require("./transactionBuilder");
12
+ const exitDelegation_1 = require("../transaction/exitDelegation");
13
+ const utils_1 = __importDefault(require("../utils"));
14
+ const constants_1 = require("../constants");
15
+ class ExitDelegationBuilder extends transactionBuilder_1.TransactionBuilder {
16
+ /**
17
+ * Creates a new ExitDelegationBuilder instance.
18
+ *
19
+ * @param {Readonly<CoinConfig>} _coinConfig - The coin configuration object
20
+ */
21
+ constructor(_coinConfig) {
22
+ super(_coinConfig);
23
+ this._transaction = new exitDelegation_1.ExitDelegationTransaction(_coinConfig);
24
+ }
25
+ /**
26
+ * Initializes the builder with an existing ExitDelegationTransaction.
27
+ *
28
+ * @param {ExitDelegationTransaction} tx - The transaction to initialize the builder with
29
+ */
30
+ initBuilder(tx) {
31
+ this._transaction = tx;
32
+ }
33
+ /**
34
+ * Gets the exit delegation transaction instance.
35
+ *
36
+ * @returns {ExitDelegationTransaction} The exit delegation transaction
37
+ */
38
+ get exitDelegationTransaction() {
39
+ return this._transaction;
40
+ }
41
+ /**
42
+ * Gets the transaction type for unstaking.
43
+ *
44
+ * @returns {TransactionType} The transaction type
45
+ */
46
+ get transactionType() {
47
+ return sdk_core_1.TransactionType.StakingUnlock;
48
+ }
49
+ /**
50
+ * Validates the transaction clauses for unstaking.
51
+ * @param {TransactionClause[]} clauses - The transaction clauses to validate.
52
+ * @returns {boolean} - Returns true if the clauses are valid, false otherwise.
53
+ */
54
+ isValidTransactionClauses(clauses) {
55
+ try {
56
+ if (!clauses || !Array.isArray(clauses) || clauses.length === 0) {
57
+ return false;
58
+ }
59
+ const clause = clauses[0];
60
+ if (!clause.to || !utils_1.default.isValidAddress(clause.to)) {
61
+ return false;
62
+ }
63
+ // For unstaking transactions, value must be exactly '0x0'
64
+ if (clause.value !== 0) {
65
+ return false;
66
+ }
67
+ // Check if the data starts with the exitDelegation method ID
68
+ if (!clause.data.startsWith(constants_1.EXIT_DELEGATION_METHOD_ID)) {
69
+ return false;
70
+ }
71
+ return true;
72
+ }
73
+ catch (e) {
74
+ return false;
75
+ }
76
+ }
77
+ /**
78
+ * Sets the token ID for this unstaking transaction.
79
+ *
80
+ * @param {string} tokenId - The ID of the NFT token to unstake
81
+ * @returns {ExitDelegationBuilder} This transaction builder
82
+ */
83
+ tokenId(tokenId) {
84
+ this.exitDelegationTransaction.tokenId = tokenId;
85
+ return this;
86
+ }
87
+ /**
88
+ * Sets the delegation contract address for this unstaking transaction.
89
+ * If not provided, uses the default address from constants.
90
+ *
91
+ * @param {string} address - The delegation contract address
92
+ * @returns {ExitDelegationBuilder} This transaction builder
93
+ */
94
+ delegationContract(address = constants_1.STARGATE_DELEGATION_ADDRESS) {
95
+ this.validateAddress({ address });
96
+ this.exitDelegationTransaction.contract = address;
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, 'Delegation contract address is required');
105
+ (0, assert_1.default)(transaction.tokenId, 'Token ID is required');
106
+ this.validateAddress({ address: transaction.contract });
107
+ }
108
+ /** @inheritdoc */
109
+ async buildImplementation() {
110
+ this.transaction.type = this.transactionType;
111
+ // Set the transaction data before building
112
+ this.exitDelegationTransaction.transactionData = this.getExitDelegationData();
113
+ await this.exitDelegationTransaction.build();
114
+ return this.transaction;
115
+ }
116
+ /**
117
+ * Generates the transaction data for exit delegation by encoding the exitDelegation method call.
118
+ *
119
+ * @private
120
+ * @returns {string} The encoded transaction data as a hex string
121
+ */
122
+ getExitDelegationData() {
123
+ const methodName = 'exitDelegation';
124
+ const types = ['uint256'];
125
+ const params = [this.exitDelegationTransaction.tokenId];
126
+ const method = ethereumjs_abi_1.default.methodID(methodName, types);
127
+ const args = ethereumjs_abi_1.default.rawEncode(types, params);
128
+ return (0, ethereumjs_util_1.addHexPrefix)(Buffer.concat([method, args]).toString('hex'));
129
+ }
130
+ }
131
+ exports.ExitDelegationBuilder = ExitDelegationBuilder;
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhpdERlbGVnYXRpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXIvZXhpdERlbGVnYXRpb25CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUE0QjtBQUU1QixtREFBdUQ7QUFFdkQsb0VBQXlDO0FBQ3pDLHFEQUErQztBQUUvQyw2REFBMEQ7QUFDMUQsa0VBQTBFO0FBRTFFLHFEQUE2QjtBQUM3Qiw0Q0FBc0Y7QUFFdEYsTUFBYSxxQkFBc0IsU0FBUSx1Q0FBa0I7SUFDM0Q7Ozs7T0FJRztJQUNILFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSwwQ0FBeUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFdBQVcsQ0FBQyxFQUE2QjtRQUN2QyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUkseUJBQXlCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLFlBQXlDLENBQUM7SUFDeEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxJQUFjLGVBQWU7UUFDM0IsT0FBTywwQkFBZSxDQUFDLGFBQWEsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLHlCQUF5QixDQUFDLE9BQTRCO1FBQzlELElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2hFLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUVELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUUxQixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLGVBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ25ELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUVELDBEQUEwRDtZQUMxRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQztZQUVELDZEQUE2RDtZQUM3RCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMscUNBQXlCLENBQUMsRUFBRSxDQUFDO2dCQUN2RCxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUFDLE9BQWU7UUFDckIsSUFBSSxDQUFDLHlCQUF5QixDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDakQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsa0JBQWtCLENBQUMsVUFBa0IsdUNBQTJCO1FBQzlELElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ2xELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixtQkFBbUIsQ0FBQyxXQUF1QztRQUN6RCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFDRCxJQUFBLGdCQUFNLEVBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSx5Q0FBeUMsQ0FBQyxDQUFDO1FBQ3hFLElBQUEsZ0JBQU0sRUFBQyxXQUFXLENBQUMsT0FBTyxFQUFFLHNCQUFzQixDQUFDLENBQUM7UUFFcEQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1IsS0FBSyxDQUFDLG1CQUFtQjtRQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzdDLDJDQUEyQztRQUMzQyxJQUFJLENBQUMseUJBQXlCLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzlFLE1BQU0sSUFBSSxDQUFDLHlCQUF5QixDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxxQkFBcUI7UUFDM0IsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQUM7UUFDcEMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQixNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4RCxNQUFNLE1BQU0sR0FBRyx3QkFBVyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkQsTUFBTSxJQUFJLEdBQUcsd0JBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRWxELE9BQU8sSUFBQSw4QkFBWSxFQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0NBQ0Y7QUFuSUQsc0RBbUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25DbGF1c2UgfSBmcm9tICdAdmVjaGFpbi9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgRXRoZXJldW1BYmkgZnJvbSAnZXRoZXJldW1qcy1hYmknO1xuaW1wb3J0IHsgYWRkSGV4UHJlZml4IH0gZnJvbSAnZXRoZXJldW1qcy11dGlsJztcblxuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgRXhpdERlbGVnYXRpb25UcmFuc2FjdGlvbiB9IGZyb20gJy4uL3RyYW5zYWN0aW9uL2V4aXREZWxlZ2F0aW9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEVYSVRfREVMRUdBVElPTl9NRVRIT0RfSUQsIFNUQVJHQVRFX0RFTEVHQVRJT05fQUREUkVTUyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBFeGl0RGVsZWdhdGlvbkJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBFeGl0RGVsZWdhdGlvbkJ1aWxkZXIgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhZG9ubHk8Q29pbkNvbmZpZz59IF9jb2luQ29uZmlnIC0gVGhlIGNvaW4gY29uZmlndXJhdGlvbiBvYmplY3RcbiAgICovXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBFeGl0RGVsZWdhdGlvblRyYW5zYWN0aW9uKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgYnVpbGRlciB3aXRoIGFuIGV4aXN0aW5nIEV4aXREZWxlZ2F0aW9uVHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7RXhpdERlbGVnYXRpb25UcmFuc2FjdGlvbn0gdHggLSBUaGUgdHJhbnNhY3Rpb24gdG8gaW5pdGlhbGl6ZSB0aGUgYnVpbGRlciB3aXRoXG4gICAqL1xuICBpbml0QnVpbGRlcih0eDogRXhpdERlbGVnYXRpb25UcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gdHg7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZXhpdCBkZWxlZ2F0aW9uIHRyYW5zYWN0aW9uIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7RXhpdERlbGVnYXRpb25UcmFuc2FjdGlvbn0gVGhlIGV4aXQgZGVsZWdhdGlvbiB0cmFuc2FjdGlvblxuICAgKi9cbiAgZ2V0IGV4aXREZWxlZ2F0aW9uVHJhbnNhY3Rpb24oKTogRXhpdERlbGVnYXRpb25UcmFuc2FjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYW5zYWN0aW9uIGFzIEV4aXREZWxlZ2F0aW9uVHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdHJhbnNhY3Rpb24gdHlwZSBmb3IgdW5zdGFraW5nLlxuICAgKlxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25UeXBlfSBUaGUgdHJhbnNhY3Rpb24gdHlwZVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdVbmxvY2s7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSB0cmFuc2FjdGlvbiBjbGF1c2VzIGZvciB1bnN0YWtpbmcuXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25DbGF1c2VbXX0gY2xhdXNlcyAtIFRoZSB0cmFuc2FjdGlvbiBjbGF1c2VzIHRvIHZhbGlkYXRlLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gLSBSZXR1cm5zIHRydWUgaWYgdGhlIGNsYXVzZXMgYXJlIHZhbGlkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgaXNWYWxpZFRyYW5zYWN0aW9uQ2xhdXNlcyhjbGF1c2VzOiBUcmFuc2FjdGlvbkNsYXVzZVtdKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghY2xhdXNlcyB8fCAhQXJyYXkuaXNBcnJheShjbGF1c2VzKSB8fCBjbGF1c2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNsYXVzZSA9IGNsYXVzZXNbMF07XG5cbiAgICAgIGlmICghY2xhdXNlLnRvIHx8ICF1dGlscy5pc1ZhbGlkQWRkcmVzcyhjbGF1c2UudG8pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gRm9yIHVuc3Rha2luZyB0cmFuc2FjdGlvbnMsIHZhbHVlIG11c3QgYmUgZXhhY3RseSAnMHgwJ1xuICAgICAgaWYgKGNsYXVzZS52YWx1ZSAhPT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIHRoZSBkYXRhIHN0YXJ0cyB3aXRoIHRoZSBleGl0RGVsZWdhdGlvbiBtZXRob2QgSURcbiAgICAgIGlmICghY2xhdXNlLmRhdGEuc3RhcnRzV2l0aChFWElUX0RFTEVHQVRJT05fTUVUSE9EX0lEKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdG9rZW4gSUQgZm9yIHRoaXMgdW5zdGFraW5nIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdG9rZW5JZCAtIFRoZSBJRCBvZiB0aGUgTkZUIHRva2VuIHRvIHVuc3Rha2VcbiAgICogQHJldHVybnMge0V4aXREZWxlZ2F0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICB0b2tlbklkKHRva2VuSWQ6IHN0cmluZyk6IHRoaXMge1xuICAgIHRoaXMuZXhpdERlbGVnYXRpb25UcmFuc2FjdGlvbi50b2tlbklkID0gdG9rZW5JZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkZWxlZ2F0aW9uIGNvbnRyYWN0IGFkZHJlc3MgZm9yIHRoaXMgdW5zdGFraW5nIHRyYW5zYWN0aW9uLlxuICAgKiBJZiBub3QgcHJvdmlkZWQsIHVzZXMgdGhlIGRlZmF1bHQgYWRkcmVzcyBmcm9tIGNvbnN0YW50cy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBUaGUgZGVsZWdhdGlvbiBjb250cmFjdCBhZGRyZXNzXG4gICAqIEByZXR1cm5zIHtFeGl0RGVsZWdhdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgZGVsZWdhdGlvbkNvbnRyYWN0KGFkZHJlc3M6IHN0cmluZyA9IFNUQVJHQVRFX0RFTEVHQVRJT05fQUREUkVTUyk6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVBZGRyZXNzKHsgYWRkcmVzcyB9KTtcbiAgICB0aGlzLmV4aXREZWxlZ2F0aW9uVHJhbnNhY3Rpb24uY29udHJhY3QgPSBhZGRyZXNzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24/OiBFeGl0RGVsZWdhdGlvblRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgaWYgKCF0cmFuc2FjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0cmFuc2FjdGlvbiBub3QgZGVmaW5lZCcpO1xuICAgIH1cbiAgICBhc3NlcnQodHJhbnNhY3Rpb24uY29udHJhY3QsICdEZWxlZ2F0aW9uIGNvbnRyYWN0IGFkZHJlc3MgaXMgcmVxdWlyZWQnKTtcbiAgICBhc3NlcnQodHJhbnNhY3Rpb24udG9rZW5JZCwgJ1Rva2VuIElEIGlzIHJlcXVpcmVkJyk7XG5cbiAgICB0aGlzLnZhbGlkYXRlQWRkcmVzcyh7IGFkZHJlc3M6IHRyYW5zYWN0aW9uLmNvbnRyYWN0IH0pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnR5cGUgPSB0aGlzLnRyYW5zYWN0aW9uVHlwZTtcbiAgICAvLyBTZXQgdGhlIHRyYW5zYWN0aW9uIGRhdGEgYmVmb3JlIGJ1aWxkaW5nXG4gICAgdGhpcy5leGl0RGVsZWdhdGlvblRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uRGF0YSA9IHRoaXMuZ2V0RXhpdERlbGVnYXRpb25EYXRhKCk7XG4gICAgYXdhaXQgdGhpcy5leGl0RGVsZWdhdGlvblRyYW5zYWN0aW9uLmJ1aWxkKCk7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSB0cmFuc2FjdGlvbiBkYXRhIGZvciBleGl0IGRlbGVnYXRpb24gYnkgZW5jb2RpbmcgdGhlIGV4aXREZWxlZ2F0aW9uIG1ldGhvZCBjYWxsLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZW5jb2RlZCB0cmFuc2FjdGlvbiBkYXRhIGFzIGEgaGV4IHN0cmluZ1xuICAgKi9cbiAgcHJpdmF0ZSBnZXRFeGl0RGVsZWdhdGlvbkRhdGEoKTogc3RyaW5nIHtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gJ2V4aXREZWxlZ2F0aW9uJztcbiAgICBjb25zdCB0eXBlcyA9IFsndWludDI1NiddO1xuICAgIGNvbnN0IHBhcmFtcyA9IFt0aGlzLmV4aXREZWxlZ2F0aW9uVHJhbnNhY3Rpb24udG9rZW5JZF07XG5cbiAgICBjb25zdCBtZXRob2QgPSBFdGhlcmV1bUFiaS5tZXRob2RJRChtZXRob2ROYW1lLCB0eXBlcyk7XG4gICAgY29uc3QgYXJncyA9IEV0aGVyZXVtQWJpLnJhd0VuY29kZSh0eXBlcywgcGFyYW1zKTtcblxuICAgIHJldHVybiBhZGRIZXhQcmVmaXgoQnVmZmVyLmNvbmNhdChbbWV0aG9kLCBhcmdzXSkudG9TdHJpbmcoJ2hleCcpKTtcbiAgfVxufVxuIl19
@@ -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"}
@@ -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,72 @@
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
+ import EthereumAbi from 'ethereumjs-abi';
8
+ export declare class StakingBuilder extends TransactionBuilder {
9
+ /**
10
+ * Creates a new StakingBuilder instance.
11
+ *
12
+ * @param {Readonly<CoinConfig>} _coinConfig - The coin configuration object
13
+ */
14
+ constructor(_coinConfig: Readonly<CoinConfig>);
15
+ /**
16
+ * Initializes the builder with an existing StakingTransaction.
17
+ *
18
+ * @param {StakingTransaction} tx - The transaction to initialize the builder with
19
+ */
20
+ initBuilder(tx: StakingTransaction): void;
21
+ /**
22
+ * Gets the staking transaction instance.
23
+ *
24
+ * @returns {StakingTransaction} The staking transaction
25
+ */
26
+ get stakingTransaction(): StakingTransaction;
27
+ /**
28
+ * Gets the transaction type for staking.
29
+ *
30
+ * @returns {TransactionType} The transaction type
31
+ */
32
+ protected get transactionType(): TransactionType;
33
+ /**
34
+ * Validates the transaction clauses for staking transaction.
35
+ * @param {TransactionClause[]} clauses - The transaction clauses to validate.
36
+ * @returns {boolean} - Returns true if the clauses are valid, false otherwise.
37
+ */
38
+ protected isValidTransactionClauses(clauses: TransactionClause[]): boolean;
39
+ /**
40
+ * Sets the staking contract address for this staking tx.
41
+ *
42
+ * @param {string} address - The staking contract address
43
+ * @returns {StakingBuilder} This transaction builder
44
+ */
45
+ stakingContractAddress(address: string): this;
46
+ /**
47
+ * Sets the amount to stake for this staking tx.
48
+ *
49
+ * @param {string} amount - The amount to stake in wei
50
+ * @returns {StakingBuilder} This transaction builder
51
+ */
52
+ amountToStake(amount: string): this;
53
+ /**
54
+ * Sets the staking contract ABI for this staking tx.
55
+ *
56
+ * @param {EthereumAbi} abi - The staking contract ABI
57
+ * @returns {StakingBuilder} This transaction builder
58
+ */
59
+ stakingContractABI(abi: EthereumAbi): this;
60
+ /**
61
+ * Sets the transaction data for this staking tx.
62
+ *
63
+ * @param {string} data - The transaction data
64
+ * @returns {StakingBuilder} This transaction builder
65
+ */
66
+ transactionData(data: string): this;
67
+ /** @inheritdoc */
68
+ validateTransaction(transaction?: StakingTransaction): void;
69
+ /** @inheritdoc */
70
+ protected buildImplementation(): Promise<Transaction>;
71
+ }
72
+ //# 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;AACvE,OAAO,WAAW,MAAM,gBAAgB,CAAC;AAGzC,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;;;;;OAKG;IACH,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM7C;;;;;OAKG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAKnC;;;;;OAKG;IACH,kBAAkB,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAK1C;;;;;OAKG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKnC,kBAAkB;IAClB,mBAAmB,CAAC,WAAW,CAAC,EAAE,kBAAkB,GAAG,IAAI;IAU3D,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;CAK5D"}