@bitgo-beta/sdk-coin-polyx 1.0.1-beta.69 → 1.0.1-beta.691

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 (150) hide show
  1. package/dist/src/index.d.ts +1 -0
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +2 -1
  4. package/dist/src/lib/baseBuilder.d.ts +24 -0
  5. package/dist/src/lib/baseBuilder.d.ts.map +1 -0
  6. package/dist/src/lib/baseBuilder.js +31 -0
  7. package/dist/src/lib/batchStakingBuilder.d.ts +79 -0
  8. package/dist/src/lib/batchStakingBuilder.d.ts.map +1 -0
  9. package/dist/src/lib/batchStakingBuilder.js +299 -0
  10. package/dist/src/lib/batchUnstakingBuilder.d.ts +39 -0
  11. package/dist/src/lib/batchUnstakingBuilder.d.ts.map +1 -0
  12. package/dist/src/lib/batchUnstakingBuilder.js +127 -0
  13. package/dist/src/lib/bondExtraBuilder.d.ts +37 -0
  14. package/dist/src/lib/bondExtraBuilder.d.ts.map +1 -0
  15. package/dist/src/lib/bondExtraBuilder.js +101 -0
  16. package/dist/src/lib/constants.d.ts +12 -0
  17. package/dist/src/lib/constants.d.ts.map +1 -0
  18. package/dist/src/lib/constants.js +15 -0
  19. package/dist/src/lib/iface.d.ts +140 -2
  20. package/dist/src/lib/iface.d.ts.map +1 -1
  21. package/dist/src/lib/iface.js +37 -1
  22. package/dist/src/lib/index.d.ts +16 -7
  23. package/dist/src/lib/index.d.ts.map +1 -1
  24. package/dist/src/lib/index.js +44 -36
  25. package/dist/src/lib/preApproveAssetBuilder.d.ts +33 -0
  26. package/dist/src/lib/preApproveAssetBuilder.d.ts.map +1 -0
  27. package/dist/src/lib/preApproveAssetBuilder.js +77 -0
  28. package/dist/src/lib/registerDidWithCDDBuilder.d.ts +34 -0
  29. package/dist/src/lib/registerDidWithCDDBuilder.d.ts.map +1 -0
  30. package/dist/src/lib/registerDidWithCDDBuilder.js +83 -0
  31. package/dist/src/lib/rejectInstructionBuilder.d.ts +29 -0
  32. package/dist/src/lib/rejectInstructionBuilder.d.ts.map +1 -0
  33. package/dist/src/lib/rejectInstructionBuilder.js +89 -0
  34. package/dist/src/lib/tokenTransferBuilder.d.ts +58 -0
  35. package/dist/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  36. package/dist/src/lib/tokenTransferBuilder.js +158 -0
  37. package/dist/src/lib/transaction.d.ts +26 -4
  38. package/dist/src/lib/transaction.d.ts.map +1 -1
  39. package/dist/src/lib/transaction.js +183 -7
  40. package/dist/src/lib/transactionBuilderFactory.d.ts +29 -5
  41. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  42. package/dist/src/lib/transactionBuilderFactory.js +119 -8
  43. package/dist/src/lib/transferBuilder.d.ts +51 -3
  44. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  45. package/dist/src/lib/transferBuilder.js +109 -3
  46. package/dist/src/lib/txnSchema.d.ts +50 -0
  47. package/dist/src/lib/txnSchema.d.ts.map +1 -0
  48. package/dist/src/lib/txnSchema.js +165 -0
  49. package/dist/src/lib/unbondBuilder.d.ts +37 -0
  50. package/dist/src/lib/unbondBuilder.d.ts.map +1 -0
  51. package/dist/src/lib/unbondBuilder.js +98 -0
  52. package/dist/src/lib/utils.d.ts +15 -14
  53. package/dist/src/lib/utils.d.ts.map +1 -1
  54. package/dist/src/lib/utils.js +40 -23
  55. package/dist/src/lib/withdrawUnbondedBuilder.d.ts +35 -0
  56. package/dist/src/lib/withdrawUnbondedBuilder.d.ts.map +1 -0
  57. package/dist/src/lib/withdrawUnbondedBuilder.js +89 -0
  58. package/dist/src/polyx.d.ts +50 -9
  59. package/dist/src/polyx.d.ts.map +1 -1
  60. package/dist/src/polyx.js +269 -15
  61. package/dist/src/polyxToken.d.ts +20 -0
  62. package/dist/src/polyxToken.d.ts.map +1 -0
  63. package/dist/src/polyxToken.js +55 -0
  64. package/dist/src/register.d.ts.map +1 -1
  65. package/dist/src/register.js +5 -1
  66. package/dist/src/resources/index.d.ts +3 -0
  67. package/dist/src/resources/index.d.ts.map +1 -0
  68. package/dist/src/resources/index.js +19 -0
  69. package/dist/src/resources/mainnet.d.ts +13 -0
  70. package/dist/src/resources/mainnet.d.ts.map +1 -0
  71. package/dist/src/resources/mainnet.js +16 -0
  72. package/dist/src/resources/testnet.d.ts +13 -0
  73. package/dist/src/resources/testnet.d.ts.map +1 -0
  74. package/dist/src/resources/testnet.js +16 -0
  75. package/dist/src/tpolyx.d.ts +7 -0
  76. package/dist/src/tpolyx.d.ts.map +1 -1
  77. package/dist/src/tpolyx.js +11 -1
  78. package/dist/test/integration/index.d.ts +1 -0
  79. package/dist/test/integration/index.d.ts.map +1 -0
  80. package/dist/test/integration/index.js +1 -0
  81. package/dist/test/resources/index.d.ts +106 -0
  82. package/dist/test/resources/index.d.ts.map +1 -0
  83. package/dist/test/resources/index.js +112 -0
  84. package/dist/test/resources/mainnet.d.ts +2 -0
  85. package/dist/test/resources/mainnet.d.ts.map +1 -0
  86. package/dist/test/resources/mainnet.js +5 -0
  87. package/dist/test/resources/materialData.json +8 -0
  88. package/dist/test/resources/materialDataModified.json +8 -0
  89. package/dist/test/resources/testnet.d.ts +2 -0
  90. package/dist/test/resources/testnet.d.ts.map +1 -0
  91. package/dist/test/resources/testnet.js +5 -0
  92. package/dist/test/resources/wrwUsers.d.ts +19 -0
  93. package/dist/test/resources/wrwUsers.d.ts.map +1 -0
  94. package/dist/test/resources/wrwUsers.js +60 -0
  95. package/dist/test/unit/polyx.d.ts +2 -0
  96. package/dist/test/unit/polyx.d.ts.map +1 -0
  97. package/dist/test/unit/polyx.js +209 -0
  98. package/dist/test/unit/transactionBuilder/base.d.ts +4 -0
  99. package/dist/test/unit/transactionBuilder/base.d.ts.map +1 -0
  100. package/dist/test/unit/transactionBuilder/base.js +245 -0
  101. package/dist/test/unit/transactionBuilder/batchStakingBuilder.d.ts +2 -0
  102. package/dist/test/unit/transactionBuilder/batchStakingBuilder.d.ts.map +1 -0
  103. package/dist/test/unit/transactionBuilder/batchStakingBuilder.js +263 -0
  104. package/dist/test/unit/transactionBuilder/batchUnstakingBuilder.d.ts +2 -0
  105. package/dist/test/unit/transactionBuilder/batchUnstakingBuilder.d.ts.map +1 -0
  106. package/dist/test/unit/transactionBuilder/batchUnstakingBuilder.js +159 -0
  107. package/dist/test/unit/transactionBuilder/bondExtraBuilder.d.ts +2 -0
  108. package/dist/test/unit/transactionBuilder/bondExtraBuilder.d.ts.map +1 -0
  109. package/dist/test/unit/transactionBuilder/bondExtraBuilder.js +158 -0
  110. package/dist/test/unit/transactionBuilder/preApproveAssetBuilder.d.ts +2 -0
  111. package/dist/test/unit/transactionBuilder/preApproveAssetBuilder.d.ts.map +1 -0
  112. package/dist/test/unit/transactionBuilder/preApproveAssetBuilder.js +115 -0
  113. package/dist/test/unit/transactionBuilder/registerDidWithCDDBuilder.d.ts +2 -0
  114. package/dist/test/unit/transactionBuilder/registerDidWithCDDBuilder.d.ts.map +1 -0
  115. package/dist/test/unit/transactionBuilder/registerDidWithCDDBuilder.js +302 -0
  116. package/dist/test/unit/transactionBuilder/rejectInstructionBuilder.d.ts +2 -0
  117. package/dist/test/unit/transactionBuilder/rejectInstructionBuilder.d.ts.map +1 -0
  118. package/dist/test/unit/transactionBuilder/rejectInstructionBuilder.js +128 -0
  119. package/dist/test/unit/transactionBuilder/singletonRegistry.d.ts +2 -0
  120. package/dist/test/unit/transactionBuilder/singletonRegistry.d.ts.map +1 -0
  121. package/dist/test/unit/transactionBuilder/singletonRegistry.js +59 -0
  122. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts +2 -0
  123. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  124. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +140 -0
  125. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts +2 -0
  126. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts.map +1 -0
  127. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.js +74 -0
  128. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
  129. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  130. package/dist/test/unit/transactionBuilder/transferBuilder.js +326 -0
  131. package/dist/test/unit/transactionBuilder/unbondBuilder.d.ts +2 -0
  132. package/dist/test/unit/transactionBuilder/unbondBuilder.d.ts.map +1 -0
  133. package/dist/test/unit/transactionBuilder/unbondBuilder.js +144 -0
  134. package/dist/test/unit/transactionBuilder/withdrawUnbondedBuilder.d.ts +2 -0
  135. package/dist/test/unit/transactionBuilder/withdrawUnbondedBuilder.d.ts.map +1 -0
  136. package/dist/test/unit/transactionBuilder/withdrawUnbondedBuilder.js +138 -0
  137. package/dist/test/unit/utils.d.ts +2 -0
  138. package/dist/test/unit/utils.d.ts.map +1 -0
  139. package/dist/test/unit/utils.js +143 -0
  140. package/dist/tsconfig.tsbuildinfo +1 -0
  141. package/package.json +19 -10
  142. package/.eslintignore +0 -4
  143. package/.mocharc.yml +0 -8
  144. package/CHANGELOG.md +0 -16
  145. package/dist/src/lib/keyPair.d.ts +0 -12
  146. package/dist/src/lib/keyPair.d.ts.map +0 -1
  147. package/dist/src/lib/keyPair.js +0 -24
  148. package/dist/src/lib/transactionBuilder.d.ts +0 -43
  149. package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
  150. package/dist/src/lib/transactionBuilder.js +0 -78
