@bitgo-beta/sdk-coin-vet 1.0.1-beta.50 → 1.0.1-beta.501

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 +2 -0
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +3 -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 +28 -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 +41 -0
  20. package/dist/src/lib/transaction/claimRewards.d.ts.map +1 -0
  21. package/dist/src/lib/transaction/claimRewards.js +210 -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 +97 -57
  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 +57 -0
  53. package/dist/src/lib/transactionBuilder/claimRewardsBuilder.d.ts.map +1 -0
  54. package/dist/src/lib/transactionBuilder/claimRewardsBuilder.js +142 -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 +24 -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 +9 -1
  90. package/dist/src/vet.d.ts +80 -2
  91. package/dist/src/vet.d.ts.map +1 -1
  92. package/dist/src/vet.js +478 -8
  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 +19 -0
  97. package/dist/src/vetToken.d.ts.map +1 -0
  98. package/dist/src/vetToken.js +52 -0
  99. package/dist/test/resources/vet.d.ts +72 -0
  100. package/dist/test/resources/vet.d.ts.map +1 -0
  101. package/dist/test/resources/vet.js +127 -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 +246 -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 +185 -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 +214 -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 +251 -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,246 @@
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
+ const statics_1 = require("@bitgo-beta/statics");
7
+ const lib_1 = require("../../src/lib");
8
+ const should_1 = __importDefault(require("should"));
9
+ const constants_1 = require("../../src/lib/constants");
10
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
11
+ describe('VET Claim Rewards Transaction', function () {
12
+ const factory = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tvet'));
13
+ const tokenId = '12345';
14
+ // Helper function to create a basic transaction builder with common properties
15
+ const createBasicTxBuilder = () => {
16
+ const txBuilder = factory.getClaimRewardsBuilder();
17
+ txBuilder.sender('0x9378c12BD7502A11F770a5C1F223c959B2805dA9');
18
+ txBuilder.chainTag(0x27); // Testnet chain tag
19
+ txBuilder.blockRef('0x0000000000000000');
20
+ txBuilder.expiration(64);
21
+ txBuilder.gas(100000);
22
+ txBuilder.gasPriceCoef(0);
23
+ txBuilder.nonce('12345');
24
+ return txBuilder;
25
+ };
26
+ it('should build a claim rewards transaction with both reward types', async function () {
27
+ const txBuilder = factory.getClaimRewardsBuilder();
28
+ txBuilder.claimRewardsData({
29
+ tokenId,
30
+ claimBaseRewards: true,
31
+ claimStakingRewards: true,
32
+ });
33
+ txBuilder.sender('0x9378c12BD7502A11F770a5C1F223c959B2805dA9');
34
+ txBuilder.chainTag(0x27); // Testnet chain tag
35
+ txBuilder.blockRef('0x0000000000000000');
36
+ txBuilder.expiration(64);
37
+ txBuilder.gas(100000);
38
+ txBuilder.gasPriceCoef(0);
39
+ txBuilder.nonce('12345');
40
+ const tx = await txBuilder.build();
41
+ should_1.default.exist(tx);
42
+ tx.should.be.instanceof(lib_1.Transaction);
43
+ tx.should.be.instanceof(lib_1.ClaimRewardsTransaction);
44
+ const claimTx = tx;
45
+ claimTx.claimRewardsData.tokenId.should.equal(tokenId);
46
+ claimTx.claimRewardsData.claimBaseRewards?.should.be.true();
47
+ claimTx.claimRewardsData.claimStakingRewards?.should.be.true();
48
+ // Verify clauses - should have 2 clauses for both reward types
49
+ claimTx.clauses.length.should.equal(2);
50
+ // Find base rewards clause (claimVetGeneratedVtho)
51
+ const baseRewardsClause = claimTx.clauses.find((clause) => clause.data.startsWith(constants_1.CLAIM_BASE_REWARDS_METHOD_ID));
52
+ should_1.default.exist(baseRewardsClause);
53
+ baseRewardsClause?.to?.should.equal(constants_1.STARGATE_CONTRACT_ADDRESS_TESTNET);
54
+ baseRewardsClause?.value.should.equal('0x0');
55
+ // Find staking rewards clause (claimRewards)
56
+ const stakingRewardsClause = claimTx.clauses.find((clause) => clause.data.startsWith(constants_1.CLAIM_STAKING_REWARDS_METHOD_ID));
57
+ should_1.default.exist(stakingRewardsClause);
58
+ stakingRewardsClause?.to?.should.equal(constants_1.STARGATE_CONTRACT_ADDRESS_TESTNET);
59
+ stakingRewardsClause?.value.should.equal('0x0');
60
+ // Verify recipients should be empty for claim rewards
61
+ claimTx.recipients.length.should.equal(0);
62
+ });
63
+ it('should build a claim rewards transaction with only base rewards', async function () {
64
+ const txBuilder = createBasicTxBuilder();
65
+ txBuilder.claimRewardsData({
66
+ tokenId,
67
+ claimBaseRewards: true,
68
+ claimStakingRewards: false,
69
+ });
70
+ const tx = await txBuilder.build();
71
+ const claimTx = tx;
72
+ // Should have only 1 clause for base rewards
73
+ claimTx.clauses.length.should.equal(1);
74
+ claimTx.clauses[0].data.should.startWith(constants_1.CLAIM_BASE_REWARDS_METHOD_ID);
75
+ claimTx.clauses[0].to?.should.equal(constants_1.STARGATE_CONTRACT_ADDRESS_TESTNET);
76
+ claimTx.clauses[0].value.should.equal('0x0');
77
+ claimTx.claimRewardsData.claimBaseRewards?.should.be.true();
78
+ claimTx.claimRewardsData.claimStakingRewards?.should.be.false();
79
+ });
80
+ it('should build a claim rewards transaction with only staking rewards', async function () {
81
+ const txBuilder = createBasicTxBuilder();
82
+ txBuilder.claimRewardsData({
83
+ tokenId,
84
+ claimBaseRewards: false,
85
+ claimStakingRewards: true,
86
+ });
87
+ const tx = await txBuilder.build();
88
+ const claimTx = tx;
89
+ // Should have only 1 clause for staking rewards
90
+ claimTx.clauses.length.should.equal(1);
91
+ claimTx.clauses[0].data.should.startWith(constants_1.CLAIM_STAKING_REWARDS_METHOD_ID);
92
+ claimTx.clauses[0].to?.should.equal(constants_1.STARGATE_CONTRACT_ADDRESS_TESTNET);
93
+ claimTx.clauses[0].value.should.equal('0x0');
94
+ claimTx.claimRewardsData.claimBaseRewards?.should.be.false();
95
+ claimTx.claimRewardsData.claimStakingRewards?.should.be.true();
96
+ });
97
+ describe('Failure scenarios', function () {
98
+ it('should throw error when claim rewards data is missing', async function () {
99
+ const txBuilder = createBasicTxBuilder();
100
+ // Not setting claimRewardsData
101
+ await txBuilder.build().should.be.rejectedWith('Claim rewards data is required');
102
+ });
103
+ it('should throw error when token ID is missing', async function () {
104
+ const txBuilder = createBasicTxBuilder();
105
+ (0, should_1.default)(() => {
106
+ txBuilder.claimRewardsData({});
107
+ }).throw('Token ID is required');
108
+ });
109
+ it('should throw error when token ID is invalid', async function () {
110
+ const txBuilder = createBasicTxBuilder();
111
+ (0, should_1.default)(() => {
112
+ txBuilder.claimRewardsData({
113
+ tokenId: 'invalid-tokenid',
114
+ });
115
+ }).throw('Token ID must be a valid number string');
116
+ });
117
+ it('should throw error when both reward flags are false', async function () {
118
+ const txBuilder = createBasicTxBuilder();
119
+ (0, should_1.default)(() => {
120
+ txBuilder.claimRewardsData({
121
+ tokenId,
122
+ claimBaseRewards: false,
123
+ claimStakingRewards: false,
124
+ });
125
+ }).throw('At least one type of rewards (base or staking) must be claimed');
126
+ });
127
+ it('should throw error when claimBaseRewards is not boolean', async function () {
128
+ const txBuilder = createBasicTxBuilder();
129
+ (0, should_1.default)(() => {
130
+ txBuilder.claimRewardsData({
131
+ tokenId,
132
+ claimBaseRewards: 'true',
133
+ });
134
+ }).throw('claimBaseRewards must be a boolean');
135
+ });
136
+ it('should throw error when claimStakingRewards is not boolean', async function () {
137
+ const txBuilder = createBasicTxBuilder();
138
+ (0, should_1.default)(() => {
139
+ txBuilder.claimRewardsData({
140
+ tokenId,
141
+ claimStakingRewards: 1,
142
+ });
143
+ }).throw('claimStakingRewards must be a boolean');
144
+ });
145
+ it('should default to claiming both rewards when flags are undefined', async function () {
146
+ const txBuilder = createBasicTxBuilder();
147
+ txBuilder.claimRewardsData({
148
+ tokenId,
149
+ });
150
+ const tx = await txBuilder.build();
151
+ const claimTx = tx;
152
+ // Should have 2 clauses by default
153
+ claimTx.clauses.length.should.equal(2);
154
+ const baseRewardsClause = claimTx.clauses.find((clause) => clause.data.startsWith(constants_1.CLAIM_BASE_REWARDS_METHOD_ID));
155
+ const stakingRewardsClause = claimTx.clauses.find((clause) => clause.data.startsWith(constants_1.CLAIM_STAKING_REWARDS_METHOD_ID));
156
+ should_1.default.exist(baseRewardsClause);
157
+ should_1.default.exist(stakingRewardsClause);
158
+ baseRewardsClause?.to?.should.equal(constants_1.STARGATE_CONTRACT_ADDRESS_TESTNET);
159
+ stakingRewardsClause?.to?.should.equal(constants_1.STARGATE_CONTRACT_ADDRESS_TESTNET);
160
+ });
161
+ it('should build transaction with undefined sender but include it in inputs', async function () {
162
+ const txBuilder = factory.getClaimRewardsBuilder();
163
+ txBuilder.claimRewardsData({
164
+ tokenId,
165
+ });
166
+ txBuilder.chainTag(0x27);
167
+ txBuilder.blockRef('0x0000000000000000');
168
+ txBuilder.expiration(64);
169
+ txBuilder.gas(100000);
170
+ txBuilder.gasPriceCoef(0);
171
+ txBuilder.nonce('12345');
172
+ // Not setting sender
173
+ const tx = await txBuilder.build();
174
+ tx.should.be.instanceof(lib_1.ClaimRewardsTransaction);
175
+ const claimTx = tx;
176
+ // Verify the transaction has inputs but with undefined address
177
+ claimTx.inputs.length.should.equal(1);
178
+ should_1.default.not.exist(claimTx.inputs[0].address);
179
+ // Verify the transaction has no outputs (claim rewards doesn't transfer value)
180
+ claimTx.outputs.length.should.equal(0);
181
+ });
182
+ it('should use network default chainTag when not explicitly set', async function () {
183
+ const txBuilder = factory.getClaimRewardsBuilder();
184
+ txBuilder.claimRewardsData({
185
+ tokenId,
186
+ });
187
+ // Not setting chainTag
188
+ txBuilder.blockRef('0x0000000000000000');
189
+ txBuilder.expiration(64);
190
+ txBuilder.gas(100000);
191
+ txBuilder.gasPriceCoef(0);
192
+ txBuilder.nonce('12345');
193
+ txBuilder.sender('0x9378c12BD7502A11F770a5C1F223c959B2805dA9');
194
+ const tx = await txBuilder.build();
195
+ tx.should.be.instanceof(lib_1.ClaimRewardsTransaction);
196
+ const claimTx = tx;
197
+ // Verify the chainTag is set to the testnet default (39)
198
+ claimTx.chainTag.should.equal(39);
199
+ });
200
+ it('should serialize and explain transaction correctly', async function () {
201
+ const txBuilder = createBasicTxBuilder();
202
+ txBuilder.claimRewardsData({
203
+ tokenId,
204
+ });
205
+ const tx = await txBuilder.build();
206
+ const claimTx = tx;
207
+ // Test serialization
208
+ const serialized = claimTx.toBroadcastFormat();
209
+ serialized.should.be.String();
210
+ serialized.should.startWith('0x');
211
+ // Test explanation
212
+ const explanation = claimTx.explainTransaction();
213
+ explanation.type?.should.equal(sdk_core_1.TransactionType.StakingClaim);
214
+ should_1.default.exist(explanation.fee);
215
+ explanation.outputAmount.should.equal('0');
216
+ explanation.changeAmount.should.equal('0');
217
+ // Test toJson
218
+ const json = claimTx.toJson();
219
+ should_1.default.exist(json.claimRewardsData);
220
+ json.claimRewardsData?.tokenId.should.equal(tokenId);
221
+ });
222
+ it('should correctly handle custom contract addresses when building transactions', async function () {
223
+ const customNftAddress = '0x1234567890123456789012345678901234567890';
224
+ const customDelegationAddress = '0x0987654321098765432109876543210987654321';
225
+ const txBuilder = createBasicTxBuilder();
226
+ txBuilder.claimRewardsData({
227
+ tokenId,
228
+ delegationContractAddress: customDelegationAddress,
229
+ stargateNftAddress: customNftAddress,
230
+ });
231
+ const tx = await txBuilder.build();
232
+ const claimTx = tx;
233
+ // Verify that custom addresses are stored in claimRewardsData when they differ from defaults
234
+ should_1.default.exist(claimTx.claimRewardsData.delegationContractAddress);
235
+ claimTx.claimRewardsData.delegationContractAddress?.should.equal(customDelegationAddress);
236
+ should_1.default.exist(claimTx.claimRewardsData.stargateNftAddress);
237
+ claimTx.claimRewardsData.stargateNftAddress?.should.equal(customNftAddress);
238
+ // Verify clauses still use the default addresses (as builders use defaults)
239
+ const baseRewardsClause = claimTx.clauses.find((clause) => clause.data.startsWith(constants_1.CLAIM_BASE_REWARDS_METHOD_ID));
240
+ const stakingRewardsClause = claimTx.clauses.find((clause) => clause.data.startsWith(constants_1.CLAIM_STAKING_REWARDS_METHOD_ID));
241
+ baseRewardsClause?.to?.should.equal(constants_1.STARGATE_CONTRACT_ADDRESS_TESTNET);
242
+ stakingRewardsClause?.to?.should.equal(constants_1.STARGATE_CONTRACT_ADDRESS_TESTNET);
243
+ });
244
+ });
245
+ });
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhaW1SZXdhcmRzQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Rlc3QvdHJhbnNhY3Rpb25CdWlsZGVyL2NsYWltUmV3YXJkc0J1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxpREFBNEM7QUFDNUMsdUNBQWdHO0FBRWhHLG9EQUE0QjtBQUM1Qix1REFJaUM7QUFDakMsbURBQXVEO0FBRXZELFFBQVEsQ0FBQywrQkFBK0IsRUFBRTtJQUN4QyxNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNqRSxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFFeEIsK0VBQStFO0lBQy9FLE1BQU0sb0JBQW9CLEdBQUcsR0FBRyxFQUFFO1FBQ2hDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ25ELFNBQVMsQ0FBQyxNQUFNLENBQUMsNENBQTRDLENBQUMsQ0FBQztRQUMvRCxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsb0JBQW9CO1FBQzlDLFNBQVMsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUN6QyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEIsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQixTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pCLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUMsQ0FBQztJQUVGLEVBQUUsQ0FBQyxpRUFBaUUsRUFBRSxLQUFLO1FBQ3pFLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ25ELFNBQVMsQ0FBQyxnQkFBZ0IsQ0FB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NkIsQ0FBQztZQUU5Qyw2RkFBNkY7WUFDN0YsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLHlCQUF5QixDQUFDLENBQUM7WUFDakUsT0FBTyxDQUFDLGdCQUFnQixDQUFDLHlCQUF5QixFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUUxRixnQkFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUMxRCxPQUFPLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBRTVFLDRFQUE0RTtZQUM1RSxNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyx3Q0FBNEIsQ0FBQyxDQUFDLENBQUM7WUFDakgsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQzNELE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLDJDQUErQixDQUFDLENBQ3hELENBQUM7WUFFRixpQkFBaUIsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyw2Q0FBaUMsQ0FBQyxDQUFDO1lBQ3ZFLG9CQUFvQixFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLDZDQUFpQyxDQUFDLENBQUM7UUFDNUUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksIFRyYW5zYWN0aW9uLCBDbGFpbVJld2FyZHNUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3NyYy9saWInO1xuaW1wb3J0IHsgQ2xhaW1SZXdhcmRzRGF0YSB9IGZyb20gJy4uLy4uL3NyYy9saWIvdHlwZXMnO1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHtcbiAgQ0xBSU1fQkFTRV9SRVdBUkRTX01FVEhPRF9JRCxcbiAgQ0xBSU1fU1RBS0lOR19SRVdBUkRTX01FVEhPRF9JRCxcbiAgU1RBUkdBVEVfQ09OVFJBQ1RfQUREUkVTU19URVNUTkVULFxufSBmcm9tICcuLi8uLi9zcmMvbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmRlc2NyaWJlKCdWRVQgQ2xhaW0gUmV3YXJkcyBUcmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndHZldCcpKTtcbiAgY29uc3QgdG9rZW5JZCA9ICcxMjM0NSc7XG5cbiAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIGJhc2ljIHRyYW5zYWN0aW9uIGJ1aWxkZXIgd2l0aCBjb21tb24gcHJvcGVydGllc1xuICBjb25zdCBjcmVhdGVCYXNpY1R4QnVpbGRlciA9ICgpID0+IHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldENsYWltUmV3YXJkc0J1aWxkZXIoKTtcbiAgICB0eEJ1aWxkZXIuc2VuZGVyKCcweDkzNzhjMTJCRDc1MDJBMTFGNzcwYTVDMUYyMjNjOTU5QjI4MDVkQTknKTtcbiAgICB0eEJ1aWxkZXIuY2hhaW5UYWcoMHgyNyk7IC8vIFRlc3RuZXQgY2hhaW4gdGFnXG4gICAgdHhCdWlsZGVyLmJsb2NrUmVmKCcweDAwMDAwMDAwMDAwMDAwMDAnKTtcbiAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbig2NCk7XG4gICAgdHhCdWlsZGVyLmdhcygxMDAwMDApO1xuICAgIHR4QnVpbGRlci5nYXNQcmljZUNvZWYoMCk7XG4gICAgdHhCdWlsZGVyLm5vbmNlKCcxMjM0NScpO1xuICAgIHJldHVybiB0eEJ1aWxkZXI7XG4gIH07XG5cbiAgaXQoJ3Nob3VsZCBidWlsZCBhIGNsYWltIHJld2FyZHMgdHJhbnNhY3Rpb24gd2l0aCBib3RoIHJld2FyZCB0eXBlcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldENsYWltUmV3YXJkc0J1aWxkZXIoKTtcbiAgICB0eEJ1aWxkZXIuY2xhaW1SZXdhcmRzRGF0YSh7XG4gICAgICB0b2tlbklkLFxuICAgICAgY2xhaW1CYXNlUmV3YXJkczogdHJ1ZSxcbiAgICAgIGNsYWltU3Rha2luZ1Jld2FyZHM6IHRydWUsXG4gICAgfSk7XG4gICAgdHhCdWlsZGVyLnNlbmRlcignMHg5Mzc4YzEyQkQ3NTAyQTExRjc3MGE1QzFGMjIzYzk1OUIyODA1ZEE5Jyk7XG4gICAgdHhCdWlsZGVyLmNoYWluVGFnKDB4MjcpOyAvLyBUZXN0bmV0IGNoYWluIHRhZ1xuICAgIHR4QnVpbGRlci5ibG9ja1JlZignMHgwMDAwMDAwMDAwMDAwMDAwJyk7XG4gICAgdHhCdWlsZGVyLmV4cGlyYXRpb24oNjQpO1xuICAgIHR4QnVpbGRlci5nYXMoMTAwMDAwKTtcbiAgICB0eEJ1aWxkZXIuZ2FzUHJpY2VDb2VmKDApO1xuICAgIHR4QnVpbGRlci5ub25jZSgnMTIzNDUnKTtcblxuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgc2hvdWxkLmV4aXN0KHR4KTtcbiAgICB0eC5zaG91bGQuYmUuaW5zdGFuY2VvZihUcmFuc2FjdGlvbik7XG4gICAgdHguc2hvdWxkLmJlLmluc3RhbmNlb2YoQ2xhaW1SZXdhcmRzVHJhbnNhY3Rpb24pO1xuXG4gICAgY29uc3QgY2xhaW1UeCA9IHR4IGFzIENsYWltUmV3YXJkc1RyYW5zYWN0aW9uO1xuICAgIGNsYWltVHguY2xhaW1SZXdhcmRzRGF0YS50b2tlbklkLnNob3VsZC5lcXVhbCh0b2tlbklkKTtcbiAgICBjbGFpbVR4LmNsYWltUmV3YXJkc0RhdGEuY2xhaW1CYXNlUmV3YXJkcz8uc2hvdWxkLmJlLnRydWUoKTtcbiAgICBjbGFpbVR4LmNsYWltUmV3YXJkc0RhdGEuY2xhaW1TdGFraW5nUmV3YXJkcz8uc2hvdWxkLmJlLnRydWUoKTtcblxuICAgIC8vIFZlcmlmeSBjbGF1c2VzIC0gc2hvdWxkIGhhdmUgMiBjbGF1c2VzIGZvciBib3RoIHJld2FyZCB0eXBlc1xuICAgIGNsYWltVHguY2xhdXNlcy5sZW5ndGguc2hvdWxkLmVxdWFsKDIpO1xuXG4gICAgLy8gRmluZCBiYXNlIHJld2FyZHMgY2xhdXNlIChjbGFpbVZldEdlbmVyYXRlZFZ0aG8pXG4gICAgY29uc3QgYmFzZVJld2FyZHNDbGF1c2UgPSBjbGFpbVR4LmNsYXVzZXMuZmluZCgoY2xhdXNlKSA9PiBjbGF1c2UuZGF0YS5zdGFydHNXaXRoKENMQUlNX0JBU0VfUkVXQVJEU19NRVRIT0RfSUQpKTtcbiAgICBzaG91bGQuZXhpc3QoYmFzZVJld2FyZHNDbGF1c2UpO1xuICAgIGJhc2VSZXdhcmRzQ2xhdXNlPy50bz8uc2hvdWxkLmVxdWFsKFNUQVJHQVRFX0NPTlRSQUNUX0FERFJFU1NfVEVTVE5FVCk7XG4gICAgYmFzZVJld2FyZHNDbGF1c2U/LnZhbHVlLnNob3VsZC5lcXVhbCgnMHgwJyk7XG5cbiAgICAvLyBGaW5kIHN0YWtpbmcgcmV3YXJkcyBjbGF1c2UgKGNsYWltUmV3YXJkcylcbiAgICBjb25zdCBzdGFraW5nUmV3YXJkc0NsYXVzZSA9IGNsYWltVHguY2xhdXNlcy5maW5kKChjbGF1c2UpID0+XG4gICAgICBjbGF1c2UuZGF0YS5zdGFydHNXaXRoKENMQUlNX1NUQUtJTkdfUkVXQVJEU19NRVRIT0RfSUQpXG4gICAgKTtcbiAgICBzaG91bGQuZXhpc3Qoc3Rha2luZ1Jld2FyZHNDbGF1c2UpO1xuICAgIHN0YWtpbmdSZXdhcmRzQ2xhdXNlPy50bz8uc2hvdWxkLmVxdWFsKFNUQVJHQVRFX0NPTlRSQUNUX0FERFJFU1NfVEVTVE5FVCk7XG4gICAgc3Rha2luZ1Jld2FyZHNDbGF1c2U/LnZhbHVlLnNob3VsZC5lcXVhbCgnMHgwJyk7XG5cbiAgICAvLyBWZXJpZnkgcmVjaXBpZW50cyBzaG91bGQgYmUgZW1wdHkgZm9yIGNsYWltIHJld2FyZHNcbiAgICBjbGFpbVR4LnJlY2lwaWVudHMubGVuZ3RoLnNob3VsZC5lcXVhbCgwKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBidWlsZCBhIGNsYWltIHJld2FyZHMgdHJhbnNhY3Rpb24gd2l0aCBvbmx5IGJhc2UgcmV3YXJkcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBjcmVhdGVCYXNpY1R4QnVpbGRlcigpO1xuICAgIHR4QnVpbGRlci5jbGFpbVJld2FyZHNEYXRhKHtcbiAgICAgIHRva2VuSWQsXG4gICAgICBjbGFpbUJhc2VSZXdhcmRzOiB0cnVlLFxuICAgICAgY2xhaW1TdGFraW5nUmV3YXJkczogZmFsc2UsXG4gICAgfSk7XG5cbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIGNvbnN0IGNsYWltVHggPSB0eCBhcyBDbGFpbVJld2FyZHNUcmFuc2FjdGlvbjtcblxuICAgIC8vIFNob3VsZCBoYXZlIG9ubHkgMSBjbGF1c2UgZm9yIGJhc2UgcmV3YXJkc1xuICAgIGNsYWltVHguY2xhdXNlcy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgIGNsYWltVHguY2xhdXNlc1swXS5kYXRhLnNob3VsZC5zdGFydFdpdGgoQ0xBSU1fQkFTRV9SRVdBUkRTX01FVEhPRF9JRCk7XG4gICAgY2xhaW1UeC5jbGF1c2VzWzBdLnRvPy5zaG91bGQuZXF1YWwoU1RBUkdBVEVfQ09OVFJBQ1RfQUREUkVTU19URVNUTkVUKTtcbiAgICBjbGFpbVR4LmNsYXVzZXNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKCcweDAnKTtcblxuICAgIGNsYWltVHguY2xhaW1SZXdhcmRzRGF0YS5jbGFpbUJhc2VSZXdhcmRzPy5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIGNsYWltVHguY2xhaW1SZXdhcmRzRGF0YS5jbGFpbVN0YWtpbmdSZXdhcmRzPy5zaG91bGQuYmUuZmFsc2UoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBidWlsZCBhIGNsYWltIHJld2FyZHMgdHJhbnNhY3Rpb24gd2l0aCBvbmx5IHN0YWtpbmcgcmV3YXJkcycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBjcmVhdGVCYXNpY1R4QnVpbGRlcigpO1xuICAgIHR4QnVpbGRlci5jbGFpbVJld2FyZHNEYXRhKHtcbiAgICAgIHRva2VuSWQsXG4gICAgICBjbGFpbUJhc2VSZXdhcmRzOiBmYWxzZSxcbiAgICAgIGNsYWltU3Rha2luZ1Jld2FyZHM6IHRydWUsXG4gICAgfSk7XG5cbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIGNvbnN0IGNsYWltVHggPSB0eCBhcyBDbGFpbVJld2FyZHNUcmFuc2FjdGlvbjtcblxuICAgIC8vIFNob3VsZCBoYXZlIG9ubHkgMSBjbGF1c2UgZm9yIHN0YWtpbmcgcmV3YXJkc1xuICAgIGNsYWltVHguY2xhdXNlcy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgIGNsYWltVHguY2xhdXNlc1swXS5kYXRhLnNob3VsZC5zdGFydFdpdGgoQ0xBSU1fU1RBS0lOR19SRVdBUkRTX01FVEhPRF9JRCk7XG4gICAgY2xhaW1UeC5jbGF1c2VzWzBdLnRvPy5zaG91bGQuZXF1YWwoU1RBUkdBVEVfQ09OVFJBQ1RfQUREUkVTU19URVNUTkVUKTtcbiAgICBjbGFpbVR4LmNsYXVzZXNbMF0udmFsdWUuc2hvdWxkLmVxdWFsKCcweDAnKTtcblxuICAgIGNsYWltVHguY2xhaW1SZXdhcmRzRGF0YS5jbGFpbUJhc2VSZXdhcmRzPy5zaG91bGQuYmUuZmFsc2UoKTtcbiAgICBjbGFpbVR4LmNsYWltUmV3YXJkc0RhdGEuY2xhaW1TdGFraW5nUmV3YXJkcz8uc2hvdWxkLmJlLnRydWUoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0ZhaWx1cmUgc2NlbmFyaW9zJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3Igd2hlbiBjbGFpbSByZXdhcmRzIGRhdGEgaXMgbWlzc2luZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNyZWF0ZUJhc2ljVHhCdWlsZGVyKCk7XG4gICAgICAvLyBOb3Qgc2V0dGluZyBjbGFpbVJld2FyZHNEYXRhXG5cbiAgICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0NsYWltIHJld2FyZHMgZGF0YSBpcyByZXF1aXJlZCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciB3aGVuIHRva2VuIElEIGlzIG1pc3NpbmcnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjcmVhdGVCYXNpY1R4QnVpbGRlcigpO1xuXG4gICAgICBzaG91bGQoKCkgPT4ge1xuICAgICAgICB0eEJ1aWxkZXIuY2xhaW1SZXdhcmRzRGF0YSh7fSBhcyBDbGFpbVJld2FyZHNEYXRhKTtcbiAgICAgIH0pLnRocm93KCdUb2tlbiBJRCBpcyByZXF1aXJlZCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciB3aGVuIHRva2VuIElEIGlzIGludmFsaWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjcmVhdGVCYXNpY1R4QnVpbGRlcigpO1xuXG4gICAgICBzaG91bGQoKCkgPT4ge1xuICAgICAgICB0eEJ1aWxkZXIuY2xhaW1SZXdhcmRzRGF0YSh7XG4gICAgICAgICAgdG9rZW5JZDogJ2ludmFsaWQtdG9rZW5pZCcsXG4gICAgICAgIH0pO1xuICAgICAgfSkudGhyb3coJ1Rva2VuIElEIG11c3QgYmUgYSB2YWxpZCBudW1iZXIgc3RyaW5nJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIHdoZW4gYm90aCByZXdhcmQgZmxhZ3MgYXJlIGZhbHNlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY3JlYXRlQmFzaWNUeEJ1aWxkZXIoKTtcblxuICAgICAgc2hvdWxkKCgpID0+IHtcbiAgICAgICAgdHhCdWlsZGVyLmNsYWltUmV3YXJkc0RhdGEoe1xuICAgICAgICAgIHRva2VuSWQsXG4gICAgICAgICAgY2xhaW1CYXNlUmV3YXJkczogZmFsc2UsXG4gICAgICAgICAgY2xhaW1TdGFraW5nUmV3YXJkczogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgfSkudGhyb3coJ0F0IGxlYXN0IG9uZSB0eXBlIG9mIHJld2FyZHMgKGJhc2Ugb3Igc3Rha2luZykgbXVzdCBiZSBjbGFpbWVkJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGVycm9yIHdoZW4gY2xhaW1CYXNlUmV3YXJkcyBpcyBub3QgYm9vbGVhbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNyZWF0ZUJhc2ljVHhCdWlsZGVyKCk7XG5cbiAgICAgIHNob3VsZCgoKSA9PiB7XG4gICAgICAgIHR4QnVpbGRlci5jbGFpbVJld2FyZHNEYXRhKHtcbiAgICAgICAgICB0b2tlbklkLFxuICAgICAgICAgIGNsYWltQmFzZVJld2FyZHM6ICd0cnVlJyBhcyB1bmtub3duIGFzIGJvb2xlYW4sXG4gICAgICAgIH0pO1xuICAgICAgfSkudGhyb3coJ2NsYWltQmFzZVJld2FyZHMgbXVzdCBiZSBhIGJvb2xlYW4nKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgZXJyb3Igd2hlbiBjbGFpbVN0YWtpbmdSZXdhcmRzIGlzIG5vdCBib29sZWFuJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY3JlYXRlQmFzaWNUeEJ1aWxkZXIoKTtcblxuICAgICAgc2hvdWxkKCgpID0+IHtcbiAgICAgICAgdHhCdWlsZGVyLmNsYWltUmV3YXJkc0RhdGEoe1xuICAgICAgICAgIHRva2VuSWQsXG4gICAgICAgICAgY2xhaW1TdGFraW5nUmV3YXJkczogMSBhcyB1bmtub3duIGFzIGJvb2xlYW4sXG4gICAgICAgIH0pO1xuICAgICAgfSkudGhyb3coJ2NsYWltU3Rha2luZ1Jld2FyZHMgbXVzdCBiZSBhIGJvb2xlYW4nKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZGVmYXVsdCB0byBjbGFpbWluZyBib3RoIHJld2FyZHMgd2hlbiBmbGFncyBhcmUgdW5kZWZpbmVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY3JlYXRlQmFzaWNUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5jbGFpbVJld2FyZHNEYXRhKHtcbiAgICAgICAgdG9rZW5JZCxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgY2xhaW1UeCA9IHR4IGFzIENsYWltUmV3YXJkc1RyYW5zYWN0aW9uO1xuXG4gICAgICAvLyBTaG91bGQgaGF2ZSAyIGNsYXVzZXMgYnkgZGVmYXVsdFxuICAgICAgY2xhaW1UeC5jbGF1c2VzLmxlbmd0aC5zaG91bGQuZXF1YWwoMik7XG5cbiAgICAgIGNvbnN0IGJhc2VSZXdhcmRzQ2xhdXNlID0gY2xhaW1UeC5jbGF1c2VzLmZpbmQoKGNsYXVzZSkgPT4gY2xhdXNlLmRhdGEuc3RhcnRzV2l0aChDTEFJTV9CQVNFX1JFV0FSRFNfTUVUSE9EX0lEKSk7XG4gICAgICBjb25zdCBzdGFraW5nUmV3YXJkc0NsYXVzZSA9IGNsYWltVHguY2xhdXNlcy5maW5kKChjbGF1c2UpID0+XG4gICAgICAgIGNsYXVzZS5kYXRhLnN0YXJ0c1dpdGgoQ0xBSU1fU1RBS0lOR19SRVdBUkRTX01FVEhPRF9JRClcbiAgICAgICk7XG5cbiAgICAgIHNob3VsZC5leGlzdChiYXNlUmV3YXJkc0NsYXVzZSk7XG4gICAgICBzaG91bGQuZXhpc3Qoc3Rha2luZ1Jld2FyZHNDbGF1c2UpO1xuICAgICAgYmFzZVJld2FyZHNDbGF1c2U/LnRvPy5zaG91bGQuZXF1YWwoU1RBUkdBVEVfQ09OVFJBQ1RfQUREUkVTU19URVNUTkVUKTtcbiAgICAgIHN0YWtpbmdSZXdhcmRzQ2xhdXNlPy50bz8uc2hvdWxkLmVxdWFsKFNUQVJHQVRFX0NPTlRSQUNUX0FERFJFU1NfVEVTVE5FVCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIHRyYW5zYWN0aW9uIHdpdGggdW5kZWZpbmVkIHNlbmRlciBidXQgaW5jbHVkZSBpdCBpbiBpbnB1dHMnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldENsYWltUmV3YXJkc0J1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5jbGFpbVJld2FyZHNEYXRhKHtcbiAgICAgICAgdG9rZW5JZCxcbiAgICAgIH0pO1xuICAgICAgdHhCdWlsZGVyLmNoYWluVGFnKDB4MjcpO1xuICAgICAgdHhCdWlsZGVyLmJsb2NrUmVmKCcweDAwMDAwMDAwMDAwMDAwMDAnKTtcbiAgICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKDY0KTtcbiAgICAgIHR4QnVpbGRlci5nYXMoMTAwMDAwKTtcbiAgICAgIHR4QnVpbGRlci5nYXNQcmljZUNvZWYoMCk7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UoJzEyMzQ1Jyk7XG4gICAgICAvLyBOb3Qgc2V0dGluZyBzZW5kZXJcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHR4LnNob3VsZC5iZS5pbnN0YW5jZW9mKENsYWltUmV3YXJkc1RyYW5zYWN0aW9uKTtcblxuICAgICAgY29uc3QgY2xhaW1UeCA9IHR4IGFzIENsYWltUmV3YXJkc1RyYW5zYWN0aW9uO1xuICAgICAgLy8gVmVyaWZ5IHRoZSB0cmFuc2FjdGlvbiBoYXMgaW5wdXRzIGJ1dCB3aXRoIHVuZGVmaW5lZCBhZGRyZXNzXG4gICAgICBjbGFpbVR4LmlucHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChjbGFpbVR4LmlucHV0c1swXS5hZGRyZXNzKTtcblxuICAgICAgLy8gVmVyaWZ5IHRoZSB0cmFuc2FjdGlvbiBoYXMgbm8gb3V0cHV0cyAoY2xhaW0gcmV3YXJkcyBkb2Vzbid0IHRyYW5zZmVyIHZhbHVlKVxuICAgICAgY2xhaW1UeC5vdXRwdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHVzZSBuZXR3b3JrIGRlZmF1bHQgY2hhaW5UYWcgd2hlbiBub3QgZXhwbGljaXRseSBzZXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldENsYWltUmV3YXJkc0J1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5jbGFpbVJld2FyZHNEYXRhKHtcbiAgICAgICAgdG9rZW5JZCxcbiAgICAgIH0pO1xuICAgICAgLy8gTm90IHNldHRpbmcgY2hhaW5UYWdcbiAgICAgIHR4QnVpbGRlci5ibG9ja1JlZignMHgwMDAwMDAwMDAwMDAwMDAwJyk7XG4gICAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbig2NCk7XG4gICAgICB0eEJ1aWxkZXIuZ2FzKDEwMDAwMCk7XG4gICAgICB0eEJ1aWxkZXIuZ2FzUHJpY2VDb2VmKDApO1xuICAgICAgdHhCdWlsZGVyLm5vbmNlKCcxMjM0NScpO1xuICAgICAgdHhCdWlsZGVyLnNlbmRlcignMHg5Mzc4YzEyQkQ3NTAyQTExRjc3MGE1QzFGMjIzYzk1OUIyODA1ZEE5Jyk7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICB0eC5zaG91bGQuYmUuaW5zdGFuY2VvZihDbGFpbVJld2FyZHNUcmFuc2FjdGlvbik7XG5cbiAgICAgIGNvbnN0IGNsYWltVHggPSB0eCBhcyBDbGFpbVJld2FyZHNUcmFuc2FjdGlvbjtcbiAgICAgIC8vIFZlcmlmeSB0aGUgY2hhaW5UYWcgaXMgc2V0IHRvIHRoZSB0ZXN0bmV0IGRlZmF1bHQgKDM5KVxuICAgICAgY2xhaW1UeC5jaGFpblRhZy5zaG91bGQuZXF1YWwoMzkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzZXJpYWxpemUgYW5kIGV4cGxhaW4gdHJhbnNhY3Rpb24gY29ycmVjdGx5JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY3JlYXRlQmFzaWNUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5jbGFpbVJld2FyZHNEYXRhKHtcbiAgICAgICAgdG9rZW5JZCxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgY2xhaW1UeCA9IHR4IGFzIENsYWltUmV3YXJkc1RyYW5zYWN0aW9uO1xuXG4gICAgICAvLyBUZXN0IHNlcmlhbGl6YXRpb25cbiAgICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBjbGFpbVR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBzZXJpYWxpemVkLnNob3VsZC5iZS5TdHJpbmcoKTtcbiAgICAgIHNlcmlhbGl6ZWQuc2hvdWxkLnN0YXJ0V2l0aCgnMHgnKTtcblxuICAgICAgLy8gVGVzdCBleHBsYW5hdGlvblxuICAgICAgY29uc3QgZXhwbGFuYXRpb24gPSBjbGFpbVR4LmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuICAgICAgZXhwbGFuYXRpb24udHlwZT8uc2hvdWxkLmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nQ2xhaW0pO1xuICAgICAgc2hvdWxkLmV4aXN0KGV4cGxhbmF0aW9uLmZlZSk7XG4gICAgICBleHBsYW5hdGlvbi5vdXRwdXRBbW91bnQuc2hvdWxkLmVxdWFsKCcwJyk7XG4gICAgICBleHBsYW5hdGlvbi5jaGFuZ2VBbW91bnQuc2hvdWxkLmVxdWFsKCcwJyk7XG5cbiAgICAgIC8vIFRlc3QgdG9Kc29uXG4gICAgICBjb25zdCBqc29uID0gY2xhaW1UeC50b0pzb24oKTtcbiAgICAgIHNob3VsZC5leGlzdChqc29uLmNsYWltUmV3YXJkc0RhdGEpO1xuICAgICAganNvbi5jbGFpbVJld2FyZHNEYXRhPy50b2tlbklkLnNob3VsZC5lcXVhbCh0b2tlbklkKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgY29ycmVjdGx5IGhhbmRsZSBjdXN0b20gY29udHJhY3QgYWRkcmVzc2VzIHdoZW4gYnVpbGRpbmcgdHJhbnNhY3Rpb25zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY3VzdG9tTmZ0QWRkcmVzcyA9ICcweDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAnO1xuICAgICAgY29uc3QgY3VzdG9tRGVsZWdhdGlvbkFkZHJlc3MgPSAnMHgwOTg3NjU0MzIxMDk4NzY1NDMyMTA5ODc2NTQzMjEwOTg3NjU0MzIxJztcblxuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY3JlYXRlQmFzaWNUeEJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5jbGFpbVJld2FyZHNEYXRhKHtcbiAgICAgICAgdG9rZW5JZCxcbiAgICAgICAgZGVsZWdhdGlvbkNvbnRyYWN0QWRkcmVzczogY3VzdG9tRGVsZWdhdGlvbkFkZHJlc3MsXG4gICAgICAgIHN0YXJnYXRlTmZ0QWRkcmVzczogY3VzdG9tTmZ0QWRkcmVzcyxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgY2xhaW1UeCA9IHR4IGFzIENsYWltUmV3YXJkc1RyYW5zYWN0aW9uO1xuXG4gICAgICAvLyBWZXJpZnkgdGhhdCBjdXN0b20gYWRkcmVzc2VzIGFyZSBzdG9yZWQgaW4gY2xhaW1SZXdhcmRzRGF0YSB3aGVuIHRoZXkgZGlmZmVyIGZyb20gZGVmYXVsdHNcbiAgICAgIHNob3VsZC5leGlzdChjbGFpbVR4LmNsYWltUmV3YXJkc0RhdGEuZGVsZWdhdGlvbkNvbnRyYWN0QWRkcmVzcyk7XG4gICAgICBjbGFpbVR4LmNsYWltUmV3YXJkc0RhdGEuZGVsZWdhdGlvbkNvbnRyYWN0QWRkcmVzcz8uc2hvdWxkLmVxdWFsKGN1c3RvbURlbGVnYXRpb25BZGRyZXNzKTtcblxuICAgICAgc2hvdWxkLmV4aXN0KGNsYWltVHguY2xhaW1SZXdhcmRzRGF0YS5zdGFyZ2F0ZU5mdEFkZHJlc3MpO1xuICAgICAgY2xhaW1UeC5jbGFpbVJld2FyZHNEYXRhLnN0YXJnYXRlTmZ0QWRkcmVzcz8uc2hvdWxkLmVxdWFsKGN1c3RvbU5mdEFkZHJlc3MpO1xuXG4gICAgICAvLyBWZXJpZnkgY2xhdXNlcyBzdGlsbCB1c2UgdGhlIGRlZmF1bHQgYWRkcmVzc2VzIChhcyBidWlsZGVycyB1c2UgZGVmYXVsdHMpXG4gICAgICBjb25zdCBiYXNlUmV3YXJkc0NsYXVzZSA9IGNsYWltVHguY2xhdXNlcy5maW5kKChjbGF1c2UpID0+IGNsYXVzZS5kYXRhLnN0YXJ0c1dpdGgoQ0xBSU1fQkFTRV9SRVdBUkRTX01FVEhPRF9JRCkpO1xuICAgICAgY29uc3Qgc3Rha2luZ1Jld2FyZHNDbGF1c2UgPSBjbGFpbVR4LmNsYXVzZXMuZmluZCgoY2xhdXNlKSA9PlxuICAgICAgICBjbGF1c2UuZGF0YS5zdGFydHNXaXRoKENMQUlNX1NUQUtJTkdfUkVXQVJEU19NRVRIT0RfSUQpXG4gICAgICApO1xuXG4gICAgICBiYXNlUmV3YXJkc0NsYXVzZT8udG8/LnNob3VsZC5lcXVhbChTVEFSR0FURV9DT05UUkFDVF9BRERSRVNTX1RFU1RORVQpO1xuICAgICAgc3Rha2luZ1Jld2FyZHNDbGF1c2U/LnRvPy5zaG91bGQuZXF1YWwoU1RBUkdBVEVfQ09OVFJBQ1RfQUREUkVTU19URVNUTkVUKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=delegateClauseTxnBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegateClauseTxnBuilder.d.ts","sourceRoot":"","sources":["../../../test/transactionBuilder/delegateClauseTxnBuilder.ts"],"names":[],"mappings":""}
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const statics_1 = require("@bitgo-beta/statics");
40
+ const lib_1 = require("../../src/lib");
41
+ const should_1 = __importDefault(require("should"));
42
+ const constants_1 = require("../../src/lib/constants");
43
+ const ethereumjs_abi_1 = __importDefault(require("ethereumjs-abi"));
44
+ const testData = __importStar(require("../resources/vet"));
45
+ const ethereumjs_util_1 = require("ethereumjs-util");
46
+ describe('VET Delegation Transaction', function () {
47
+ const factory = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tvet'));
48
+ const tokenId = '100201'; // Test token ID
49
+ const validatorAddress = '0x9a7aFCACc88c106f3bbD6B213CD0821D9224d945';
50
+ // Helper function to create a basic transaction builder with common properties
51
+ const createBasicTxBuilder = () => {
52
+ const txBuilder = factory.getStakingDelegateBuilder();
53
+ txBuilder.sender('0x9378c12BD7502A11F770a5C1F223c959B2805dA9');
54
+ txBuilder.chainTag(0x27); // Testnet chain tag
55
+ txBuilder.blockRef('0x0000000000000000');
56
+ txBuilder.expiration(64);
57
+ txBuilder.gas(100000);
58
+ txBuilder.gasPriceCoef(0);
59
+ txBuilder.nonce('12345');
60
+ return txBuilder;
61
+ };
62
+ it('should build a delegate transaction', async function () {
63
+ const txBuilder = factory.getStakingDelegateBuilder();
64
+ txBuilder.stakingContractAddress(constants_1.STARGATE_CONTRACT_ADDRESS_TESTNET);
65
+ txBuilder.tokenId(tokenId);
66
+ txBuilder.sender('0x9378c12BD7502A11F770a5C1F223c959B2805dA9');
67
+ txBuilder.chainTag(0x27); // Testnet chain tag
68
+ txBuilder.blockRef('0x0000000000000000');
69
+ txBuilder.expiration(64);
70
+ txBuilder.gas(100000);
71
+ txBuilder.gasPriceCoef(0);
72
+ txBuilder.nonce('12345');
73
+ txBuilder.validator(validatorAddress);
74
+ const tx = await txBuilder.build();
75
+ should_1.default.exist(tx);
76
+ tx.should.be.instanceof(lib_1.Transaction);
77
+ tx.should.be.instanceof(lib_1.DelegateClauseTransaction);
78
+ const delegationTx = tx;
79
+ delegationTx.stakingContractAddress.should.equal(constants_1.STARGATE_CONTRACT_ADDRESS_TESTNET);
80
+ delegationTx.tokenId.should.equal(tokenId);
81
+ delegationTx.validator.should.equal(validatorAddress);
82
+ // Verify clauses
83
+ delegationTx.clauses.length.should.equal(1);
84
+ should_1.default.exist(delegationTx.clauses[0].to);
85
+ delegationTx.clauses[0].to?.should.equal(constants_1.STARGATE_CONTRACT_ADDRESS_TESTNET);
86
+ // Verify transaction data is correctly encoded using ethereumABI
87
+ should_1.default.exist(delegationTx.clauses[0].data);
88
+ const txData = delegationTx.clauses[0].data;
89
+ txData.should.startWith(constants_1.DELEGATE_CLAUSE_METHOD_ID);
90
+ // Verify the encoded data matches what we expect from ethereumABI
91
+ const methodName = 'delegate';
92
+ const types = ['uint256', 'address'];
93
+ const params = [new ethereumjs_util_1.BN(tokenId), validatorAddress];
94
+ const method = ethereumjs_abi_1.default.methodID(methodName, types);
95
+ const args = ethereumjs_abi_1.default.rawEncode(types, params);
96
+ const expectedData = '0x' + Buffer.concat([method, args]).toString('hex');
97
+ txData.should.equal(expectedData);
98
+ // Verify recipients
99
+ delegationTx.recipients.length.should.equal(1);
100
+ delegationTx.recipients[0].address.should.equal(constants_1.STARGATE_CONTRACT_ADDRESS_TESTNET);
101
+ });
102
+ describe('Failure scenarios', function () {
103
+ it('should throw error when stakingContractAddress is missing', async function () {
104
+ const txBuilder = createBasicTxBuilder();
105
+ txBuilder.tokenId(tokenId);
106
+ txBuilder.validator(validatorAddress);
107
+ await txBuilder.build().should.be.rejectedWith('Staking contract address is required');
108
+ });
109
+ it('should throw error when tokenId is missing', async function () {
110
+ const txBuilder = createBasicTxBuilder();
111
+ txBuilder.stakingContractAddress(constants_1.STARGATE_CONTRACT_ADDRESS_TESTNET);
112
+ await txBuilder.build().should.be.rejectedWith('Token ID is required');
113
+ });
114
+ it('should throw error when validator address is missing', async function () {
115
+ const txBuilder = createBasicTxBuilder();
116
+ txBuilder.stakingContractAddress(constants_1.STARGATE_CONTRACT_ADDRESS_TESTNET);
117
+ txBuilder.tokenId(tokenId);
118
+ await txBuilder.build().should.be.rejectedWith('Validator address is required');
119
+ });
120
+ it('should throw error when stakingContractAddress is invalid', async function () {
121
+ const txBuilder = createBasicTxBuilder();
122
+ // Invalid address (wrong format)
123
+ (0, should_1.default)(() => {
124
+ txBuilder.stakingContractAddress('invalid-address');
125
+ }).throw(/Invalid address/);
126
+ });
127
+ it('should build transaction with undefined sender but include it in inputs', async function () {
128
+ const txBuilder = factory.getStakingDelegateBuilder();
129
+ txBuilder.stakingContractAddress(constants_1.STARGATE_CONTRACT_ADDRESS_TESTNET);
130
+ txBuilder.tokenId(tokenId);
131
+ txBuilder.chainTag(0x27);
132
+ txBuilder.blockRef('0x0000000000000000');
133
+ txBuilder.expiration(64);
134
+ txBuilder.gas(100000);
135
+ txBuilder.gasPriceCoef(0);
136
+ txBuilder.nonce('12345');
137
+ txBuilder.validator(validatorAddress);
138
+ // Not setting sender
139
+ const tx = await txBuilder.build();
140
+ tx.should.be.instanceof(lib_1.DelegateClauseTransaction);
141
+ const delegationTx = tx;
142
+ // Verify the transaction has inputs but with undefined address
143
+ delegationTx.inputs.length.should.equal(1);
144
+ should_1.default.not.exist(delegationTx.inputs[0].address);
145
+ // Verify the transaction has the correct output
146
+ delegationTx.outputs.length.should.equal(1);
147
+ delegationTx.outputs[0].address.should.equal(constants_1.STARGATE_CONTRACT_ADDRESS_TESTNET);
148
+ });
149
+ it('should use network default chainTag when not explicitly set', async function () {
150
+ const txBuilder = factory.getStakingDelegateBuilder();
151
+ txBuilder.stakingContractAddress(constants_1.STARGATE_CONTRACT_ADDRESS_TESTNET);
152
+ txBuilder.tokenId(tokenId);
153
+ // Not setting chainTag
154
+ txBuilder.blockRef('0x0000000000000000');
155
+ txBuilder.expiration(64);
156
+ txBuilder.gas(100000);
157
+ txBuilder.gasPriceCoef(0);
158
+ txBuilder.nonce('12345');
159
+ txBuilder.sender('0x9378c12BD7502A11F770a5C1F223c959B2805dA9');
160
+ txBuilder.validator(validatorAddress);
161
+ const tx = await txBuilder.build();
162
+ tx.should.be.instanceof(lib_1.DelegateClauseTransaction);
163
+ const delegationTx = tx;
164
+ // Verify the chainTag is set to the testnet default (39)
165
+ delegationTx.chainTag.should.equal(39);
166
+ });
167
+ it('should build a signed tx and validate its toJson', async function () {
168
+ const tokenIdForDelegateTxn = '15662';
169
+ const txBuilder = factory.from(testData.DELEGATION_TRANSACTION);
170
+ const tx = txBuilder.transaction;
171
+ const toJson = tx.toJson();
172
+ toJson.id.should.equal('0xc47792a421d90cb52a4aedbd9abe96f779a8ad68e508680ac3cc135428c3f4c5');
173
+ toJson.stakingContractAddress?.should.equal('0x1e02b2953adefec225cf0ec49805b1146a4429c1');
174
+ toJson.nonce.should.equal('887557');
175
+ toJson.gas.should.equal(287920);
176
+ toJson.gasPriceCoef.should.equal(128);
177
+ toJson.expiration.should.equal(64);
178
+ toJson.chainTag.should.equal(39);
179
+ // in delegate txn, nftTokenId indicates the tokenId
180
+ toJson.tokenId?.should.equal(tokenIdForDelegateTxn);
181
+ toJson.validatorAddress?.should.equal('00563ec3cafbbe7e60b04b3190e6eca66579706d');
182
+ });
183
+ });
184
+ });
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZWdhdGVDbGF1c2VUeG5CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC90cmFuc2FjdGlvbkJ1aWxkZXIvZGVsZWdhdGVDbGF1c2VUeG5CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQTRDO0FBQzVDLHVDQUFrRztBQUNsRyxvREFBNEI7QUFDNUIsdURBQXVHO0FBQ3ZHLG9FQUF5QztBQUN6QywyREFBNkM7QUFDN0MscURBQXFDO0FBRXJDLFFBQVEsQ0FBQyw0QkFBNEIsRUFBRTtJQUNyQyxNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNqRSxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsQ0FBQyxnQkFBZ0I7SUFDMUMsTUFBTSxnQkFBZ0IsR0FBRyw0Q0FBNEMsQ0FBQztJQUV0RSwrRUFBK0U7SUFDL0UsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLEVBQUU7UUFDaEMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDdEQsU0FBUyxDQUFDLE1BQU0sQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBQy9ELFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxvQkFBb0I7UUFDOUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3pDLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QixTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFCLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekIsT0FBTyxTQUFTLENBQUM7SUFDbkIs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QUMsRUFBRSxDQUFDLENBQUM7WUFDakMsb0RBQW9EO1lBQ3BELE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ3BELE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFDcEYsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksIFRyYW5zYWN0aW9uLCBEZWxlZ2F0ZUNsYXVzZVRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vc3JjL2xpYic7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBERUxFR0FURV9DTEFVU0VfTUVUSE9EX0lELCBTVEFSR0FURV9DT05UUkFDVF9BRERSRVNTX1RFU1RORVQgfSBmcm9tICcuLi8uLi9zcmMvbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgRXRoZXJldW1BYmkgZnJvbSAnZXRoZXJldW1qcy1hYmknO1xuaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi4vcmVzb3VyY2VzL3ZldCc7XG5pbXBvcnQgeyBCTiB9IGZyb20gJ2V0aGVyZXVtanMtdXRpbCc7XG5cbmRlc2NyaWJlKCdWRVQgRGVsZWdhdGlvbiBUcmFuc2FjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndHZldCcpKTtcbiAgY29uc3QgdG9rZW5JZCA9ICcxMDAyMDEnOyAvLyBUZXN0IHRva2VuIElEXG4gIGNvbnN0IHZhbGlkYXRvckFkZHJlc3MgPSAnMHg5YTdhRkNBQ2M4OGMxMDZmM2JiRDZCMjEzQ0QwODIxRDkyMjRkOTQ1JztcblxuICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRlIGEgYmFzaWMgdHJhbnNhY3Rpb24gYnVpbGRlciB3aXRoIGNvbW1vbiBwcm9wZXJ0aWVzXG4gIGNvbnN0IGNyZWF0ZUJhc2ljVHhCdWlsZGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0RlbGVnYXRlQnVpbGRlcigpO1xuICAgIHR4QnVpbGRlci5zZW5kZXIoJzB4OTM3OGMxMkJENzUwMkExMUY3NzBhNUMxRjIyM2M5NTlCMjgwNWRBOScpO1xuICAgIHR4QnVpbGRlci5jaGFpblRhZygweDI3KTsgLy8gVGVzdG5ldCBjaGFpbiB0YWdcbiAgICB0eEJ1aWxkZXIuYmxvY2tSZWYoJzB4MDAwMDAwMDAwMDAwMDAwMCcpO1xuICAgIHR4QnVpbGRlci5leHBpcmF0aW9uKDY0KTtcbiAgICB0eEJ1aWxkZXIuZ2FzKDEwMDAwMCk7XG4gICAgdHhCdWlsZGVyLmdhc1ByaWNlQ29lZigwKTtcbiAgICB0eEJ1aWxkZXIubm9uY2UoJzEyMzQ1Jyk7XG4gICAgcmV0dXJuIHR4QnVpbGRlcjtcbiAgfTtcblxuICBpdCgnc2hvdWxkIGJ1aWxkIGEgZGVsZWdhdGUgdHJhbnNhY3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRTdGFraW5nRGVsZWdhdGVCdWlsZGVyKCk7XG4gICAgdHhCdWlsZGVyLnN0YWtpbmdDb250cmFjdEFkZHJlc3MoU1RBUkdBVEVfQ09OVFJBQ1RfQUREUkVTU19URVNUTkVUKTtcbiAgICB0eEJ1aWxkZXIudG9rZW5JZCh0b2tlbklkKTtcbiAgICB0eEJ1aWxkZXIuc2VuZGVyKCcweDkzNzhjMTJCRDc1MDJBMTFGNzcwYTVDMUYyMjNjOTU5QjI4MDVkQTknKTtcbiAgICB0eEJ1aWxkZXIuY2hhaW5UYWcoMHgyNyk7IC8vIFRlc3RuZXQgY2hhaW4gdGFnXG4gICAgdHhCdWlsZGVyLmJsb2NrUmVmKCcweDAwMDAwMDAwMDAwMDAwMDAnKTtcbiAgICB0eEJ1aWxkZXIuZXhwaXJhdGlvbig2NCk7XG4gICAgdHhCdWlsZGVyLmdhcygxMDAwMDApO1xuICAgIHR4QnVpbGRlci5nYXNQcmljZUNvZWYoMCk7XG4gICAgdHhCdWlsZGVyLm5vbmNlKCcxMjM0NScpO1xuICAgIHR4QnVpbGRlci52YWxpZGF0b3IodmFsaWRhdG9yQWRkcmVzcyk7XG5cbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIHNob3VsZC5leGlzdCh0eCk7XG4gICAgdHguc2hvdWxkLmJlLmluc3RhbmNlb2YoVHJhbnNhY3Rpb24pO1xuICAgIHR4LnNob3VsZC5iZS5pbnN0YW5jZW9mKERlbGVnYXRlQ2xhdXNlVHJhbnNhY3Rpb24pO1xuXG4gICAgY29uc3QgZGVsZWdhdGlvblR4ID0gdHggYXMgRGVsZWdhdGVDbGF1c2VUcmFuc2FjdGlvbjtcbiAgICBkZWxlZ2F0aW9uVHguc3Rha2luZ0NvbnRyYWN0QWRkcmVzcy5zaG91bGQuZXF1YWwoU1RBUkdBVEVfQ09OVFJBQ1RfQUREUkVTU19URVNUTkVUKTtcbiAgICBkZWxlZ2F0aW9uVHgudG9rZW5JZC5zaG91bGQuZXF1YWwodG9rZW5JZCk7XG4gICAgZGVsZWdhdGlvblR4LnZhbGlkYXRvci5zaG91bGQuZXF1YWwodmFsaWRhdG9yQWRkcmVzcyk7XG5cbiAgICAvLyBWZXJpZnkgY2xhdXNlc1xuICAgIGRlbGVnYXRpb25UeC5jbGF1c2VzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgc2hvdWxkLmV4aXN0KGRlbGVnYXRpb25UeC5jbGF1c2VzWzBdLnRvKTtcbiAgICBkZWxlZ2F0aW9uVHguY2xhdXNlc1swXS50bz8uc2hvdWxkLmVxdWFsKFNUQVJHQVRFX0NPTlRSQUNUX0FERFJFU1NfVEVTVE5FVCk7XG5cbiAgICAvLyBWZXJpZnkgdHJhbnNhY3Rpb24gZGF0YSBpcyBjb3JyZWN0bHkgZW5jb2RlZCB1c2luZyBldGhlcmV1bUFCSVxuICAgIHNob3VsZC5leGlzdChkZWxlZ2F0aW9uVHguY2xhdXNlc1swXS5kYXRhKTtcbiAgICBjb25zdCB0eERhdGEgPSBkZWxlZ2F0aW9uVHguY2xhdXNlc1swXS5kYXRhO1xuICAgIHR4RGF0YS5zaG91bGQuc3RhcnRXaXRoKERFTEVHQVRFX0NMQVVTRV9NRVRIT0RfSUQpO1xuXG4gICAgLy8gVmVyaWZ5IHRoZSBlbmNvZGVkIGRhdGEgbWF0Y2hlcyB3aGF0IHdlIGV4cGVjdCBmcm9tIGV0aGVyZXVtQUJJXG4gICAgY29uc3QgbWV0aG9kTmFtZSA9ICdkZWxlZ2F0ZSc7XG4gICAgY29uc3QgdHlwZXMgPSBbJ3VpbnQyNTYnLCAnYWRkcmVzcyddO1xuICAgIGNvbnN0IHBhcmFtcyA9IFtuZXcgQk4odG9rZW5JZCksIHZhbGlkYXRvckFkZHJlc3NdO1xuXG4gICAgY29uc3QgbWV0aG9kID0gRXRoZXJldW1BYmkubWV0aG9kSUQobWV0aG9kTmFtZSwgdHlwZXMpO1xuICAgIGNvbnN0IGFyZ3MgPSBFdGhlcmV1bUFiaS5yYXdFbmNvZGUodHlwZXMsIHBhcmFtcyk7XG4gICAgY29uc3QgZXhwZWN0ZWREYXRhID0gJzB4JyArIEJ1ZmZlci5jb25jYXQoW21ldGhvZCwgYXJnc10pLnRvU3RyaW5nKCdoZXgnKTtcblxuICAgIHR4RGF0YS5zaG91bGQuZXF1YWwoZXhwZWN0ZWREYXRhKTtcblxuICAgIC8vIFZlcmlmeSByZWNpcGllbnRzXG4gICAgZGVsZWdhdGlvblR4LnJlY2lwaWVudHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICBkZWxlZ2F0aW9uVHgucmVjaXBpZW50c1swXS5hZGRyZXNzLnNob3VsZC5lcXVhbChTVEFSR0FURV9DT05UUkFDVF9BRERSRVNTX1RFU1RORVQpO1xuICB9KTtcblxuICBkZXNjcmliZSgnRmFpbHVyZSBzY2VuYXJpb3MnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciB3aGVuIHN0YWtpbmdDb250cmFjdEFkZHJlc3MgaXMgbWlzc2luZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNyZWF0ZUJhc2ljVHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIudG9rZW5JZCh0b2tlbklkKTtcbiAgICAgIHR4QnVpbGRlci52YWxpZGF0b3IodmFsaWRhdG9yQWRkcmVzcyk7XG5cbiAgICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ1N0YWtpbmcgY29udHJhY3QgYWRkcmVzcyBpcyByZXF1aXJlZCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciB3aGVuIHRva2VuSWQgaXMgbWlzc2luZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNyZWF0ZUJhc2ljVHhCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhTVEFSR0FURV9DT05UUkFDVF9BRERSRVNTX1RFU1RORVQpO1xuXG4gICAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdUb2tlbiBJRCBpcyByZXF1aXJlZCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciB3aGVuIHZhbGlkYXRvciBhZGRyZXNzIGlzIG1pc3NpbmcnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjcmVhdGVCYXNpY1R4QnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnN0YWtpbmdDb250cmFjdEFkZHJlc3MoU1RBUkdBVEVfQ09OVFJBQ1RfQUREUkVTU19URVNUTkVUKTtcbiAgICAgIHR4QnVpbGRlci50b2tlbklkKHRva2VuSWQpO1xuXG4gICAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdWYWxpZGF0b3IgYWRkcmVzcyBpcyByZXF1aXJlZCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciB3aGVuIHN0YWtpbmdDb250cmFjdEFkZHJlc3MgaXMgaW52YWxpZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNyZWF0ZUJhc2ljVHhCdWlsZGVyKCk7XG5cbiAgICAgIC8vIEludmFsaWQgYWRkcmVzcyAod3JvbmcgZm9ybWF0KVxuICAgICAgc2hvdWxkKCgpID0+IHtcbiAgICAgICAgdHhCdWlsZGVyLnN0YWtpbmdDb250cmFjdEFkZHJlc3MoJ2ludmFsaWQtYWRkcmVzcycpO1xuICAgICAgfSkudGhyb3coL0ludmFsaWQgYWRkcmVzcy8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCB0cmFuc2FjdGlvbiB3aXRoIHVuZGVmaW5lZCBzZW5kZXIgYnV0IGluY2x1ZGUgaXQgaW4gaW5wdXRzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRTdGFraW5nRGVsZWdhdGVCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc3Rha2luZ0NvbnRyYWN0QWRkcmVzcyhTVEFSR0FURV9DT05UUkFDVF9BRERSRVNTX1RFU1RORVQpO1xuICAgICAgdHhCdWlsZGVyLnRva2VuSWQodG9rZW5JZCk7XG4gICAgICB0eEJ1aWxkZXIuY2hhaW5UYWcoMHgyNyk7XG4gICAgICB0eEJ1aWxkZXIuYmxvY2tSZWYoJzB4MDAwMDAwMDAwMDAwMDAwMCcpO1xuICAgICAgdHhCdWlsZGVyLmV4cGlyYXRpb24oNjQpO1xuICAgICAgdHhCdWlsZGVyLmdhcygxMDAwMDApO1xuICAgICAgdHhCdWlsZGVyLmdhc1ByaWNlQ29lZigwKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZSgnMTIzNDUnKTtcbiAgICAgIHR4QnVpbGRlci52YWxpZGF0b3IodmFsaWRhdG9yQWRkcmVzcyk7XG4gICAgICAvLyBOb3Qgc2V0dGluZyBzZW5kZXJcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHR4LnNob3VsZC5iZS5pbnN0YW5jZW9mKERlbGVnYXRlQ2xhdXNlVHJhbnNhY3Rpb24pO1xuXG4gICAgICBjb25zdCBkZWxlZ2F0aW9uVHggPSB0eCBhcyBEZWxlZ2F0ZUNsYXVzZVRyYW5zYWN0aW9uO1xuICAgICAgLy8gVmVyaWZ5IHRoZSB0cmFuc2FjdGlvbiBoYXMgaW5wdXRzIGJ1dCB3aXRoIHVuZGVmaW5lZCBhZGRyZXNzXG4gICAgICBkZWxlZ2F0aW9uVHguaW5wdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICBzaG91bGQubm90LmV4aXN0KGRlbGVnYXRpb25UeC5pbnB1dHNbMF0uYWRkcmVzcyk7XG5cbiAgICAgIC8vIFZlcmlmeSB0aGUgdHJhbnNhY3Rpb24gaGFzIHRoZSBjb3JyZWN0IG91dHB1dFxuICAgICAgZGVsZWdhdGlvblR4Lm91dHB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIGRlbGVnYXRpb25UeC5vdXRwdXRzWzBdLmFkZHJlc3Muc2hvdWxkLmVxdWFsKFNUQVJHQVRFX0NPTlRSQUNUX0FERFJFU1NfVEVTVE5FVCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHVzZSBuZXR3b3JrIGRlZmF1bHQgY2hhaW5UYWcgd2hlbiBub3QgZXhwbGljaXRseSBzZXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFN0YWtpbmdEZWxlZ2F0ZUJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zdGFraW5nQ29udHJhY3RBZGRyZXNzKFNUQVJHQVRFX0NPTlRSQUNUX0FERFJFU1NfVEVTVE5FVCk7XG4gICAgICB0eEJ1aWxkZXIudG9rZW5JZCh0b2tlbklkKTtcbiAgICAgIC8vIE5vdCBzZXR0aW5nIGNoYWluVGFnXG4gICAgICB0eEJ1aWxkZXIuYmxvY2tSZWYoJzB4MDAwMDAwMDAwMDAwMDAwMCcpO1xuICAgICAgdHhCdWlsZGVyLmV4cGlyYXRpb24oNjQpO1xuICAgICAgdHhCdWlsZGVyLmdhcygxMDAwMDApO1xuICAgICAgdHhCdWlsZGVyLmdhc1ByaWNlQ29lZigwKTtcbiAgICAgIHR4QnVpbGRlci5ub25jZSgnMTIzNDUnKTtcbiAgICAgIHR4QnVpbGRlci5zZW5kZXIoJzB4OTM3OGMxMkJENzUwMkExMUY3NzBhNUMxRjIyM2M5NTlCMjgwNWRBOScpO1xuICAgICAgdHhCdWlsZGVyLnZhbGlkYXRvcih2YWxpZGF0b3JBZGRyZXNzKTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHR4LnNob3VsZC5iZS5pbnN0YW5jZW9mKERlbGVnYXRlQ2xhdXNlVHJhbnNhY3Rpb24pO1xuXG4gICAgICBjb25zdCBkZWxlZ2F0aW9uVHggPSB0eCBhcyBEZWxlZ2F0ZUNsYXVzZVRyYW5zYWN0aW9uO1xuICAgICAgLy8gVmVyaWZ5IHRoZSBjaGFpblRhZyBpcyBzZXQgdG8gdGhlIHRlc3RuZXQgZGVmYXVsdCAoMzkpXG4gICAgICBkZWxlZ2F0aW9uVHguY2hhaW5UYWcuc2hvdWxkLmVxdWFsKDM5KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgYSBzaWduZWQgdHggYW5kIHZhbGlkYXRlIGl0cyB0b0pzb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCB0b2tlbklkRm9yRGVsZWdhdGVUeG4gPSAnMTU2NjInO1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5mcm9tKHRlc3REYXRhLkRFTEVHQVRJT05fVFJBTlNBQ1RJT04pO1xuICAgICAgY29uc3QgdHggPSB0eEJ1aWxkZXIudHJhbnNhY3Rpb24gYXMgRGVsZWdhdGVDbGF1c2VUcmFuc2FjdGlvbjtcbiAgICAgIGNvbnN0IHRvSnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgdG9Kc29uLmlkLnNob3VsZC5lcXVhbCgnMHhjNDc3OTJhNDIxZDkwY2I1MmE0YWVkYmQ5YWJlOTZmNzc5YThhZDY4ZTUwODY4MGFjM2NjMTM1NDI4YzNmNGM1Jyk7XG4gICAgICB0b0pzb24uc3Rha2luZ0NvbnRyYWN0QWRkcmVzcz8uc2hvdWxkLmVxdWFsKCcweDFlMDJiMjk1M2FkZWZlYzIyNWNmMGVjNDk4MDViMTE0NmE0NDI5YzEnKTtcbiAgICAgIHRvSnNvbi5ub25jZS5zaG91bGQuZXF1YWwoJzg4NzU1NycpO1xuICAgICAgdG9Kc29uLmdhcy5zaG91bGQuZXF1YWwoMjg3OTIwKTtcbiAgICAgIHRvSnNvbi5nYXNQcmljZUNvZWYuc2hvdWxkLmVxdWFsKDEyOCk7XG4gICAgICB0b0pzb24uZXhwaXJhdGlvbi5zaG91bGQuZXF1YWwoNjQpO1xuICAgICAgdG9Kc29uLmNoYWluVGFnLnNob3VsZC5lcXVhbCgzOSk7XG4gICAgICAvLyBpbiBkZWxlZ2F0ZSB0eG4sIG5mdFRva2VuSWQgaW5kaWNhdGVzIHRoZSB0b2tlbklkXG4gICAgICB0b0pzb24udG9rZW5JZD8uc2hvdWxkLmVxdWFsKHRva2VuSWRGb3JEZWxlZ2F0ZVR4bik7XG4gICAgICB0b0pzb24udmFsaWRhdG9yQWRkcmVzcz8uc2hvdWxkLmVxdWFsKCcwMDU2M2VjM2NhZmJiZTdlNjBiMDRiMzE5MGU2ZWNhNjY1Nzk3MDZkJyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=exitDelegationBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exitDelegationBuilder.d.ts","sourceRoot":"","sources":["../../../test/transactionBuilder/exitDelegationBuilder.ts"],"names":[],"mappings":""}