@@ -0,0 +1,326 @@
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 assert_1 = __importDefault(require("assert"));
7
+ const should_1 = __importDefault(require("should"));
8
+ const sinon_1 = __importDefault(require("sinon"));
9
+ const lib_1 = require("../../../src/lib");
10
+ const src_1 = require("../../../src");
11
+ const resources_1 = require("../../resources");
12
+ const base_1 = require("./base");
13
+ const resources_2 = require("../../../src/resources");
14
+ describe('Polyx Transfer Builder - Testnet', () => {
15
+ let builder;
16
+ const sender = resources_1.accounts.account1;
17
+ const receiver = resources_1.accounts.account2;
18
+ beforeEach(() => {
19
+ const config = (0, base_1.buildTestConfig)();
20
+ builder = new lib_1.TransferBuilder(config).material(src_1.utils.getMaterial(config.network.type));
21
+ });
22
+ describe('setter validation', () => {
23
+ it('should validate to address', () => {
24
+ const spy = sinon_1.default.spy(builder, 'validateAddress');
25
+ assert_1.default.throws(() => builder.to({ address: 'asd' }), (e) => e.message === `The address 'asd' is not a well-formed dot address`);
26
+ should_1.default.doesNotThrow(() => builder.to({ address: sender.address }));
27
+ sinon_1.default.assert.calledTwice(spy);
28
+ });
29
+ it('should validate transfer amount', () => {
30
+ const spy = sinon_1.default.spy(builder, 'validateValue');
31
+ assert_1.default.throws(() => builder.amount('-1'), (e) => e.message === 'Value cannot be less than zero');
32
+ should_1.default.doesNotThrow(() => builder.amount('1000'));
33
+ sinon_1.default.assert.calledTwice(spy);
34
+ });
35
+ });
36
+ describe('build transfer transaction', () => {
37
+ it('should build a transfer transaction', async () => {
38
+ builder
39
+ .amount('90034235235322')
40
+ .to({ address: receiver.address })
41
+ .sender({ address: sender.address })
42
+ .memo('0')
43
+ .validity({ firstValid: 3933, maxDuration: 64 })
44
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
45
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 200 })
46
+ .fee({ amount: 0, type: 'tip' });
47
+ builder.addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
48
+ const tx = await builder.build();
49
+ const txJson = tx.toJson();
50
+ should_1.default.deepEqual(txJson.amount, '90034235235322');
51
+ should_1.default.deepEqual(txJson.to, receiver.address);
52
+ should_1.default.deepEqual(txJson.sender, sender.address);
53
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
54
+ should_1.default.deepEqual(txJson.referenceBlock, '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
55
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.genesisHash);
56
+ should_1.default.deepEqual(txJson.specVersion, Number(resources_2.testnetMaterial.specVersion));
57
+ should_1.default.deepEqual(txJson.nonce, 200);
58
+ should_1.default.deepEqual(txJson.tip, 0);
59
+ should_1.default.deepEqual(txJson.transactionVersion, Number(resources_2.testnetMaterial.txVersion));
60
+ should_1.default.deepEqual(txJson.chainName, resources_2.testnetMaterial.chainName);
61
+ should_1.default.deepEqual(txJson.eraPeriod, 64);
62
+ const inputs = tx.inputs[0];
63
+ should_1.default.deepEqual(inputs.address, sender.address);
64
+ should_1.default.deepEqual(inputs.value, '90034235235322');
65
+ const outputs = tx.outputs[0];
66
+ should_1.default.deepEqual(outputs.address, receiver.address);
67
+ should_1.default.deepEqual(outputs.value, '90034235235322');
68
+ });
69
+ it('should build a transaction with zero maxDuration (immortal)', async () => {
70
+ builder
71
+ .amount('90034235235322')
72
+ .to({ address: receiver.address })
73
+ .sender({ address: sender.address })
74
+ .memo('0')
75
+ .validity({ firstValid: 3933, maxDuration: 0 })
76
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
77
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 200 })
78
+ .fee({ amount: 0, type: 'tip' });
79
+ builder.addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
80
+ const tx = await builder.build();
81
+ const txJson = tx.toJson();
82
+ should_1.default.deepEqual(txJson.amount, '90034235235322');
83
+ should_1.default.deepEqual(txJson.to, receiver.address);
84
+ should_1.default.deepEqual(txJson.sender, sender.address);
85
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
86
+ should_1.default.deepEqual(txJson.referenceBlock, '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
87
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.genesisHash);
88
+ should_1.default.deepEqual(txJson.specVersion, Number(resources_2.testnetMaterial.specVersion));
89
+ should_1.default.deepEqual(txJson.nonce, 200);
90
+ should_1.default.deepEqual(txJson.tip, 0);
91
+ should_1.default.deepEqual(txJson.transactionVersion, Number(resources_2.testnetMaterial.txVersion));
92
+ should_1.default.deepEqual(txJson.chainName, resources_1.chainName);
93
+ should_1.default.deepEqual(txJson.eraPeriod, 0);
94
+ const inputs = tx.inputs[0];
95
+ should_1.default.deepEqual(inputs.address, sender.address);
96
+ should_1.default.deepEqual(inputs.value, '90034235235322');
97
+ const outputs = tx.outputs[0];
98
+ should_1.default.deepEqual(outputs.address, receiver.address);
99
+ should_1.default.deepEqual(outputs.value, '90034235235322');
100
+ });
101
+ it('should build an unsigned transfer transaction', async () => {
102
+ builder
103
+ .amount('90034235235322')
104
+ .to({ address: receiver.address })
105
+ .sender({ address: sender.address })
106
+ .memo('0')
107
+ .validity({ firstValid: 3933, maxDuration: 64 })
108
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
109
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 200 })
110
+ .fee({ amount: 0, type: 'tip' });
111
+ const tx = await builder.build();
112
+ const txJson = tx.toJson();
113
+ should_1.default.deepEqual(txJson.amount, '90034235235322');
114
+ should_1.default.deepEqual(txJson.to, receiver.address);
115
+ should_1.default.deepEqual(txJson.sender, sender.address);
116
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
117
+ should_1.default.deepEqual(txJson.referenceBlock, '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
118
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.genesisHash);
119
+ should_1.default.deepEqual(txJson.specVersion, Number(resources_2.testnetMaterial.specVersion));
120
+ should_1.default.deepEqual(txJson.nonce, 200);
121
+ should_1.default.deepEqual(txJson.tip, 0);
122
+ should_1.default.deepEqual(txJson.transactionVersion, Number(resources_2.testnetMaterial.txVersion));
123
+ should_1.default.deepEqual(txJson.chainName, resources_1.chainName);
124
+ should_1.default.deepEqual(txJson.eraPeriod, 64);
125
+ });
126
+ it('should build from raw signed tx', async () => {
127
+ builder.from(resources_1.rawTx.transfer.signed);
128
+ builder
129
+ .validity({ firstValid: 3933, maxDuration: 64 })
130
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
131
+ const tx = await builder.build();
132
+ const txJson = tx.toJson();
133
+ should_1.default.deepEqual(txJson.amount, '2000000000');
134
+ should_1.default.deepEqual(txJson.to, '5F8jxKE81GhFrphyfMFr5UjeAz5wS4AaZFmeFPnf8wTetD72');
135
+ should_1.default.deepEqual(txJson.sender, '5CLYvxwx4PUS678MNuhNJ9EfpUU9utrYCz9WVxovac4u9AYD');
136
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
137
+ should_1.default.deepEqual(txJson.referenceBlock, '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
138
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.genesisHash);
139
+ should_1.default.deepEqual(txJson.specVersion, Number(resources_2.testnetMaterial.specVersion));
140
+ should_1.default.deepEqual(txJson.nonce, 34);
141
+ should_1.default.deepEqual(txJson.tip, 0);
142
+ should_1.default.deepEqual(txJson.transactionVersion, Number(resources_2.testnetMaterial.txVersion));
143
+ should_1.default.deepEqual(txJson.chainName, resources_1.chainName);
144
+ should_1.default.deepEqual(txJson.eraPeriod, 64);
145
+ });
146
+ it('should build from raw unsigned tx', async () => {
147
+ builder.from(resources_1.rawTx.transfer.unsigned);
148
+ builder
149
+ .validity({ firstValid: 3933, maxDuration: 64 })
150
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
151
+ .sender({ address: sender.address })
152
+ .addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
153
+ const tx = await builder.build();
154
+ const txJson = tx.toJson();
155
+ should_1.default.deepEqual(txJson.amount, '2000000000');
156
+ should_1.default.deepEqual(txJson.to, '5F8jxKE81GhFrphyfMFr5UjeAz5wS4AaZFmeFPnf8wTetD72');
157
+ should_1.default.deepEqual(txJson.sender, sender.address);
158
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
159
+ should_1.default.deepEqual(txJson.referenceBlock, '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
160
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.genesisHash);
161
+ should_1.default.deepEqual(txJson.specVersion, Number(resources_2.testnetMaterial.specVersion));
162
+ should_1.default.deepEqual(txJson.nonce, 36);
163
+ should_1.default.deepEqual(txJson.eraPeriod, 64);
164
+ should_1.default.deepEqual(txJson.tip, 0);
165
+ should_1.default.deepEqual(txJson.transactionVersion, Number(resources_2.testnetMaterial.txVersion));
166
+ should_1.default.deepEqual(txJson.chainName, resources_1.chainName);
167
+ });
168
+ });
169
+ });
170
+ describe('Polyx Transfer Builder - Mainnet', () => {
171
+ let builder;
172
+ const sender = resources_1.accounts.account5Mainnet;
173
+ const receiver = resources_1.accounts.account6Mainnet;
174
+ beforeEach(() => {
175
+ const config = (0, base_1.buildMainnetConfig)();
176
+ builder = new lib_1.TransferBuilder(config).material(src_1.utils.getMaterial(config.network.type));
177
+ });
178
+ describe('setter validation', () => {
179
+ it('should validate to address', () => {
180
+ const spy = sinon_1.default.spy(builder, 'validateAddress');
181
+ assert_1.default.throws(() => builder.to({ address: 'asd' }), (e) => e.message === `The address 'asd' is not a well-formed dot address`);
182
+ should_1.default.doesNotThrow(() => builder.to({ address: sender.address }));
183
+ sinon_1.default.assert.calledTwice(spy);
184
+ });
185
+ it('should validate transfer amount', () => {
186
+ const spy = sinon_1.default.spy(builder, 'validateValue');
187
+ assert_1.default.throws(() => builder.amount('-1'), (e) => e.message === 'Value cannot be less than zero');
188
+ should_1.default.doesNotThrow(() => builder.amount('1000'));
189
+ sinon_1.default.assert.calledTwice(spy);
190
+ });
191
+ });
192
+ describe('build transfer transaction', () => {
193
+ it('should build a transfer transaction', async () => {
194
+ builder
195
+ .amount('90034235235322')
196
+ .to({ address: receiver.address })
197
+ .sender({ address: sender.address })
198
+ .memo('0')
199
+ .validity({ firstValid: 3933, maxDuration: 64 })
200
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
201
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 200 })
202
+ .fee({ amount: 0, type: 'tip' });
203
+ builder.addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
204
+ const tx = await builder.build();
205
+ const txJson = tx.toJson();
206
+ should_1.default.deepEqual(txJson.amount, '90034235235322');
207
+ should_1.default.deepEqual(txJson.to, receiver.address);
208
+ should_1.default.deepEqual(txJson.sender, sender.address);
209
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
210
+ should_1.default.deepEqual(txJson.referenceBlock, '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
211
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.mainGenesisHash);
212
+ should_1.default.deepEqual(txJson.specVersion, Number(resources_2.testnetMaterial.specVersion));
213
+ should_1.default.deepEqual(txJson.nonce, 200);
214
+ should_1.default.deepEqual(txJson.tip, 0);
215
+ should_1.default.deepEqual(txJson.transactionVersion, Number(resources_2.testnetMaterial.txVersion));
216
+ should_1.default.deepEqual(txJson.chainName, resources_1.mainChainName);
217
+ should_1.default.deepEqual(txJson.eraPeriod, 64);
218
+ const inputs = tx.inputs[0];
219
+ should_1.default.deepEqual(inputs.address, sender.address);
220
+ should_1.default.deepEqual(inputs.value, '90034235235322');
221
+ const outputs = tx.outputs[0];
222
+ should_1.default.deepEqual(outputs.address, receiver.address);
223
+ should_1.default.deepEqual(outputs.value, '90034235235322');
224
+ });
225
+ it('should build a transaction with zero maxDuration (immortal)', async () => {
226
+ builder
227
+ .amount('90034235235322')
228
+ .to({ address: receiver.address })
229
+ .sender({ address: sender.address })
230
+ .memo('0')
231
+ .validity({ firstValid: 3933, maxDuration: 0 })
232
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
233
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 200 })
234
+ .fee({ amount: 0, type: 'tip' });
235
+ builder.addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
236
+ const tx = await builder.build();
237
+ const txJson = tx.toJson();
238
+ should_1.default.deepEqual(txJson.amount, '90034235235322');
239
+ should_1.default.deepEqual(txJson.to, receiver.address);
240
+ should_1.default.deepEqual(txJson.sender, sender.address);
241
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
242
+ should_1.default.deepEqual(txJson.referenceBlock, '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
243
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.mainGenesisHash);
244
+ should_1.default.deepEqual(txJson.specVersion, Number(resources_2.testnetMaterial.specVersion));
245
+ should_1.default.deepEqual(txJson.nonce, 200);
246
+ should_1.default.deepEqual(txJson.tip, 0);
247
+ should_1.default.deepEqual(txJson.transactionVersion, Number(resources_2.testnetMaterial.txVersion));
248
+ should_1.default.deepEqual(txJson.chainName, resources_1.mainChainName);
249
+ should_1.default.deepEqual(txJson.eraPeriod, 0);
250
+ const inputs = tx.inputs[0];
251
+ should_1.default.deepEqual(inputs.address, sender.address);
252
+ should_1.default.deepEqual(inputs.value, '90034235235322');
253
+ const outputs = tx.outputs[0];
254
+ should_1.default.deepEqual(outputs.address, receiver.address);
255
+ should_1.default.deepEqual(outputs.value, '90034235235322');
256
+ });
257
+ it('should build an unsigned transfer transaction', async () => {
258
+ builder
259
+ .amount('90034235235322')
260
+ .to({ address: receiver.address })
261
+ .sender({ address: sender.address })
262
+ .memo('0')
263
+ .validity({ firstValid: 3933, maxDuration: 64 })
264
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
265
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 200 })
266
+ .fee({ amount: 0, type: 'tip' });
267
+ const tx = await builder.build();
268
+ const txJson = tx.toJson();
269
+ should_1.default.deepEqual(txJson.amount, '90034235235322');
270
+ should_1.default.deepEqual(txJson.to, receiver.address);
271
+ should_1.default.deepEqual(txJson.sender, sender.address);
272
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
273
+ should_1.default.deepEqual(txJson.referenceBlock, '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
274
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.mainGenesisHash);
275
+ should_1.default.deepEqual(txJson.specVersion, Number(resources_2.testnetMaterial.specVersion));
276
+ should_1.default.deepEqual(txJson.nonce, 200);
277
+ should_1.default.deepEqual(txJson.tip, 0);
278
+ should_1.default.deepEqual(txJson.transactionVersion, Number(resources_2.testnetMaterial.txVersion));
279
+ should_1.default.deepEqual(txJson.chainName, resources_1.mainChainName);
280
+ should_1.default.deepEqual(txJson.eraPeriod, 64);
281
+ });
282
+ it('should build from raw signed tx', async () => {
283
+ builder.from(resources_1.rawTx.transfer.signed);
284
+ builder
285
+ .validity({ firstValid: 3933, maxDuration: 64 })
286
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
287
+ const tx = await builder.build();
288
+ const txJson = tx.toJson();
289
+ should_1.default.deepEqual(txJson.amount, '2000000000');
290
+ should_1.default.deepEqual(txJson.to, '2FWxCYz2UYTTB4a4VNs8kSktnRo7nZGxu39hntVdFHd2SVpB');
291
+ should_1.default.deepEqual(txJson.sender, '2CimBChrXfEdQLzSCwJey7FvRvBLGPxvYmXa3TWtgxEGhHxx');
292
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
293
+ should_1.default.deepEqual(txJson.referenceBlock, '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
294
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.mainGenesisHash);
295
+ should_1.default.deepEqual(txJson.specVersion, Number(resources_2.testnetMaterial.specVersion));
296
+ should_1.default.deepEqual(txJson.nonce, 34);
297
+ should_1.default.deepEqual(txJson.tip, 0);
298
+ should_1.default.deepEqual(txJson.transactionVersion, Number(resources_2.testnetMaterial.txVersion));
299
+ should_1.default.deepEqual(txJson.chainName, resources_1.mainChainName);
300
+ should_1.default.deepEqual(txJson.eraPeriod, 64);
301
+ });
302
+ it('should build from raw unsigned tx', async () => {
303
+ builder.from(resources_1.rawTx.transfer.unsigned);
304
+ builder
305
+ .validity({ firstValid: 3933, maxDuration: 64 })
306
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
307
+ .sender({ address: sender.address })
308
+ .addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
309
+ const tx = await builder.build();
310
+ const txJson = tx.toJson();
311
+ should_1.default.deepEqual(txJson.amount, '2000000000');
312
+ should_1.default.deepEqual(txJson.to, '2FWxCYz2UYTTB4a4VNs8kSktnRo7nZGxu39hntVdFHd2SVpB');
313
+ should_1.default.deepEqual(txJson.sender, sender.address);
314
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
315
+ should_1.default.deepEqual(txJson.referenceBlock, '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
316
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.mainGenesisHash);
317
+ should_1.default.deepEqual(txJson.specVersion, Number(resources_2.testnetMaterial.specVersion));
318
+ should_1.default.deepEqual(txJson.nonce, 36);
319
+ should_1.default.deepEqual(txJson.eraPeriod, 64);
320
+ should_1.default.deepEqual(txJson.tip, 0);
321
+ should_1.default.deepEqual(txJson.transactionVersion, Number(resources_2.testnetMaterial.txVersion));
322
+ should_1.default.deepEqual(txJson.chainName, resources_1.mainChainName);
323
+ });
324
+ });
325
+ });
326
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci90cmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsb0RBQTRCO0FBQzVCLGtEQUEwQjtBQUMxQiwwQ0FBbUQ7QUFDbkQsc0NBQXFDO0FBRXJDLCtDQVF5QjtBQUN6QixpQ0FBNkQ7QUFDN0Qsc0RBQXlEO0FBRXpELFFBQVEsQ0FBQyxrQ0FBa0MsRUFBRSxHQUFHLEVBQUU7SUFDaEQsSUFBSSxPQUF3QixDQUFDO0lBRTdCLE1BQU0sTUFBTSxHQUFHLG9CQUFRLENBQUMsUUFBUSxDQUFDO0lBQ2pDLE1BQU0sUUFBUSxHQUFHLG9CQUFRLENBQUMsUUFBUSxDQUFDO0lBRW5DLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxNQUFNLE1BQU0sR0FBRyxJQUFBLHNCQUFlLEdBQUUsQ0FBQztRQUNqQyxPQUFPLEdBQUcsSUFBSSxxQkFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6RixDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7UUFDakMsRUFBRSxDQUFDLDRCQUE0QixFQUFFLEdBQUcsRUFBRTtZQUNwQyxNQUFNLEdBQUcsR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1lBQ2xELGdCQUFNLENBQUMsTUFBTSxDQUNYLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFDcEMsQ0FBQyxDQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssb0RB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LENBQUM7WUFDbkMsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN2QyxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLGdCQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLENBQUMsMkJBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQy9FLGdCQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUseUJBQWEsQ0FBQyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgeyBUcmFuc2ZlckJ1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliJztcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vc3JjJztcblxuaW1wb3J0IHtcbiAgYWNjb3VudHMsXG4gIHJhd1R4LFxuICBjaGFpbk5hbWUsXG4gIGdlbmVzaXNIYXNoLFxuICBtb2NrVHNzU2lnbmF0dXJlLFxuICBtYWluR2VuZXNpc0hhc2gsXG4gIG1haW5DaGFpbk5hbWUsXG59IGZyb20gJy4uLy4uL3Jlc291cmNlcyc7XG5pbXBvcnQgeyBidWlsZE1haW5uZXRDb25maWcsIGJ1aWxkVGVzdENvbmZpZyB9IGZyb20gJy4vYmFzZSc7XG5pbXBvcnQgeyB0ZXN0bmV0TWF0ZXJpYWwgfSBmcm9tICcuLi8uLi8uLi9zcmMvcmVzb3VyY2VzJztcblxuZGVzY3JpYmUoJ1BvbHl4IFRyYW5zZmVyIEJ1aWxkZXIgLSBUZXN0bmV0JywgKCkgPT4ge1xuICBsZXQgYnVpbGRlcjogVHJhbnNmZXJCdWlsZGVyO1xuXG4gIGNvbnN0IHNlbmRlciA9IGFjY291bnRzLmFjY291bnQxO1xuICBjb25zdCByZWNlaXZlciA9IGFjY291bnRzLmFjY291bnQyO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IGJ1aWxkVGVzdENvbmZpZygpO1xuICAgIGJ1aWxkZXIgPSBuZXcgVHJhbnNmZXJCdWlsZGVyKGNvbmZpZykubWF0ZXJpYWwodXRpbHMuZ2V0TWF0ZXJpYWwoY29uZmlnLm5ldHdvcmsudHlwZSkpO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2V0dGVyIHZhbGlkYXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSB0byBhZGRyZXNzJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc3B5ID0gc2lub24uc3B5KGJ1aWxkZXIsICd2YWxpZGF0ZUFkZHJlc3MnKTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IGJ1aWxkZXIudG8oeyBhZGRyZXNzOiAnYXNkJyB9KSxcbiAgICAgICAgKGU6IEVycm9yKSA9PiBlLm1lc3NhZ2UgPT09IGBUaGUgYWRkcmVzcyAnYXNkJyBpcyBub3QgYSB3ZWxsLWZvcm1lZCBkb3QgYWRkcmVzc2BcbiAgICAgICk7XG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IGJ1aWxkZXIudG8oeyBhZGRyZXNzOiBzZW5kZXIuYWRkcmVzcyB9KSk7XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkVHdpY2Uoc3B5KTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIHRyYW5zZmVyIGFtb3VudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHNweSA9IHNpbm9uLnNweShidWlsZGVyLCAndmFsaWRhdGVWYWx1ZScpO1xuICAgICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICAgKCkgPT4gYnVpbGRlci5hbW91bnQoJy0xJyksXG4gICAgICAgIChlOiBFcnJvcikgPT4gZS5tZXNzYWdlID09PSAnVmFsdWUgY2Fubm90IGJlIGxlc3MgdGhhbiB6ZXJvJ1xuICAgICAgKTtcbiAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4gYnVpbGRlci5hbW91bnQoJzEwMDAnKSk7XG4gICAgICBzaW5vbi5hc3NlcnQuY2FsbGVkVHdpY2Uoc3B5KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2J1aWxkIHRyYW5zZmVyIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgYnVpbGQgYSB0cmFuc2ZlciB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLmFtb3VudCgnOTAwMzQyMzUyMzUzMjInKVxuICAgICAgICAudG8oeyBhZGRyZXNzOiByZWNlaXZlci5hZGRyZXNzIH0pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXIuYWRkcmVzcyB9KVxuICAgICAgICAubWVtbygnMCcpXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDIwMCB9KVxuICAgICAgICAuZmVlKHsgYW1vdW50OiAwLCB0eXBlOiAndGlwJyB9KTtcbiAgICAgIGJ1aWxkZXIuYWRkU2lnbmF0dXJlKHsgcHViOiBzZW5kZXIucHVibGljS2V5IH0sIEJ1ZmZlci5mcm9tKG1vY2tUc3NTaWduYXR1cmUsICdoZXgnKSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uYW1vdW50LCAnOTAwMzQyMzUyMzUzMjInKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRvLCByZWNlaXZlci5hZGRyZXNzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNlbmRlciwgc2VuZGVyLmFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uYmxvY2tOdW1iZXIsIDM5MzMpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ucmVmZXJlbmNlQmxvY2ssICcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmdlbmVzaXNIYXNoLCBnZW5lc2lzSGFzaCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zcGVjVmVyc2lvbiwgTnVtYmVyKHRlc3RuZXRNYXRlcmlhbC5zcGVjVmVyc2lvbikpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ubm9uY2UsIDIwMCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50aXAsIDApO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24udHJhbnNhY3Rpb25WZXJzaW9uLCBOdW1iZXIodGVzdG5ldE1hdGVyaWFsLnR4VmVyc2lvbikpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uY2hhaW5OYW1lLCB0ZXN0bmV0TWF0ZXJpYWwuY2hhaW5OYW1lKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmVyYVBlcmlvZCwgNjQpO1xuXG4gICAgICBjb25zdCBpbnB1dHMgPSB0eC5pbnB1dHNbMF07XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKGlucHV0cy5hZGRyZXNzLCBzZW5kZXIuYWRkcmVzcyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKGlucHV0cy52YWx1ZSwgJzkwMDM0MjM1MjM1MzIyJyk7XG5cbiAgICAgIGNvbnN0IG91dHB1dHMgPSB0eC5vdXRwdXRzWzBdO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChvdXRwdXRzLmFkZHJlc3MsIHJlY2VpdmVyLmFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChvdXRwdXRzLnZhbHVlLCAnOTAwMzQyMzUyMzUzMjInKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgYSB0cmFuc2FjdGlvbiB3aXRoIHplcm8gbWF4RHVyYXRpb24gKGltbW9ydGFsKScsIGFzeW5jICgpID0+IHtcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLmFtb3VudCgnOTAwMzQyMzUyMzUzMjInKVxuICAgICAgICAudG8oeyBhZGRyZXNzOiByZWNlaXZlci5hZGRyZXNzIH0pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXIuYWRkcmVzcyB9KVxuICAgICAgICAubWVtbygnMCcpXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiAwIH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMjAwIH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pO1xuICAgICAgYnVpbGRlci5hZGRTaWduYXR1cmUoeyBwdWI6IHNlbmRlci5wdWJsaWNLZXkgfSwgQnVmZmVyLmZyb20obW9ja1Rzc1NpZ25hdHVyZSwgJ2hleCcpKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5hbW91bnQsICc5MDAzNDIzNTIzNTMyMicpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24udG8sIHJlY2VpdmVyLmFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uc2VuZGVyLCBzZW5kZXIuYWRkcmVzcyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5ibG9ja051bWJlciwgMzkzMyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5yZWZlcmVuY2VCbG9jaywgJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZ2VuZXNpc0hhc2gsIGdlbmVzaXNIYXNoKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNwZWNWZXJzaW9uLCBOdW1iZXIodGVzdG5ldE1hdGVyaWFsLnNwZWNWZXJzaW9uKSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5ub25jZSwgMjAwKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRpcCwgMCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50cmFuc2FjdGlvblZlcnNpb24sIE51bWJlcih0ZXN0bmV0TWF0ZXJpYWwudHhWZXJzaW9uKSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5jaGFpbk5hbWUsIGNoYWluTmFtZSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5lcmFQZXJpb2QsIDApO1xuXG4gICAgICBjb25zdCBpbnB1dHMgPSB0eC5pbnB1dHNbMF07XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKGlucHV0cy5hZGRyZXNzLCBzZW5kZXIuYWRkcmVzcyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKGlucHV0cy52YWx1ZSwgJzkwMDM0MjM1MjM1MzIyJyk7XG5cbiAgICAgIGNvbnN0IG91dHB1dHMgPSB0eC5vdXRwdXRzWzBdO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChvdXRwdXRzLmFkZHJlc3MsIHJlY2VpdmVyLmFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChvdXRwdXRzLnZhbHVlLCAnOTAwMzQyMzUyMzUzMjInKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgYW4gdW5zaWduZWQgdHJhbnNmZXIgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBidWlsZGVyXG4gICAgICAgIC5hbW91bnQoJzkwMDM0MjM1MjM1MzIyJylcbiAgICAgICAgLnRvKHsgYWRkcmVzczogcmVjZWl2ZXIuYWRkcmVzcyB9KVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyLmFkZHJlc3MgfSlcbiAgICAgICAgLm1lbW8oJzAnKVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAyMDAgfSlcbiAgICAgICAgLmZlZSh7IGFtb3VudDogMCwgdHlwZTogJ3RpcCcgfSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uYW1vdW50LCAnOTAwMzQyMzUyMzUzMjInKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRvLCByZWNlaXZlci5hZGRyZXNzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNlbmRlciwgc2VuZGVyLmFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uYmxvY2tOdW1iZXIsIDM5MzMpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ucmVmZXJlbmNlQmxvY2ssICcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmdlbmVzaXNIYXNoLCBnZW5lc2lzSGFzaCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zcGVjVmVyc2lvbiwgTnVtYmVyKHRlc3RuZXRNYXRlcmlhbC5zcGVjVmVyc2lvbikpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ubm9uY2UsIDIwMCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50aXAsIDApO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24udHJhbnNhY3Rpb25WZXJzaW9uLCBOdW1iZXIodGVzdG5ldE1hdGVyaWFsLnR4VmVyc2lvbikpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uY2hhaW5OYW1lLCBjaGFpbk5hbWUpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZXJhUGVyaW9kLCA2NCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGZyb20gcmF3IHNpZ25lZCB0eCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGJ1aWxkZXIuZnJvbShyYXdUeC50cmFuc2Zlci5zaWduZWQpO1xuICAgICAgYnVpbGRlclxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5hbW91bnQsICcyMDAwMDAwMDAwJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50bywgJzVGOGp4S0U4MUdoRnJwaHlmTUZyNVVqZUF6NXdTNEFhWkZtZUZQbmY4d1RldEQ3MicpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uc2VuZGVyLCAnNUNMWXZ4d3g0UFVTNjc4TU51aE5KOUVmcFVVOXV0cllDejlXVnhvdmFjNHU5QVlEJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5ibG9ja051bWJlciwgMzkzMyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5yZWZlcmVuY2VCbG9jaywgJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZ2VuZXNpc0hhc2gsIGdlbmVzaXNIYXNoKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNwZWNWZXJzaW9uLCBOdW1iZXIodGVzdG5ldE1hdGVyaWFsLnNwZWNWZXJzaW9uKSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5ub25jZSwgMzQpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24udGlwLCAwKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRyYW5zYWN0aW9uVmVyc2lvbiwgTnVtYmVyKHRlc3RuZXRNYXRlcmlhbC50eFZlcnNpb24pKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmNoYWluTmFtZSwgY2hhaW5OYW1lKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmVyYVBlcmlvZCwgNjQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCBmcm9tIHJhdyB1bnNpZ25lZCB0eCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGJ1aWxkZXIuZnJvbShyYXdUeC50cmFuc2Zlci51bnNpZ25lZCk7XG4gICAgICBidWlsZGVyXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXIuYWRkcmVzcyB9KVxuICAgICAgICAuYWRkU2lnbmF0dXJlKHsgcHViOiBzZW5kZXIucHVibGljS2V5IH0sIEJ1ZmZlci5mcm9tKG1vY2tUc3NTaWduYXR1cmUsICdoZXgnKSk7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5hbW91bnQsICcyMDAwMDAwMDAwJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50bywgJzVGOGp4S0U4MUdoRnJwaHlmTUZyNVVqZUF6NXdTNEFhWkZtZUZQbmY4d1RldEQ3MicpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uc2VuZGVyLCBzZW5kZXIuYWRkcmVzcyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5ibG9ja051bWJlciwgMzkzMyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5yZWZlcmVuY2VCbG9jaywgJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZ2VuZXNpc0hhc2gsIGdlbmVzaXNIYXNoKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNwZWNWZXJzaW9uLCBOdW1iZXIodGVzdG5ldE1hdGVyaWFsLnNwZWNWZXJzaW9uKSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5ub25jZSwgMzYpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZXJhUGVyaW9kLCA2NCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50aXAsIDApO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24udHJhbnNhY3Rpb25WZXJzaW9uLCBOdW1iZXIodGVzdG5ldE1hdGVyaWFsLnR4VmVyc2lvbikpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uY2hhaW5OYW1lLCBjaGFpbk5hbWUpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnUG9seXggVHJhbnNmZXIgQnVpbGRlciAtIE1haW5uZXQnLCAoKSA9PiB7XG4gIGxldCBidWlsZGVyOiBUcmFuc2ZlckJ1aWxkZXI7XG5cbiAgY29uc3Qgc2VuZGVyID0gYWNjb3VudHMuYWNjb3VudDVNYWlubmV0O1xuICBjb25zdCByZWNlaXZlciA9IGFjY291bnRzLmFjY291bnQ2TWFpbm5ldDtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSBidWlsZE1haW5uZXRDb25maWcoKTtcbiAgICBidWlsZGVyID0gbmV3IFRyYW5zZmVyQnVpbGRlcihjb25maWcpLm1hdGVyaWFsKHV0aWxzLmdldE1hdGVyaWFsKGNvbmZpZy5uZXR3b3JrLnR5cGUpKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NldHRlciB2YWxpZGF0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgdG8gYWRkcmVzcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHNweSA9IHNpbm9uLnNweShidWlsZGVyLCAndmFsaWRhdGVBZGRyZXNzJyk7XG4gICAgICBhc3NlcnQudGhyb3dzKFxuICAgICAgICAoKSA9PiBidWlsZGVyLnRvKHsgYWRkcmVzczogJ2FzZCcgfSksXG4gICAgICAgIChlOiBFcnJvcikgPT4gZS5tZXNzYWdlID09PSBgVGhlIGFkZHJlc3MgJ2FzZCcgaXMgbm90IGEgd2VsbC1mb3JtZWQgZG90IGFkZHJlc3NgXG4gICAgICApO1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLnRvKHsgYWRkcmVzczogc2VuZGVyLmFkZHJlc3MgfSkpO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFR3aWNlKHNweSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSB0cmFuc2ZlciBhbW91bnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzcHkgPSBzaW5vbi5zcHkoYnVpbGRlciwgJ3ZhbGlkYXRlVmFsdWUnKTtcbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IGJ1aWxkZXIuYW1vdW50KCctMScpLFxuICAgICAgICAoZTogRXJyb3IpID0+IGUubWVzc2FnZSA9PT0gJ1ZhbHVlIGNhbm5vdCBiZSBsZXNzIHRoYW4gemVybydcbiAgICAgICk7XG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IGJ1aWxkZXIuYW1vdW50KCcxMDAwJykpO1xuICAgICAgc2lub24uYXNzZXJ0LmNhbGxlZFR3aWNlKHNweSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdidWlsZCB0cmFuc2ZlciB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGEgdHJhbnNmZXIgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBidWlsZGVyXG4gICAgICAgIC5hbW91bnQoJzkwMDM0MjM1MjM1MzIyJylcbiAgICAgICAgLnRvKHsgYWRkcmVzczogcmVjZWl2ZXIuYWRkcmVzcyB9KVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyLmFkZHJlc3MgfSlcbiAgICAgICAgLm1lbW8oJzAnKVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAyMDAgfSlcbiAgICAgICAgLmZlZSh7IGFtb3VudDogMCwgdHlwZTogJ3RpcCcgfSk7XG4gICAgICBidWlsZGVyLmFkZFNpZ25hdHVyZSh7IHB1Yjogc2VuZGVyLnB1YmxpY0tleSB9LCBCdWZmZXIuZnJvbShtb2NrVHNzU2lnbmF0dXJlLCAnaGV4JykpO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmFtb3VudCwgJzkwMDM0MjM1MjM1MzIyJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50bywgcmVjZWl2ZXIuYWRkcmVzcyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zZW5kZXIsIHNlbmRlci5hZGRyZXNzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmJsb2NrTnVtYmVyLCAzOTMzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnJlZmVyZW5jZUJsb2NrLCAnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5nZW5lc2lzSGFzaCwgbWFpbkdlbmVzaXNIYXNoKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNwZWNWZXJzaW9uLCBOdW1iZXIodGVzdG5ldE1hdGVyaWFsLnNwZWNWZXJzaW9uKSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5ub25jZSwgMjAwKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRpcCwgMCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50cmFuc2FjdGlvblZlcnNpb24sIE51bWJlcih0ZXN0bmV0TWF0ZXJpYWwudHhWZXJzaW9uKSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5jaGFpbk5hbWUsIG1haW5DaGFpbk5hbWUpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZXJhUGVyaW9kLCA2NCk7XG5cbiAgICAgIGNvbnN0IGlucHV0cyA9IHR4LmlucHV0c1swXTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwoaW5wdXRzLmFkZHJlc3MsIHNlbmRlci5hZGRyZXNzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwoaW5wdXRzLnZhbHVlLCAnOTAwMzQyMzUyMzUzMjInKTtcblxuICAgICAgY29uc3Qgb3V0cHV0cyA9IHR4Lm91dHB1dHNbMF07XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKG91dHB1dHMuYWRkcmVzcywgcmVjZWl2ZXIuYWRkcmVzcyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKG91dHB1dHMudmFsdWUsICc5MDAzNDIzNTIzNTMyMicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCBhIHRyYW5zYWN0aW9uIHdpdGggemVybyBtYXhEdXJhdGlvbiAoaW1tb3J0YWwpJywgYXN5bmMgKCkgPT4ge1xuICAgICAgYnVpbGRlclxuICAgICAgICAuYW1vdW50KCc5MDAzNDIzNTIzNTMyMicpXG4gICAgICAgIC50byh7IGFkZHJlc3M6IHJlY2VpdmVyLmFkZHJlc3MgfSlcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlci5hZGRyZXNzIH0pXG4gICAgICAgIC5tZW1vKCcwJylcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDAgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAyMDAgfSlcbiAgICAgICAgLmZlZSh7IGFtb3VudDogMCwgdHlwZTogJ3RpcCcgfSk7XG4gICAgICBidWlsZGVyLmFkZFNpZ25hdHVyZSh7IHB1Yjogc2VuZGVyLnB1YmxpY0tleSB9LCBCdWZmZXIuZnJvbShtb2NrVHNzU2lnbmF0dXJlLCAnaGV4JykpO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmFtb3VudCwgJzkwMDM0MjM1MjM1MzIyJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50bywgcmVjZWl2ZXIuYWRkcmVzcyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zZW5kZXIsIHNlbmRlci5hZGRyZXNzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmJsb2NrTnVtYmVyLCAzOTMzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnJlZmVyZW5jZUJsb2NrLCAnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5nZW5lc2lzSGFzaCwgbWFpbkdlbmVzaXNIYXNoKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNwZWNWZXJzaW9uLCBOdW1iZXIodGVzdG5ldE1hdGVyaWFsLnNwZWNWZXJzaW9uKSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5ub25jZSwgMjAwKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRpcCwgMCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50cmFuc2FjdGlvblZlcnNpb24sIE51bWJlcih0ZXN0bmV0TWF0ZXJpYWwudHhWZXJzaW9uKSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5jaGFpbk5hbWUsIG1haW5DaGFpbk5hbWUpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZXJhUGVyaW9kLCAwKTtcblxuICAgICAgY29uc3QgaW5wdXRzID0gdHguaW5wdXRzWzBdO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChpbnB1dHMuYWRkcmVzcywgc2VuZGVyLmFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChpbnB1dHMudmFsdWUsICc5MDAzNDIzNTIzNTMyMicpO1xuXG4gICAgICBjb25zdCBvdXRwdXRzID0gdHgub3V0cHV0c1swXTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwob3V0cHV0cy5hZGRyZXNzLCByZWNlaXZlci5hZGRyZXNzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwob3V0cHV0cy52YWx1ZSwgJzkwMDM0MjM1MjM1MzIyJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGFuIHVuc2lnbmVkIHRyYW5zZmVyIHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgYnVpbGRlclxuICAgICAgICAuYW1vdW50KCc5MDAzNDIzNTIzNTMyMicpXG4gICAgICAgIC50byh7IGFkZHJlc3M6IHJlY2VpdmVyLmFkZHJlc3MgfSlcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlci5hZGRyZXNzIH0pXG4gICAgICAgIC5tZW1vKCcwJylcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMjAwIH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmFtb3VudCwgJzkwMDM0MjM1MjM1MzIyJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50bywgcmVjZWl2ZXIuYWRkcmVzcyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zZW5kZXIsIHNlbmRlci5hZGRyZXNzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmJsb2NrTnVtYmVyLCAzOTMzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnJlZmVyZW5jZUJsb2NrLCAnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5nZW5lc2lzSGFzaCwgbWFpbkdlbmVzaXNIYXNoKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNwZWNWZXJzaW9uLCBOdW1iZXIodGVzdG5ldE1hdGVyaWFsLnNwZWNWZXJzaW9uKSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5ub25jZSwgMjAwKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRpcCwgMCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50cmFuc2FjdGlvblZlcnNpb24sIE51bWJlcih0ZXN0bmV0TWF0ZXJpYWwudHhWZXJzaW9uKSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5jaGFpbk5hbWUsIG1haW5DaGFpbk5hbWUpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZXJhUGVyaW9kLCA2NCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGZyb20gcmF3IHNpZ25lZCB0eCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGJ1aWxkZXIuZnJvbShyYXdUeC50cmFuc2Zlci5zaWduZWQpO1xuICAgICAgYnVpbGRlclxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5hbW91bnQsICcyMDAwMDAwMDAwJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50bywgJzJGV3hDWXoyVVlUVEI0YTRWTnM4a1NrdG5SbzduWkd4dTM5aG50VmRGSGQyU1ZwQicpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uc2VuZGVyLCAnMkNpbUJDaHJYZkVkUUx6U0N3SmV5N0Z2UnZCTEdQeHZZbVhhM1RXdGd4RUdoSHh4Jyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5ibG9ja051bWJlciwgMzkzMyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5yZWZlcmVuY2VCbG9jaywgJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZ2VuZXNpc0hhc2gsIG1haW5HZW5lc2lzSGFzaCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zcGVjVmVyc2lvbiwgTnVtYmVyKHRlc3RuZXRNYXRlcmlhbC5zcGVjVmVyc2lvbikpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ubm9uY2UsIDM0KTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRpcCwgMCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50cmFuc2FjdGlvblZlcnNpb24sIE51bWJlcih0ZXN0bmV0TWF0ZXJpYWwudHhWZXJzaW9uKSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5jaGFpbk5hbWUsIG1haW5DaGFpbk5hbWUpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZXJhUGVyaW9kLCA2NCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGZyb20gcmF3IHVuc2lnbmVkIHR4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgYnVpbGRlci5mcm9tKHJhd1R4LnRyYW5zZmVyLnVuc2lnbmVkKTtcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlci5hZGRyZXNzIH0pXG4gICAgICAgIC5hZGRTaWduYXR1cmUoeyBwdWI6IHNlbmRlci5wdWJsaWNLZXkgfSwgQnVmZmVyLmZyb20obW9ja1Rzc1NpZ25hdHVyZSwgJ2hleCcpKTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmFtb3VudCwgJzIwMDAwMDAwMDAnKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRvLCAnMkZXeENZejJVWVRUQjRhNFZOczhrU2t0blJvN25aR3h1MzlobnRWZEZIZDJTVnBCJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zZW5kZXIsIHNlbmRlci5hZGRyZXNzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmJsb2NrTnVtYmVyLCAzOTMzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnJlZmVyZW5jZUJsb2NrLCAnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5nZW5lc2lzSGFzaCwgbWFpbkdlbmVzaXNIYXNoKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNwZWNWZXJzaW9uLCBOdW1iZXIodGVzdG5ldE1hdGVyaWFsLnNwZWNWZXJzaW9uKSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5ub25jZSwgMzYpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZXJhUGVyaW9kLCA2NCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50aXAsIDApO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24udHJhbnNhY3Rpb25WZXJzaW9uLCBOdW1iZXIodGVzdG5ldE1hdGVyaWFsLnR4VmVyc2lvbikpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uY2hhaW5OYW1lLCBtYWluQ2hhaW5OYW1lKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=unbondBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unbondBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/unbondBuilder.ts"],"names":[],"mappings":""}
@@ -0,0 +1,144 @@
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 txwrapper_polkadot_1 = require("@substrate/txwrapper-polkadot");
7
+ const statics_1 = require("@bitgo-beta/statics");
8
+ const should_1 = __importDefault(require("should"));
9
+ const sinon_1 = __importDefault(require("sinon"));
10
+ const lib_1 = require("../../../src/lib");
11
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
12
+ const utils_1 = __importDefault(require("../../../src/lib/utils"));
13
+ const resources_1 = require("../../resources");
14
+ function createMockTransaction(txData) {
15
+ return {
16
+ id: '123',
17
+ type: sdk_core_1.TransactionType.StakingDeactivate,
18
+ toBroadcastFormat: () => txData,
19
+ inputs: [],
20
+ outputs: [],
21
+ signature: ['mock-signature'],
22
+ toJson: () => ({
23
+ id: '123',
24
+ type: 'StakingDeactivate',
25
+ sender: resources_1.accounts.account1.address,
26
+ referenceBlock: '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d',
27
+ blockNumber: 100,
28
+ genesisHash: '0x',
29
+ nonce: 1,
30
+ tip: 0,
31
+ specVersion: 1,
32
+ transactionVersion: 1,
33
+ chainName: 'Polymesh',
34
+ inputs: [],
35
+ outputs: [],
36
+ }),
37
+ };
38
+ }
39
+ describe('Polyx Unbond Builder', function () {
40
+ let builder;
41
+ const factory = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tpolyx'));
42
+ const senderAddress = resources_1.accounts.account1.address;
43
+ const testAmount = '10000';
44
+ beforeEach(() => {
45
+ builder = factory.getUnbondBuilder();
46
+ });
47
+ describe('setter validation', () => {
48
+ it('should validate unbond amount', () => {
49
+ const spy = sinon_1.default.spy(builder, 'validateValue');
50
+ should_1.default.throws(() => builder.amount('-1'), /Value cannot be less than zero/);
51
+ should_1.default.doesNotThrow(() => builder.amount('1000'));
52
+ sinon_1.default.assert.calledTwice(spy);
53
+ });
54
+ });
55
+ describe('Build and Sign', function () {
56
+ it('should build an unbond transaction', async () => {
57
+ builder
58
+ .amount(testAmount)
59
+ .sender({ address: senderAddress })
60
+ .validity({ firstValid: 3933, maxDuration: 64 })
61
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
62
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 100 });
63
+ const mockTx = createMockTransaction(resources_1.stakingTx.unbond.unsigned);
64
+ sinon_1.default.stub(builder, 'build').resolves(mockTx);
65
+ const tx = await builder.build();
66
+ should_1.default.exist(tx);
67
+ should_1.default.equal(builder.getAmount(), testAmount);
68
+ });
69
+ });
70
+ describe('Transaction Validation', function () {
71
+ it('should build, decode, and validate a real unbond transaction', () => {
72
+ // Build the transaction with real parameters
73
+ builder
74
+ .amount(testAmount)
75
+ .sender({ address: senderAddress })
76
+ .validity({ firstValid: 3933, maxDuration: 64 })
77
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
78
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 100 });
79
+ // Set up material for decoding
80
+ const material = utils_1.default.getMaterial(statics_1.coins.get('tpolyx').network.type);
81
+ builder.material(material);
82
+ // Build the actual unsigned transaction
83
+ const unsignedTx = builder['buildTransaction']();
84
+ const registry = builder['_registry'];
85
+ // Decode the actual built transaction
86
+ const decodedTx = (0, txwrapper_polkadot_1.decode)(unsignedTx, {
87
+ metadataRpc: material.metadata,
88
+ registry: registry,
89
+ });
90
+ // Validate the decoded transaction structure
91
+ should_1.default.equal(decodedTx.method.name, 'unbond');
92
+ should_1.default.equal(decodedTx.method.pallet, 'staking');
93
+ const unbondArgs = decodedTx.method.args;
94
+ should_1.default.equal(unbondArgs.value, testAmount);
95
+ // validate using the builder's validation method
96
+ should_1.default.doesNotThrow(() => {
97
+ builder.validateDecodedTransaction(decodedTx);
98
+ });
99
+ });
100
+ it('should reject non-unbond transactions', () => {
101
+ const mockDecodedTx = {
102
+ method: {
103
+ name: 'bond',
104
+ pallet: 'staking',
105
+ args: {},
106
+ },
107
+ };
108
+ should_1.default.throws(() => {
109
+ builder.validateDecodedTransaction(mockDecodedTx);
110
+ }, /Invalid transaction type/);
111
+ });
112
+ it('should validate field validation', () => {
113
+ builder.amount('1000');
114
+ should_1.default.doesNotThrow(() => {
115
+ builder.testValidateFields();
116
+ });
117
+ });
118
+ });
119
+ describe('From Raw Transaction', function () {
120
+ it('should rebuild from real unbond transaction', async () => {
121
+ // First build a transaction to get a real raw transaction
122
+ const originalBuilder = factory.getUnbondBuilder();
123
+ originalBuilder
124
+ .amount(testAmount)
125
+ .sender({ address: senderAddress })
126
+ .validity({ firstValid: 3933, maxDuration: 64 })
127
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
128
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 100 });
129
+ // Set up material
130
+ const material = utils_1.default.getMaterial(statics_1.coins.get('tpolyx').network.type);
131
+ originalBuilder.material(material);
132
+ // Build the transaction and get the serialized hex
133
+ const tx = await originalBuilder.build();
134
+ const rawTxHex = tx.toBroadcastFormat();
135
+ // Create a new builder and reconstruct from the transaction hex
136
+ const newBuilder = factory.getUnbondBuilder();
137
+ newBuilder.material(material);
138
+ newBuilder.from(rawTxHex);
139
+ // Verify the reconstructed builder has the same parameters
140
+ should_1.default.equal(newBuilder.getAmount(), testAmount);
141
+ });
142
+ });
143
+ });
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5ib25kQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvdW5ib25kQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLHNFQUF1RDtBQUN2RCxpREFBNEM7QUFDNUMsb0RBQTRCO0FBQzVCLGtEQUEwQjtBQUMxQiwwQ0FBeUY7QUFDekYsbURBQXVEO0FBQ3ZELG1FQUEyQztBQUUzQywrQ0FBc0Q7QUFFdEQsU0FBUyxxQkFBcUIsQ0FBQyxNQUFjO0lBQzNDLE9BQU87UUFDTCxFQUFFLEVBQUUsS0FBSztRQUNULElBQUksRUFBRSwwQkFBZSxDQUFDLGlCQUFpQjtRQUN2QyxpQkFBaUIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNO1FBQy9CLE1BQU0sRUFBRSxFQUFFO1FBQ1YsT0FBTyxFQUFFLEVBQUU7UUFDWCxTQUFTLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztRQUM3QixNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUNiLEVBQUUsRUFBRSxLQUFLO1lBQ1QsSUFBSSxFQUFFLG1CQUFtQjtZQUN6QixNQUFNLEVBQUUsb0JBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTztZQUNqQyxjQUFjLEVBQUUsb0VBQW9FO1lBQ3BGLFdBQVcsRUFBRSxHQUFHO1lBQ2hCLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLEtBQUssRUFBRSxDQUFDO1lBQ1IsR0FBRyxFQUFFLENBQUM7WUFDTixXQUFXLEVBQUUsQ0FBQztZQUNkLGtCQUFrQixFQUFFLENBQUM7WUFDckIsU0FBUyxFQUFFLFVBQVU7WUFDckIsTUFBTSxFQUFFLEVBQUU7WUFDVixPQUFPLEVBQUUsRUFBRTtTQUNaLENBQUM7S0FDSCxDQUFDO0FBQ0osQ0FBQztBQUVELFFBQVEsQ0FBQyxzQkFBc0IsRUFBRTtJQUMvQixJQUFJLE9BQXNCLENBQUM7SUFDM0IsTUFBTSxPQUFPLEdBQUcsSUFBSSwrQkFB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TUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFFeEMsZ0VBQWdFO1lBQ2hFLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzlDLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUIsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUUxQiwyREFBMkQ7WUFDM0QsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlY29kZWRTaWduaW5nUGF5bG9hZCB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLWNvcmUnO1xuaW1wb3J0IHsgZGVjb2RlIH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItcG9sa2Fkb3QnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LCBVbmJvbmRCdWlsZGVyLCBUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uLy4uLy4uL3NyYy9saWIvdXRpbHMnO1xuXG5pbXBvcnQgeyBhY2NvdW50cywgc3Rha2luZ1R4IH0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzJztcblxuZnVuY3Rpb24gY3JlYXRlTW9ja1RyYW5zYWN0aW9uKHR4RGF0YTogc3RyaW5nKTogUGFydGlhbDxUcmFuc2FjdGlvbj4ge1xuICByZXR1cm4ge1xuICAgIGlkOiAnMTIzJyxcbiAgICB0eXBlOiBUcmFuc2FjdGlvblR5cGUuU3Rha2luZ0RlYWN0aXZhdGUsXG4gICAgdG9Ccm9hZGNhc3RGb3JtYXQ6ICgpID0+IHR4RGF0YSxcbiAgICBpbnB1dHM6IFtdLFxuICAgIG91dHB1dHM6IFtdLFxuICAgIHNpZ25hdHVyZTogWydtb2NrLXNpZ25hdHVyZSddLFxuICAgIHRvSnNvbjogKCkgPT4gKHtcbiAgICAgIGlkOiAnMTIzJyxcbiAgICAgIHR5cGU6ICdTdGFraW5nRGVhY3RpdmF0ZScsXG4gICAgICBzZW5kZXI6IGFjY291bnRzLmFjY291bnQxLmFkZHJlc3MsXG4gICAgICByZWZlcmVuY2VCbG9jazogJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcsXG4gICAgICBibG9ja051bWJlcjogMTAwLFxuICAgICAgZ2VuZXNpc0hhc2g6ICcweCcsXG4gICAgICBub25jZTogMSxcbiAgICAgIHRpcDogMCxcbiAgICAgIHNwZWNWZXJzaW9uOiAxLFxuICAgICAgdHJhbnNhY3Rpb25WZXJzaW9uOiAxLFxuICAgICAgY2hhaW5OYW1lOiAnUG9seW1lc2gnLFxuICAgICAgaW5wdXRzOiBbXSxcbiAgICAgIG91dHB1dHM6IFtdLFxuICAgIH0pLFxuICB9O1xufVxuXG5kZXNjcmliZSgnUG9seXggVW5ib25kIEJ1aWxkZXInLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBidWlsZGVyOiBVbmJvbmRCdWlsZGVyO1xuICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0cG9seXgnKSk7XG5cbiAgY29uc3Qgc2VuZGVyQWRkcmVzcyA9IGFjY291bnRzLmFjY291bnQxLmFkZHJlc3M7XG4gIGNvbnN0IHRlc3RBbW91bnQgPSAnMTAwMDAnO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGJ1aWxkZXIgPSBmYWN0b3J5LmdldFVuYm9uZEJ1aWxkZXIoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NldHRlciB2YWxpZGF0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgdW5ib25kIGFtb3VudCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHNweSA9IHNpbm9uLnNweShidWlsZGVyLCAndmFsaWRhdGVWYWx1ZScpO1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiBidWlsZGVyLmFtb3VudCgnLTEnKSwgL1ZhbHVlIGNhbm5vdCBiZSBsZXNzIHRoYW4gemVyby8pO1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLmFtb3VudCgnMTAwMCcpKTtcbiAgICAgIHNpbm9uLmFzc2VydC5jYWxsZWRUd2ljZShzcHkpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQnVpbGQgYW5kIFNpZ24nLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBidWlsZCBhbiB1bmJvbmQgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBidWlsZGVyXG4gICAgICAgIC5hbW91bnQodGVzdEFtb3VudClcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlckFkZHJlc3MgfSlcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMTAwIH0pO1xuXG4gICAgICBjb25zdCBtb2NrVHggPSBjcmVhdGVNb2NrVHJhbnNhY3Rpb24oc3Rha2luZ1R4LnVuYm9uZC51bnNpZ25lZCk7XG4gICAgICBzaW5vbi5zdHViKGJ1aWxkZXIsICdidWlsZCcpLnJlc29sdmVzKG1vY2tUeCBhcyBUcmFuc2FjdGlvbik7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgICAgc2hvdWxkLmV4aXN0KHR4KTtcblxuICAgICAgc2hvdWxkLmVxdWFsKGJ1aWxkZXIuZ2V0QW1vdW50KCksIHRlc3RBbW91bnQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnVHJhbnNhY3Rpb24gVmFsaWRhdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIGJ1aWxkLCBkZWNvZGUsIGFuZCB2YWxpZGF0ZSBhIHJlYWwgdW5ib25kIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgICAgLy8gQnVpbGQgdGhlIHRyYW5zYWN0aW9uIHdpdGggcmVhbCBwYXJhbWV0ZXJzXG4gICAgICBidWlsZGVyXG4gICAgICAgIC5hbW91bnQodGVzdEFtb3VudClcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlckFkZHJlc3MgfSlcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMTAwIH0pO1xuXG4gICAgICAvLyBTZXQgdXAgbWF0ZXJpYWwgZm9yIGRlY29kaW5nXG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldE1hdGVyaWFsKGNvaW5zLmdldCgndHBvbHl4JykubmV0d29yay50eXBlKTtcbiAgICAgIGJ1aWxkZXIubWF0ZXJpYWwobWF0ZXJpYWwpO1xuXG4gICAgICAvLyBCdWlsZCB0aGUgYWN0dWFsIHVuc2lnbmVkIHRyYW5zYWN0aW9uXG4gICAgICBjb25zdCB1bnNpZ25lZFR4ID0gYnVpbGRlclsnYnVpbGRUcmFuc2FjdGlvbiddKCk7XG4gICAgICBjb25zdCByZWdpc3RyeSA9IGJ1aWxkZXJbJ19yZWdpc3RyeSddO1xuXG4gICAgICAvLyBEZWNvZGUgdGhlIGFjdHVhbCBidWlsdCB0cmFuc2FjdGlvblxuICAgICAgY29uc3QgZGVjb2RlZFR4ID0gZGVjb2RlKHVuc2lnbmVkVHgsIHtcbiAgICAgICAgbWV0YWRhdGFScGM6IG1hdGVyaWFsLm1ldGFkYXRhLFxuICAgICAgICByZWdpc3RyeTogcmVnaXN0cnksXG4gICAgICB9KTtcblxuICAgICAgLy8gVmFsaWRhdGUgdGhlIGRlY29kZWQgdHJhbnNhY3Rpb24gc3RydWN0dXJlXG4gICAgICBzaG91bGQuZXF1YWwoZGVjb2RlZFR4Lm1ldGhvZC5uYW1lLCAndW5ib25kJyk7XG4gICAgICBzaG91bGQuZXF1YWwoZGVjb2RlZFR4Lm1ldGhvZC5wYWxsZXQsICdzdGFraW5nJyk7XG5cbiAgICAgIGNvbnN0IHVuYm9uZEFyZ3MgPSBkZWNvZGVkVHgubWV0aG9kLmFyZ3MgYXMgeyB2YWx1ZTogc3RyaW5nIH07XG4gICAgICBzaG91bGQuZXF1YWwodW5ib25kQXJncy52YWx1ZSwgdGVzdEFtb3VudCk7XG5cbiAgICAgIC8vIHZhbGlkYXRlIHVzaW5nIHRoZSBidWlsZGVyJ3MgdmFsaWRhdGlvbiBtZXRob2RcbiAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4ge1xuICAgICAgICBidWlsZGVyLnZhbGlkYXRlRGVjb2RlZFRyYW5zYWN0aW9uKGRlY29kZWRUeCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IG5vbi11bmJvbmQgdHJhbnNhY3Rpb25zJywgKCkgPT4ge1xuICAgICAgY29uc3QgbW9ja0RlY29kZWRUeDogRGVjb2RlZFNpZ25pbmdQYXlsb2FkID0ge1xuICAgICAgICBtZXRob2Q6IHtcbiAgICAgICAgICBuYW1lOiAnYm9uZCcsXG4gICAgICAgICAgcGFsbGV0OiAnc3Rha2luZycsXG4gICAgICAgICAgYXJnczoge30sXG4gICAgICAgIH0sXG4gICAgICB9IGFzIHVua25vd24gYXMgRGVjb2RlZFNpZ25pbmdQYXlsb2FkO1xuXG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IHtcbiAgICAgICAgYnVpbGRlci52YWxpZGF0ZURlY29kZWRUcmFuc2FjdGlvbihtb2NrRGVjb2RlZFR4KTtcbiAgICAgIH0sIC9JbnZhbGlkIHRyYW5zYWN0aW9uIHR5cGUvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdmFsaWRhdGUgZmllbGQgdmFsaWRhdGlvbicsICgpID0+IHtcbiAgICAgIGJ1aWxkZXIuYW1vdW50KCcxMDAwJyk7XG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IHtcbiAgICAgICAgYnVpbGRlci50ZXN0VmFsaWRhdGVGaWVsZHMoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnRnJvbSBSYXcgVHJhbnNhY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCByZWJ1aWxkIGZyb20gcmVhbCB1bmJvbmQgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBGaXJzdCBidWlsZCBhIHRyYW5zYWN0aW9uIHRvIGdldCBhIHJlYWwgcmF3IHRyYW5zYWN0aW9uXG4gICAgICBjb25zdCBvcmlnaW5hbEJ1aWxkZXIgPSBmYWN0b3J5LmdldFVuYm9uZEJ1aWxkZXIoKTtcbiAgICAgIG9yaWdpbmFsQnVpbGRlclxuICAgICAgICAuYW1vdW50KHRlc3RBbW91bnQpXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDEwMCB9KTtcblxuICAgICAgLy8gU2V0IHVwIG1hdGVyaWFsXG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldE1hdGVyaWFsKGNvaW5zLmdldCgndHBvbHl4JykubmV0d29yay50eXBlKTtcbiAgICAgIG9yaWdpbmFsQnVpbGRlci5tYXRlcmlhbChtYXRlcmlhbCk7XG5cbiAgICAgIC8vIEJ1aWxkIHRoZSB0cmFuc2FjdGlvbiBhbmQgZ2V0IHRoZSBzZXJpYWxpemVkIGhleFxuICAgICAgY29uc3QgdHggPSBhd2FpdCBvcmlnaW5hbEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHJhd1R4SGV4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgICAgLy8gQ3JlYXRlIGEgbmV3IGJ1aWxkZXIgYW5kIHJlY29uc3RydWN0IGZyb20gdGhlIHRyYW5zYWN0aW9uIGhleFxuICAgICAgY29uc3QgbmV3QnVpbGRlciA9IGZhY3RvcnkuZ2V0VW5ib25kQnVpbGRlcigpO1xuICAgICAgbmV3QnVpbGRlci5tYXRlcmlhbChtYXRlcmlhbCk7XG4gICAgICBuZXdCdWlsZGVyLmZyb20ocmF3VHhIZXgpO1xuXG4gICAgICAvLyBWZXJpZnkgdGhlIHJlY29uc3RydWN0ZWQgYnVpbGRlciBoYXMgdGhlIHNhbWUgcGFyYW1ldGVyc1xuICAgICAgc2hvdWxkLmVxdWFsKG5ld0J1aWxkZXIuZ2V0QW1vdW50KCksIHRlc3RBbW91bnQpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=withdrawUnbondedBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withdrawUnbondedBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/withdrawUnbondedBuilder.ts"],"names":[],"mappings":""}