@bitgo-beta/sdk-coin-polyx 1.0.0-alpha.21 → 1.0.0-alpha.211

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 (225) 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 +302 -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 +129 -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 +103 -0
  16. package/dist/src/lib/constants.d.ts +21 -0
  17. package/dist/src/lib/constants.d.ts.map +1 -0
  18. package/dist/src/lib/constants.js +24 -0
  19. package/dist/src/lib/hexTokenTransferBuilder.d.ts +24 -0
  20. package/dist/src/lib/hexTokenTransferBuilder.d.ts.map +1 -0
  21. package/dist/src/lib/hexTokenTransferBuilder.js +46 -0
  22. package/dist/src/lib/hexTransferBuilder.d.ts +28 -0
  23. package/dist/src/lib/hexTransferBuilder.d.ts.map +1 -0
  24. package/dist/src/lib/hexTransferBuilder.js +51 -0
  25. package/dist/src/lib/iface.d.ts +249 -0
  26. package/dist/src/lib/iface.d.ts.map +1 -1
  27. package/dist/src/lib/iface.js +48 -1
  28. package/dist/src/lib/index.d.ts +36 -0
  29. package/dist/src/lib/index.d.ts.map +1 -1
  30. package/dist/src/lib/index.js +82 -5
  31. package/dist/src/lib/nominateBuilder.d.ts +18 -0
  32. package/dist/src/lib/nominateBuilder.d.ts.map +1 -0
  33. package/dist/src/lib/nominateBuilder.js +101 -0
  34. package/dist/src/lib/preApproveAssetBuilder.d.ts +33 -0
  35. package/dist/src/lib/preApproveAssetBuilder.d.ts.map +1 -0
  36. package/dist/src/lib/preApproveAssetBuilder.js +77 -0
  37. package/dist/src/lib/registerDidWithCDDBuilder.d.ts +7 -2
  38. package/dist/src/lib/registerDidWithCDDBuilder.d.ts.map +1 -1
  39. package/dist/src/lib/registerDidWithCDDBuilder.js +22 -3
  40. package/dist/src/lib/rejectInstructionBuilder.d.ts +29 -0
  41. package/dist/src/lib/rejectInstructionBuilder.d.ts.map +1 -0
  42. package/dist/src/lib/rejectInstructionBuilder.js +89 -0
  43. package/dist/src/lib/tokenTransferBuilder.d.ts +64 -0
  44. package/dist/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  45. package/dist/src/lib/tokenTransferBuilder.js +167 -0
  46. package/dist/src/lib/transaction.d.ts +30 -0
  47. package/dist/src/lib/transaction.d.ts.map +1 -0
  48. package/dist/src/lib/transaction.js +211 -0
  49. package/dist/src/lib/transactionBuilderFactory.d.ts +59 -1
  50. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  51. package/dist/src/lib/transactionBuilderFactory.js +288 -8
  52. package/dist/src/lib/transferBuilder.d.ts +4 -2
  53. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  54. package/dist/src/lib/transferBuilder.js +12 -5
  55. package/dist/src/lib/txnSchema.d.ts +67 -0
  56. package/dist/src/lib/txnSchema.d.ts.map +1 -1
  57. package/dist/src/lib/txnSchema.js +231 -2
  58. package/dist/src/lib/unbondBuilder.d.ts +37 -0
  59. package/dist/src/lib/unbondBuilder.d.ts.map +1 -0
  60. package/dist/src/lib/unbondBuilder.js +100 -0
  61. package/dist/src/lib/utils.d.ts +40 -0
  62. package/dist/src/lib/utils.d.ts.map +1 -1
  63. package/dist/src/lib/utils.js +94 -1
  64. package/dist/src/lib/v8BatchStakingBuilder.d.ts +85 -0
  65. package/dist/src/lib/v8BatchStakingBuilder.d.ts.map +1 -0
  66. package/dist/src/lib/v8BatchStakingBuilder.js +266 -0
  67. package/dist/src/lib/v8BatchUnstakingBuilder.d.ts +11 -0
  68. package/dist/src/lib/v8BatchUnstakingBuilder.d.ts.map +1 -0
  69. package/dist/src/lib/v8BatchUnstakingBuilder.js +21 -0
  70. package/dist/src/lib/v8BondExtraBuilder.d.ts +11 -0
  71. package/dist/src/lib/v8BondExtraBuilder.d.ts.map +1 -0
  72. package/dist/src/lib/v8BondExtraBuilder.js +21 -0
  73. package/dist/src/lib/v8HexTokenTransferBuilder.d.ts +20 -0
  74. package/dist/src/lib/v8HexTokenTransferBuilder.d.ts.map +1 -0
  75. package/dist/src/lib/v8HexTokenTransferBuilder.js +42 -0
  76. package/dist/src/lib/v8HexTransferBuilder.d.ts +11 -0
  77. package/dist/src/lib/v8HexTransferBuilder.d.ts.map +1 -0
  78. package/dist/src/lib/v8HexTransferBuilder.js +21 -0
  79. package/dist/src/lib/v8NominateBuilder.d.ts +11 -0
  80. package/dist/src/lib/v8NominateBuilder.d.ts.map +1 -0
  81. package/dist/src/lib/v8NominateBuilder.js +21 -0
  82. package/dist/src/lib/v8PreApproveAssetBuilder.d.ts +11 -0
  83. package/dist/src/lib/v8PreApproveAssetBuilder.d.ts.map +1 -0
  84. package/dist/src/lib/v8PreApproveAssetBuilder.js +21 -0
  85. package/dist/src/lib/v8RegisterDidBuilder.d.ts +47 -0
  86. package/dist/src/lib/v8RegisterDidBuilder.d.ts.map +1 -0
  87. package/dist/src/lib/v8RegisterDidBuilder.js +96 -0
  88. package/dist/src/lib/v8RegisterDidWithCDDBuilder.d.ts +11 -0
  89. package/dist/src/lib/v8RegisterDidWithCDDBuilder.d.ts.map +1 -0
  90. package/dist/src/lib/v8RegisterDidWithCDDBuilder.js +21 -0
  91. package/dist/src/lib/v8TokenTransferBuilder.d.ts +24 -0
  92. package/dist/src/lib/v8TokenTransferBuilder.d.ts.map +1 -0
  93. package/dist/src/lib/v8TokenTransferBuilder.js +101 -0
  94. package/dist/src/lib/v8TransferBuilder.d.ts +11 -0
  95. package/dist/src/lib/v8TransferBuilder.d.ts.map +1 -0
  96. package/dist/src/lib/v8TransferBuilder.js +21 -0
  97. package/dist/src/lib/v8UnbondBuilder.d.ts +11 -0
  98. package/dist/src/lib/v8UnbondBuilder.d.ts.map +1 -0
  99. package/dist/src/lib/v8UnbondBuilder.js +21 -0
  100. package/dist/src/lib/v8WithdrawUnbondedBuilder.d.ts +11 -0
  101. package/dist/src/lib/v8WithdrawUnbondedBuilder.d.ts.map +1 -0
  102. package/dist/src/lib/v8WithdrawUnbondedBuilder.js +21 -0
  103. package/dist/src/lib/withdrawUnbondedBuilder.d.ts +35 -0
  104. package/dist/src/lib/withdrawUnbondedBuilder.d.ts.map +1 -0
  105. package/dist/src/lib/withdrawUnbondedBuilder.js +91 -0
  106. package/dist/src/polyx.d.ts +51 -9
  107. package/dist/src/polyx.d.ts.map +1 -1
  108. package/dist/src/polyx.js +272 -15
  109. package/dist/src/polyxToken.d.ts +20 -0
  110. package/dist/src/polyxToken.d.ts.map +1 -0
  111. package/dist/src/polyxToken.js +55 -0
  112. package/dist/src/register.d.ts.map +1 -1
  113. package/dist/src/register.js +5 -1
  114. package/dist/src/resources/index.d.ts +2 -0
  115. package/dist/src/resources/index.d.ts.map +1 -1
  116. package/dist/src/resources/index.js +3 -1
  117. package/dist/src/resources/mainnetV8.d.ts +13 -0
  118. package/dist/src/resources/mainnetV8.d.ts.map +1 -0
  119. package/dist/src/resources/mainnetV8.js +24 -0
  120. package/dist/src/resources/testnetV8.d.ts +13 -0
  121. package/dist/src/resources/testnetV8.d.ts.map +1 -0
  122. package/dist/src/resources/testnetV8.js +16 -0
  123. package/dist/src/tpolyx.d.ts +7 -0
  124. package/dist/src/tpolyx.d.ts.map +1 -1
  125. package/dist/src/tpolyx.js +11 -1
  126. package/dist/test/integration/index.d.ts +1 -0
  127. package/dist/test/integration/index.d.ts.map +1 -0
  128. package/dist/test/integration/index.js +1 -0
  129. package/dist/test/resources/index.d.ts +139 -0
  130. package/dist/test/resources/index.d.ts.map +1 -0
  131. package/dist/test/resources/index.js +150 -0
  132. package/dist/test/resources/mainnet.d.ts +2 -0
  133. package/dist/test/resources/mainnet.d.ts.map +1 -0
  134. package/dist/test/resources/mainnet.js +5 -0
  135. package/dist/test/resources/materialData.json +8 -0
  136. package/dist/test/resources/materialDataModified.json +8 -0
  137. package/dist/test/resources/testnet.d.ts +2 -0
  138. package/dist/test/resources/testnet.d.ts.map +1 -0
  139. package/dist/test/resources/testnet.js +5 -0
  140. package/dist/test/resources/wrwUsers.d.ts +19 -0
  141. package/dist/test/resources/wrwUsers.d.ts.map +1 -0
  142. package/dist/test/resources/wrwUsers.js +60 -0
  143. package/dist/test/unit/polyx.d.ts +2 -0
  144. package/dist/test/unit/polyx.d.ts.map +1 -0
  145. package/dist/test/unit/polyx.js +356 -0
  146. package/dist/test/unit/transactionBuilder/base.d.ts +4 -0
  147. package/dist/test/unit/transactionBuilder/base.d.ts.map +1 -0
  148. package/dist/test/unit/transactionBuilder/base.js +245 -0
  149. package/dist/test/unit/transactionBuilder/batchStakingBuilder.d.ts +2 -0
  150. package/dist/test/unit/transactionBuilder/batchStakingBuilder.d.ts.map +1 -0
  151. package/dist/test/unit/transactionBuilder/batchStakingBuilder.js +309 -0
  152. package/dist/test/unit/transactionBuilder/batchUnstakingBuilder.d.ts +2 -0
  153. package/dist/test/unit/transactionBuilder/batchUnstakingBuilder.d.ts.map +1 -0
  154. package/dist/test/unit/transactionBuilder/batchUnstakingBuilder.js +159 -0
  155. package/dist/test/unit/transactionBuilder/bondExtraBuilder.d.ts +2 -0
  156. package/dist/test/unit/transactionBuilder/bondExtraBuilder.d.ts.map +1 -0
  157. package/dist/test/unit/transactionBuilder/bondExtraBuilder.js +158 -0
  158. package/dist/test/unit/transactionBuilder/hexTokenTransferBuilder.d.ts +2 -0
  159. package/dist/test/unit/transactionBuilder/hexTokenTransferBuilder.d.ts.map +1 -0
  160. package/dist/test/unit/transactionBuilder/hexTokenTransferBuilder.js +261 -0
  161. package/dist/test/unit/transactionBuilder/hexTransferBuilder.d.ts +2 -0
  162. package/dist/test/unit/transactionBuilder/hexTransferBuilder.d.ts.map +1 -0
  163. package/dist/test/unit/transactionBuilder/hexTransferBuilder.js +389 -0
  164. package/dist/test/unit/transactionBuilder/nominateBuilder.d.ts +2 -0
  165. package/dist/test/unit/transactionBuilder/nominateBuilder.d.ts.map +1 -0
  166. package/dist/test/unit/transactionBuilder/nominateBuilder.js +226 -0
  167. package/dist/test/unit/transactionBuilder/preApproveAssetBuilder.d.ts +2 -0
  168. package/dist/test/unit/transactionBuilder/preApproveAssetBuilder.d.ts.map +1 -0
  169. package/dist/test/unit/transactionBuilder/preApproveAssetBuilder.js +115 -0
  170. package/dist/test/unit/transactionBuilder/registerDidWithCDDBuilder.d.ts +2 -0
  171. package/dist/test/unit/transactionBuilder/registerDidWithCDDBuilder.d.ts.map +1 -0
  172. package/dist/test/unit/transactionBuilder/registerDidWithCDDBuilder.js +302 -0
  173. package/dist/test/unit/transactionBuilder/rejectInstructionBuilder.d.ts +2 -0
  174. package/dist/test/unit/transactionBuilder/rejectInstructionBuilder.d.ts.map +1 -0
  175. package/dist/test/unit/transactionBuilder/rejectInstructionBuilder.js +128 -0
  176. package/dist/test/unit/transactionBuilder/singletonRegistry.d.ts +2 -0
  177. package/dist/test/unit/transactionBuilder/singletonRegistry.d.ts.map +1 -0
  178. package/dist/test/unit/transactionBuilder/singletonRegistry.js +59 -0
  179. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts +2 -0
  180. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  181. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +140 -0
  182. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts +2 -0
  183. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts.map +1 -0
  184. package/dist/test/unit/transactionBuilder/transactionBuilderFactory.js +240 -0
  185. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
  186. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  187. package/dist/test/unit/transactionBuilder/transferBuilder.js +326 -0
  188. package/dist/test/unit/transactionBuilder/unbondBuilder.d.ts +2 -0
  189. package/dist/test/unit/transactionBuilder/unbondBuilder.d.ts.map +1 -0
  190. package/dist/test/unit/transactionBuilder/unbondBuilder.js +144 -0
  191. package/dist/test/unit/transactionBuilder/v8BatchStakingBuilder.d.ts +2 -0
  192. package/dist/test/unit/transactionBuilder/v8BatchStakingBuilder.d.ts.map +1 -0
  193. package/dist/test/unit/transactionBuilder/v8BatchStakingBuilder.js +252 -0
  194. package/dist/test/unit/transactionBuilder/v8HexTokenTransferBuilder.d.ts +2 -0
  195. package/dist/test/unit/transactionBuilder/v8HexTokenTransferBuilder.d.ts.map +1 -0
  196. package/dist/test/unit/transactionBuilder/v8HexTokenTransferBuilder.js +90 -0
  197. package/dist/test/unit/transactionBuilder/v8HexTransferBuilder.d.ts +2 -0
  198. package/dist/test/unit/transactionBuilder/v8HexTransferBuilder.d.ts.map +1 -0
  199. package/dist/test/unit/transactionBuilder/v8HexTransferBuilder.js +62 -0
  200. package/dist/test/unit/transactionBuilder/v8PreApproveAssetBuilder.d.ts +2 -0
  201. package/dist/test/unit/transactionBuilder/v8PreApproveAssetBuilder.d.ts.map +1 -0
  202. package/dist/test/unit/transactionBuilder/v8PreApproveAssetBuilder.js +45 -0
  203. package/dist/test/unit/transactionBuilder/v8RegisterDidBuilder.d.ts +2 -0
  204. package/dist/test/unit/transactionBuilder/v8RegisterDidBuilder.d.ts.map +1 -0
  205. package/dist/test/unit/transactionBuilder/v8RegisterDidBuilder.js +87 -0
  206. package/dist/test/unit/transactionBuilder/v8RegisterDidWithCDDBuilder.d.ts +2 -0
  207. package/dist/test/unit/transactionBuilder/v8RegisterDidWithCDDBuilder.d.ts.map +1 -0
  208. package/dist/test/unit/transactionBuilder/v8RegisterDidWithCDDBuilder.js +45 -0
  209. package/dist/test/unit/transactionBuilder/v8TokenTransferBuilder.d.ts +2 -0
  210. package/dist/test/unit/transactionBuilder/v8TokenTransferBuilder.d.ts.map +1 -0
  211. package/dist/test/unit/transactionBuilder/v8TokenTransferBuilder.js +114 -0
  212. package/dist/test/unit/transactionBuilder/v8TransferBuilder.d.ts +2 -0
  213. package/dist/test/unit/transactionBuilder/v8TransferBuilder.d.ts.map +1 -0
  214. package/dist/test/unit/transactionBuilder/v8TransferBuilder.js +107 -0
  215. package/dist/test/unit/transactionBuilder/withdrawUnbondedBuilder.d.ts +2 -0
  216. package/dist/test/unit/transactionBuilder/withdrawUnbondedBuilder.d.ts.map +1 -0
  217. package/dist/test/unit/transactionBuilder/withdrawUnbondedBuilder.js +138 -0
  218. package/dist/test/unit/utils.d.ts +2 -0
  219. package/dist/test/unit/utils.d.ts.map +1 -0
  220. package/dist/test/unit/utils.js +143 -0
  221. package/dist/tsconfig.tsbuildinfo +1 -0
  222. package/package.json +15 -9
  223. package/.eslintignore +0 -4
  224. package/.mocharc.yml +0 -8
  225. package/CHANGELOG.md +0 -22
@@ -0,0 +1,252 @@
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 lib_1 = require("../../../src/lib");
10
+ const utils_1 = __importDefault(require("../../../src/lib/utils"));
11
+ const resources_1 = require("../../../src/resources");
12
+ const resources_2 = require("../../resources");
13
+ const base_1 = require("./base");
14
+ describe('V8BatchStakingBuilder', function () {
15
+ const factory = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tpolyx'));
16
+ const { stash, validator, bondAmount, referenceBlock, nonce, firstValid } = resources_2.stakingTxV8.sandbox;
17
+ const buildSandboxBatch = () => new lib_1.V8BatchStakingBuilder((0, base_1.buildTestConfig)())
18
+ .amount(bondAmount)
19
+ .payee('Staked')
20
+ .validators([validator])
21
+ .sender({ address: stash })
22
+ .validity({ firstValid, maxDuration: 64 })
23
+ .referenceBlock(referenceBlock)
24
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: nonce });
25
+ describe('v8 material', () => {
26
+ it('testnet builder uses v8 specVersion and txVersion', () => {
27
+ const builder = new lib_1.V8BatchStakingBuilder((0, base_1.buildTestConfig)());
28
+ const material = builder._material;
29
+ should_1.default.equal(material.specVersion, resources_1.testnetV8Material.specVersion);
30
+ should_1.default.equal(material.txVersion, resources_1.testnetV8Material.txVersion);
31
+ should_1.default.equal(material.specVersion, 8000000);
32
+ });
33
+ it('mainnet builder uses v8 specVersion and txVersion', () => {
34
+ const builder = new lib_1.V8BatchStakingBuilder((0, base_1.buildMainnetConfig)());
35
+ const material = builder._material;
36
+ should_1.default.equal(material.specVersion, resources_1.mainnetV8Material.specVersion);
37
+ should_1.default.equal(material.txVersion, resources_1.mainnetV8Material.txVersion);
38
+ });
39
+ });
40
+ describe('factory method', () => {
41
+ it('getV8BatchStakingBuilder returns a V8BatchStakingBuilder carrying v8 material', () => {
42
+ const builder = factory.getV8BatchStakingBuilder();
43
+ should_1.default.ok(builder instanceof lib_1.V8BatchStakingBuilder);
44
+ should_1.default.equal(builder._material.specVersion, resources_1.testnetV8Material.specVersion);
45
+ });
46
+ });
47
+ describe('setter validation', () => {
48
+ it('should not expose a controller setter', () => {
49
+ const builder = factory.getV8BatchStakingBuilder();
50
+ should_1.default.equal(typeof builder.controller, 'undefined');
51
+ should_1.default.equal(typeof builder.getController, 'undefined');
52
+ });
53
+ it('should require both bond and nominate operations', () => {
54
+ let builder = factory.getV8BatchStakingBuilder();
55
+ builder.amount(bondAmount).payee('Staked');
56
+ should_1.default.throws(() => builder.testValidateFields(), /must include both bond and nominate operations/);
57
+ builder = factory.getV8BatchStakingBuilder();
58
+ builder.validators([validator]);
59
+ should_1.default.throws(() => builder.testValidateFields(), /must include both bond and nominate operations/);
60
+ builder = factory.getV8BatchStakingBuilder();
61
+ builder.amount(bondAmount).payee('Staked').validators([validator]);
62
+ should_1.default.doesNotThrow(() => builder.testValidateFields());
63
+ });
64
+ });
65
+ describe('build transaction', () => {
66
+ it('builds batchAll([bond, nominate]) with v8 specVersion and no controller', async () => {
67
+ const tx = await buildSandboxBatch().build();
68
+ const txJson = tx.toJson();
69
+ should_1.default.equal(txJson.specVersion, 8000000);
70
+ should_1.default.equal(txJson.specVersion, resources_1.testnetV8Material.specVersion);
71
+ should_1.default.equal(txJson.transactionVersion, resources_1.testnetV8Material.txVersion);
72
+ });
73
+ it('inner bond leg + full batch method hex matches the testnet sandbox', async () => {
74
+ const tx = await buildSandboxBatch().build();
75
+ const methodHex = tx._substrateTransaction.method;
76
+ // Full utility.batchAll method hex is byte-for-byte identical to the on-chain sandbox tx.
77
+ should_1.default.equal(methodHex, resources_2.stakingTxV8.batch.bondAndNominate.callHex);
78
+ });
79
+ it('decodes with v8 material to bond({ value, payee }) — no controller — and nominate', async () => {
80
+ const tx = await buildSandboxBatch().build();
81
+ const material = utils_1.default.getV8Material(statics_1.coins.get('tpolyx').network.type);
82
+ const registry = lib_1.SingletonRegistry.getInstance(material);
83
+ const decodedTx = (0, txwrapper_polkadot_1.decode)(tx.toBroadcastFormat(), {
84
+ metadataRpc: material.metadata,
85
+ registry,
86
+ });
87
+ should_1.default.equal(decodedTx.method.name, 'batchAll');
88
+ should_1.default.equal(decodedTx.method.pallet, 'utility');
89
+ const batchArgs = decodedTx.method.args;
90
+ should_1.default.equal(batchArgs.calls.length, 2);
91
+ const firstCall = batchArgs.calls[0];
92
+ should_1.default.equal(utils_1.default.decodeMethodName(firstCall, registry), 'bond');
93
+ const bondArgs = firstCall.args;
94
+ const bondValue = typeof bondArgs.value === 'string' ? bondArgs.value : bondArgs.value.toString();
95
+ should_1.default.equal(bondValue, bondAmount);
96
+ should_1.default.equal(bondArgs.controller, undefined);
97
+ const secondCall = batchArgs.calls[1];
98
+ should_1.default.equal(utils_1.default.decodeMethodName(secondCall, registry), 'nominate');
99
+ const nominateArgs = secondCall.args;
100
+ const targets = nominateArgs.targets.map((t) => (typeof t === 'string' ? t : t.id));
101
+ should_1.default.deepEqual(targets, [validator]);
102
+ });
103
+ });
104
+ describe('validateDecodedTransaction', () => {
105
+ it('accepts a decoded v8 batch bond+nominate transaction', async () => {
106
+ const builder = buildSandboxBatch();
107
+ const tx = await builder.build();
108
+ const material = utils_1.default.getV8Material(statics_1.coins.get('tpolyx').network.type);
109
+ const registry = lib_1.SingletonRegistry.getInstance(material);
110
+ const decodedTx = (0, txwrapper_polkadot_1.decode)(tx.toBroadcastFormat(), { metadataRpc: material.metadata, registry });
111
+ should_1.default.doesNotThrow(() => builder.validateDecodedTransaction(decodedTx));
112
+ });
113
+ it('validates v8 bond args without a controller field', () => {
114
+ const builder = factory.getV8BatchStakingBuilder();
115
+ should_1.default.doesNotThrow(() => builder.testValidateBondArgs({ value: bondAmount, payee: 'Staked' }));
116
+ });
117
+ });
118
+ describe('from raw transaction', () => {
119
+ it('round-trips a v8 batch transaction through the builder', async () => {
120
+ const rawTxHex = (await buildSandboxBatch().build()).toBroadcastFormat();
121
+ const newBuilder = factory.getV8BatchStakingBuilder();
122
+ newBuilder.from(rawTxHex);
123
+ should_1.default.equal(newBuilder.getAmount(), bondAmount);
124
+ should_1.default.equal(newBuilder.getPayee(), 'Staked');
125
+ should_1.default.deepEqual(newBuilder.getValidators(), [validator]);
126
+ });
127
+ it('factory.from routes a v8 batch bond+nominate transaction to V8BatchStakingBuilder', async () => {
128
+ const rawTxHex = (await buildSandboxBatch().build()).toBroadcastFormat();
129
+ const builder = factory.from(rawTxHex);
130
+ should_1.default.ok(builder instanceof lib_1.V8BatchStakingBuilder);
131
+ });
132
+ it('factory.from routes to V8BatchStakingBuilder on the v8 decode-success path (SI-981)', async () => {
133
+ // Reproduces the staging incident: when the factory carries v8 material, `decode()` succeeds
134
+ // and yields a bond call with no `controller`. Routing must detect the missing controller and
135
+ // return the v8 builder rather than the v7 BatchStakingBuilder, which crashes reading
136
+ // `args.controller.id`.
137
+ const rawTxHex = (await buildSandboxBatch().build()).toBroadcastFormat();
138
+ const v8Material = utils_1.default.getV8Material(statics_1.coins.get('tpolyx').network.type);
139
+ const v8Factory = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tpolyx')).material(v8Material);
140
+ const builder = v8Factory.from(rawTxHex);
141
+ should_1.default.ok(builder instanceof lib_1.V8BatchStakingBuilder);
142
+ });
143
+ it('factory.material(liveMaterial).from(...) forwards the live material into the rebuilt v8 batch staking builder (SI-1034)', async () => {
144
+ // Reproduces the custodial staking incident: the HSM signs against LIVE chain material
145
+ // (e.g. a specVersion bump after a runtime upgrade), but wallet-platform's getSignedTx
146
+ // re-verifies by calling `factory.material(liveMaterial).from(serializedTxHex)`. On the
147
+ // decode-success path, `getBuilder()` used to return `getV8BatchStakingBuilder()` without
148
+ // forwarding `this._material`, so the rebuild silently fell back to the builder's static
149
+ // `getV8Material()` (stale specVersion) instead of the caller's live material. Because
150
+ // specVersion is embedded in the raw ExtrinsicPayload bytes that are actually signed, the
151
+ // rebuilt signable payload would then diverge from the one the HSM signed, producing
152
+ // `InvalidSignature: invalid key signature` at Trust approval.
153
+ //
154
+ // Simulate a "live" chain that has moved past the pinned static testnet v8 material by
155
+ // bumping specVersion on a copy of it.
156
+ const liveMaterial = {
157
+ ...resources_1.testnetV8Material,
158
+ specVersion: resources_1.testnetV8Material.specVersion + 10,
159
+ };
160
+ const originalTx = await new lib_1.V8BatchStakingBuilder((0, base_1.buildTestConfig)())
161
+ .material(liveMaterial)
162
+ .amount(bondAmount)
163
+ .payee('Staked')
164
+ .validators([validator])
165
+ .sender({ address: stash })
166
+ .validity({ firstValid, maxDuration: 64 })
167
+ .referenceBlock(referenceBlock)
168
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: nonce })
169
+ .build();
170
+ const rawTxHex = originalTx.toBroadcastFormat();
171
+ const originalSignablePayload = originalTx.signablePayload.toString('hex');
172
+ const rebuiltBuilder = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tpolyx')).material(liveMaterial).from(rawTxHex);
173
+ // The raw signing payload does not carry the sender address or the raw `firstValid` block
174
+ // number (only the encoded era), so — like any real caller re-verifying a decoded
175
+ // transaction — they must be supplied again before build() can run.
176
+ rebuiltBuilder.sender({ address: stash }).validity({ firstValid, maxDuration: 64 });
177
+ const rebuiltTx = await rebuiltBuilder.build();
178
+ const rebuiltSignablePayload = rebuiltTx.signablePayload.toString('hex');
179
+ // Without the SI-1034 fix, this fails: the rebuild uses the static material (specVersion
180
+ // 8000000) instead of liveMaterial (specVersion 8000010), so the payloads differ.
181
+ should_1.default.equal(rebuiltSignablePayload, originalSignablePayload);
182
+ });
183
+ });
184
+ });
185
+ describe('V8 staking wrappers (smoke build)', function () {
186
+ const factory = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tpolyx'));
187
+ const validator = resources_2.stakingTxV8.sandbox.validator;
188
+ const sender = resources_2.stakingTxV8.sandbox.stash;
189
+ const referenceBlock = resources_2.stakingTxV8.sandbox.referenceBlock;
190
+ const replay = { firstValid: 24829132, maxDuration: 64 };
191
+ it('V8BondExtraBuilder builds with v8 material', async () => {
192
+ const builder = factory.getV8BondExtraBuilder();
193
+ should_1.default.ok(builder instanceof lib_1.V8BondExtraBuilder);
194
+ const tx = await builder
195
+ .amount('10000000')
196
+ .sender({ address: sender })
197
+ .validity(replay)
198
+ .referenceBlock(referenceBlock)
199
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 189 })
200
+ .build();
201
+ should_1.default.equal(tx.toJson().specVersion, resources_1.testnetV8Material.specVersion);
202
+ });
203
+ it('V8UnbondBuilder builds with v8 material', async () => {
204
+ const builder = factory.getV8UnbondBuilder();
205
+ should_1.default.ok(builder instanceof lib_1.V8UnbondBuilder);
206
+ const tx = await builder
207
+ .amount('10000000')
208
+ .sender({ address: sender })
209
+ .validity(replay)
210
+ .referenceBlock(referenceBlock)
211
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 189 })
212
+ .build();
213
+ should_1.default.equal(tx.toJson().specVersion, resources_1.testnetV8Material.specVersion);
214
+ });
215
+ it('V8BatchUnstakingBuilder builds with v8 material', async () => {
216
+ const builder = factory.getV8BatchUnstakingBuilder();
217
+ should_1.default.ok(builder instanceof lib_1.V8BatchUnstakingBuilder);
218
+ const tx = await builder
219
+ .amount('10000000')
220
+ .sender({ address: sender })
221
+ .validity(replay)
222
+ .referenceBlock(referenceBlock)
223
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 189 })
224
+ .build();
225
+ should_1.default.equal(tx.toJson().specVersion, resources_1.testnetV8Material.specVersion);
226
+ });
227
+ it('V8WithdrawUnbondedBuilder builds with v8 material', async () => {
228
+ const builder = factory.getV8WithdrawUnbondedBuilder();
229
+ should_1.default.ok(builder instanceof lib_1.V8WithdrawUnbondedBuilder);
230
+ const tx = await builder
231
+ .slashingSpans(0)
232
+ .sender({ address: sender })
233
+ .validity(replay)
234
+ .referenceBlock(referenceBlock)
235
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 189 })
236
+ .build();
237
+ should_1.default.equal(tx.toJson().specVersion, resources_1.testnetV8Material.specVersion);
238
+ });
239
+ it('V8NominateBuilder builds with v8 material', async () => {
240
+ const builder = factory.getV8NominateBuilder();
241
+ should_1.default.ok(builder instanceof lib_1.V8NominateBuilder);
242
+ const tx = await builder
243
+ .validators([validator])
244
+ .sender({ address: sender })
245
+ .validity(replay)
246
+ .referenceBlock(referenceBlock)
247
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 189 })
248
+ .build();
249
+ should_1.default.equal(tx.toJson().specVersion, resources_1.testnetV8Material.specVersion);
250
+ });
251
+ });
252
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjhCYXRjaFN0YWtpbmdCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci92OEJhdGNoU3Rha2luZ0J1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzRUFBdUQ7QUFDdkQsaURBQTRDO0FBQzVDLG9EQUE0QjtBQUM1QiwwQ0FVMEI7QUFFMUIsbUVBQTJDO0FBQzNDLHNEQUE4RTtBQUM5RSwrQ0FBOEM7QUFDOUMsaUNBQTZEO0FBRTdELFFBQVEsQ0FBQyx1QkFBdUIsRUFBRTtJQUNoQyxNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUVuRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsR0FBRyx1QkFBVyxDQUFDLE9BQU8sQ0FBQztJQUVoRyxNQUFNLGlCQUFpQixHQUFHLEdBQUcsRUFBRSxDQUM3QixJQUFJLDJCQUFxQixDQUFDLElBQUEsc0JBQWUsR0FBRSxDQUFDO1NBQ3pDLE1BQU0sQ0FBQyxVQUFVLENBQUM7U0FDbEIsS0FBSyxDQUFDLFFBQVEsQ0FBQztTQUNmLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3ZCLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztTQUMxQixRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDO1NBQ3pDLGNBQWMsQ0FBQyxjQUFjLENBQUM7U0FDOUIsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBRW5FLFFBQVEsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFF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Q0FBQztRQUNYLGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxXQUFXLEVBQUUsNkJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkUsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsMkNBQTJDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDekQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDL0MsZ0JBQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxZQUFZLHVCQUFpQixDQUFDLENBQUM7UUFDaEQsTUFBTSxFQUFFLEdBQUcsTUFBTSxPQUFPO2FBQ3JCLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ3ZCLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQzthQUMzQixRQUFRLENBQUMsTUFBTSxDQUFDO2FBQ2hCLGNBQWMsQ0FBQyxjQUFjLENBQUM7YUFDOUIsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQzthQUMzRCxLQUFLLEVBQUUsQ0FBQztRQUNYLGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxXQUFXLEVBQUUsNkJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkUsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlY29kZSB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLXBvbGthZG90JztcbmltcG9ydCB7IGNvaW5zIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBWOEJhdGNoU3Rha2luZ0J1aWxkZXIsXG4gIFY4Qm9uZEV4dHJhQnVpbGRlcixcbiAgVjhVbmJvbmRCdWlsZGVyLFxuICBWOEJhdGNoVW5zdGFraW5nQnVpbGRlcixcbiAgVjhXaXRoZHJhd1VuYm9uZGVkQnVpbGRlcixcbiAgVjhOb21pbmF0ZUJ1aWxkZXIsXG4gIFNpbmdsZXRvblJlZ2lzdHJ5LFxuICBJbnRlcmZhY2UsXG59IGZyb20gJy4uLy4uLy4uL3NyYy9saWInO1xuaW1wb3J0IHsgQmF0Y2hBcmdzLCBOb21pbmF0ZUFyZ3MsIFY4Qm9uZEFyZ3MgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliL2lmYWNlJztcbmltcG9ydCB1dGlscyBmcm9tICcuLi8uLi8uLi9zcmMvbGliL3V0aWxzJztcbmltcG9ydCB7IHRlc3RuZXRWOE1hdGVyaWFsLCBtYWlubmV0VjhNYXRlcmlhbCB9IGZyb20gJy4uLy4uLy4uL3NyYy9yZXNvdXJjZXMnO1xuaW1wb3J0IHsgc3Rha2luZ1R4VjggfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMnO1xuaW1wb3J0IHsgYnVpbGRUZXN0Q29uZmlnLCBidWlsZE1haW5uZXRDb25maWcgfSBmcm9tICcuL2Jhc2UnO1xuXG5kZXNjcmliZSgnVjhCYXRjaFN0YWtpbmdCdWlsZGVyJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0cG9seXgnKSk7XG5cbiAgY29uc3QgeyBzdGFzaCwgdmFsaWRhdG9yLCBib25kQW1vdW50LCByZWZlcmVuY2VCbG9jaywgbm9uY2UsIGZpcnN0VmFsaWQgfSA9IHN0YWtpbmdUeFY4LnNhbmRib3g7XG5cbiAgY29uc3QgYnVpbGRTYW5kYm94QmF0Y2ggPSAoKSA9PlxuICAgIG5ldyBWOEJhdGNoU3Rha2luZ0J1aWxkZXIoYnVpbGRUZXN0Q29uZmlnKCkpXG4gICAgICAuYW1vdW50KGJvbmRBbW91bnQpXG4gICAgICAucGF5ZWUoJ1N0YWtlZCcpXG4gICAgICAudmFsaWRhdG9ycyhbdmFsaWRhdG9yXSlcbiAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzdGFzaCB9KVxuICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZCwgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAucmVmZXJlbmNlQmxvY2socmVmZXJlbmNlQmxvY2spXG4gICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiBub25jZSB9KTtcblxuICBkZXNjcmliZSgndjggbWF0ZXJpYWwnLCAoKSA9PiB7XG4gICAgaXQoJ3Rlc3RuZXQgYnVpbGRlciB1c2VzIHY4IHNwZWNWZXJzaW9uIGFuZCB0eFZlcnNpb24nLCAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IFY4QmF0Y2hTdGFraW5nQnVpbGRlcihidWlsZFRlc3RDb25maWcoKSk7XG4gICAgICBjb25zdCBtYXRlcmlhbCA9IChidWlsZGVyIGFzIGFueSkuX21hdGVyaWFsO1xuICAgICAgc2hvdWxkLmVxdWFsKG1hdGVyaWFsLnNwZWNWZXJzaW9uLCB0ZXN0bmV0VjhNYXRlcmlhbC5zcGVjVmVyc2lvbik7XG4gICAgICBzaG91bGQuZXF1YWwobWF0ZXJpYWwudHhWZXJzaW9uLCB0ZXN0bmV0VjhNYXRlcmlhbC50eFZlcnNpb24pO1xuICAgICAgc2hvdWxkLmVxdWFsKG1hdGVyaWFsLnNwZWNWZXJzaW9uLCA4MDAwMDAwKTtcbiAgICB9KTtcblxuICAgIGl0KCdtYWlubmV0IGJ1aWxkZXIgdXNlcyB2OCBzcGVjVmVyc2lvbiBhbmQgdHhWZXJzaW9uJywgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBWOEJhdGNoU3Rha2luZ0J1aWxkZXIoYnVpbGRNYWlubmV0Q29uZmlnKCkpO1xuICAgICAgY29uc3QgbWF0ZXJpYWwgPSAoYnVpbGRlciBhcyBhbnkpLl9tYXRlcmlhbDtcbiAgICAgIHNob3VsZC5lcXVhbChtYXRlcmlhbC5zcGVjVmVyc2lvbiwgbWFpbm5ldFY4TWF0ZXJpYWwuc3BlY1ZlcnNpb24pO1xuICAgICAgc2hvdWxkLmVxdWFsKG1hdGVyaWFsLnR4VmVyc2lvbiwgbWFpbm5ldFY4TWF0ZXJpYWwudHhWZXJzaW9uKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2ZhY3RvcnkgbWV0aG9kJywgKCkgPT4ge1xuICAgIGl0KCdnZXRWOEJhdGNoU3Rha2luZ0J1aWxkZXIgcmV0dXJucyBhIFY4QmF0Y2hTdGFraW5nQnVpbGRlciBjYXJyeWluZyB2OCBtYXRlcmlhbCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmdldFY4QmF0Y2hTdGFraW5nQnVpbGRlcigpO1xuICAgICAgc2hvdWxkLm9rKGJ1aWxkZXIgaW5zdGFuY2VvZiBWOEJhdGNoU3Rha2luZ0J1aWxkZXIpO1xuICAgICAgc2hvdWxkLmVxdWFsKChidWlsZGVyIGFzIGFueSkuX21hdGVyaWFsLnNwZWNWZXJzaW9uLCB0ZXN0bmV0VjhNYXRlcmlhbC5zcGVjVmVyc2lvbik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzZXR0ZXIgdmFsaWRhdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIG5vdCBleHBvc2UgYSBjb250cm9sbGVyIHNldHRlcicsICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmdldFY4QmF0Y2hTdGFraW5nQnVpbGRlcigpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR5cGVvZiAoYnVpbGRlciBhcyBhbnkpLmNvbnRyb2xsZXIsICd1bmRlZmluZWQnKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eXBlb2YgKGJ1aWxkZXIgYXMgYW55KS5nZXRDb250cm9sbGVyLCAndW5kZWZpbmVkJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlcXVpcmUgYm90aCBib25kIGFuZCBub21pbmF0ZSBvcGVyYXRpb25zJywgKCkgPT4ge1xuICAgICAgbGV0IGJ1aWxkZXIgPSBmYWN0b3J5LmdldFY4QmF0Y2hTdGFraW5nQnVpbGRlcigpO1xuICAgICAgYnVpbGRlci5hbW91bnQoYm9uZEFtb3VudCkucGF5ZWUoJ1N0YWtlZCcpO1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiBidWlsZGVyLnRlc3RWYWxpZGF0ZUZpZWxkcygpLCAvbXVzdCBpbmNsdWRlIGJvdGggYm9uZCBhbmQgbm9taW5hdGUgb3BlcmF0aW9ucy8pO1xuXG4gICAgICBidWlsZGVyID0gZmFjdG9yeS5nZXRWOEJhdGNoU3Rha2luZ0J1aWxkZXIoKTtcbiAgICAgIGJ1aWxkZXIudmFsaWRhdG9ycyhbdmFsaWRhdG9yXSk7XG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IGJ1aWxkZXIudGVzdFZhbGlkYXRlRmllbGRzKCksIC9tdXN0IGluY2x1ZGUgYm90aCBib25kIGFuZCBub21pbmF0ZSBvcGVyYXRpb25zLyk7XG5cbiAgICAgIGJ1aWxkZXIgPSBmYWN0b3J5LmdldFY4QmF0Y2hTdGFraW5nQnVpbGRlcigpO1xuICAgICAgYnVpbGRlci5hbW91bnQoYm9uZEFtb3VudCkucGF5ZWUoJ1N0YWtlZCcpLnZhbGlkYXRvcnMoW3ZhbGlkYXRvcl0pO1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLnRlc3RWYWxpZGF0ZUZpZWxkcygpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2J1aWxkIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdidWlsZHMgYmF0Y2hBbGwoW2JvbmQsIG5vbWluYXRlXSkgd2l0aCB2OCBzcGVjVmVyc2lvbiBhbmQgbm8gY29udHJvbGxlcicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRTYW5kYm94QmF0Y2goKS5idWlsZCgpO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBzaG91bGQuZXF1YWwodHhKc29uLnNwZWNWZXJzaW9uLCA4MDAwMDAwKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eEpzb24uc3BlY1ZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnNwZWNWZXJzaW9uKTtcbiAgICAgIHNob3VsZC5lcXVhbCh0eEpzb24udHJhbnNhY3Rpb25WZXJzaW9uLCB0ZXN0bmV0VjhNYXRlcmlhbC50eFZlcnNpb24pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2lubmVyIGJvbmQgbGVnICsgZnVsbCBiYXRjaCBtZXRob2QgaGV4IG1hdGNoZXMgdGhlIHRlc3RuZXQgc2FuZGJveCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRTYW5kYm94QmF0Y2goKS5idWlsZCgpO1xuICAgICAgY29uc3QgbWV0aG9kSGV4ID0gKHR4IGFzIGFueSkuX3N1YnN0cmF0ZVRyYW5zYWN0aW9uLm1ldGhvZCBhcyBzdHJpbmc7XG4gICAgICAvLyBGdWxsIHV0aWxpdHkuYmF0Y2hBbGwgbWV0aG9kIGhleCBpcyBieXRlLWZvci1ieXRlIGlkZW50aWNhbCB0byB0aGUgb24tY2hhaW4gc2FuZGJveCB0eC5cbiAgICAgIHNob3VsZC5lcXVhbChtZXRob2RIZXgsIHN0YWtpbmdUeFY4LmJhdGNoLmJvbmRBbmROb21pbmF0ZS5jYWxsSGV4KTtcbiAgICB9KTtcblxuICAgIGl0KCdkZWNvZGVzIHdpdGggdjggbWF0ZXJpYWwgdG8gYm9uZCh7IHZhbHVlLCBwYXllZSB9KSDigJQgbm8gY29udHJvbGxlciDigJQgYW5kIG5vbWluYXRlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZFNhbmRib3hCYXRjaCgpLmJ1aWxkKCk7XG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldFY4TWF0ZXJpYWwoY29pbnMuZ2V0KCd0cG9seXgnKS5uZXR3b3JrLnR5cGUpO1xuICAgICAgY29uc3QgcmVnaXN0cnkgPSBTaW5nbGV0b25SZWdpc3RyeS5nZXRJbnN0YW5jZShtYXRlcmlhbCk7XG4gICAgICBjb25zdCBkZWNvZGVkVHggPSBkZWNvZGUodHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwge1xuICAgICAgICBtZXRhZGF0YVJwYzogbWF0ZXJpYWwubWV0YWRhdGEsXG4gICAgICAgIHJlZ2lzdHJ5LFxuICAgICAgfSk7XG5cbiAgICAgIHNob3VsZC5lcXVhbChkZWNvZGVkVHgubWV0aG9kLm5hbWUsICdiYXRjaEFsbCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKGRlY29kZWRUeC5tZXRob2QucGFsbGV0LCAndXRpbGl0eScpO1xuXG4gICAgICBjb25zdCBiYXRjaEFyZ3MgPSBkZWNvZGVkVHgubWV0aG9kLmFyZ3MgYXMgdW5rbm93biBhcyBCYXRjaEFyZ3M7XG4gICAgICBzaG91bGQuZXF1YWwoYmF0Y2hBcmdzLmNhbGxzLmxlbmd0aCwgMik7XG5cbiAgICAgIGNvbnN0IGZpcnN0Q2FsbCA9IGJhdGNoQXJncy5jYWxsc1swXTtcbiAgICAgIHNob3VsZC5lcXVhbCh1dGlscy5kZWNvZGVNZXRob2ROYW1lKGZpcnN0Q2FsbCwgcmVnaXN0cnkpLCAnYm9uZCcpO1xuICAgICAgY29uc3QgYm9uZEFyZ3MgPSBmaXJzdENhbGwuYXJncyBhcyB1bmtub3duIGFzIFY4Qm9uZEFyZ3MgJiB7IGNvbnRyb2xsZXI/OiB1bmtub3duIH07XG4gICAgICBjb25zdCBib25kVmFsdWUgPSB0eXBlb2YgYm9uZEFyZ3MudmFsdWUgPT09ICdzdHJpbmcnID8gYm9uZEFyZ3MudmFsdWUgOiAoYm9uZEFyZ3MudmFsdWUgYXMgbnVtYmVyKS50b1N0cmluZygpO1xuICAgICAgc2hvdWxkLmVxdWFsKGJvbmRWYWx1ZSwgYm9uZEFtb3VudCk7XG4gICAgICBzaG91bGQuZXF1YWwoYm9uZEFyZ3MuY29udHJvbGxlciwgdW5kZWZpbmVkKTtcblxuICAgICAgY29uc3Qgc2Vjb25kQ2FsbCA9IGJhdGNoQXJncy5jYWxsc1sxXTtcbiAgICAgIHNob3VsZC5lcXVhbCh1dGlscy5kZWNvZGVNZXRob2ROYW1lKHNlY29uZENhbGwsIHJlZ2lzdHJ5KSwgJ25vbWluYXRlJyk7XG4gICAgICBjb25zdCBub21pbmF0ZUFyZ3MgPSBzZWNvbmRDYWxsLmFyZ3MgYXMgdW5rbm93biBhcyBOb21pbmF0ZUFyZ3M7XG4gICAgICBjb25zdCB0YXJnZXRzID0gbm9taW5hdGVBcmdzLnRhcmdldHMubWFwKCh0KSA9PiAodHlwZW9mIHQgPT09ICdzdHJpbmcnID8gdCA6ICh0IGFzIHsgaWQ6IHN0cmluZyB9KS5pZCkpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0YXJnZXRzLCBbdmFsaWRhdG9yXSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd2YWxpZGF0ZURlY29kZWRUcmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnYWNjZXB0cyBhIGRlY29kZWQgdjggYmF0Y2ggYm9uZCtub21pbmF0ZSB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBidWlsZFNhbmRib3hCYXRjaCgpO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldFY4TWF0ZXJpYWwoY29pbnMuZ2V0KCd0cG9seXgnKS5uZXR3b3JrLnR5cGUpO1xuICAgICAgY29uc3QgcmVnaXN0cnkgPSBTaW5nbGV0b25SZWdpc3RyeS5nZXRJbnN0YW5jZShtYXRlcmlhbCk7XG4gICAgICBjb25zdCBkZWNvZGVkVHggPSBkZWNvZGUodHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgeyBtZXRhZGF0YVJwYzogbWF0ZXJpYWwubWV0YWRhdGEsIHJlZ2lzdHJ5IH0pO1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLnZhbGlkYXRlRGVjb2RlZFRyYW5zYWN0aW9uKGRlY29kZWRUeCkpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3ZhbGlkYXRlcyB2OCBib25kIGFyZ3Mgd2l0aG91dCBhIGNvbnRyb2xsZXIgZmllbGQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRWOEJhdGNoU3Rha2luZ0J1aWxkZXIoKTtcbiAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4gYnVpbGRlci50ZXN0VmFsaWRhdGVCb25kQXJncyh7IHZhbHVlOiBib25kQW1vdW50LCBwYXllZTogJ1N0YWtlZCcgfSBhcyBWOEJvbmRBcmdzKSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdmcm9tIHJhdyB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgncm91bmQtdHJpcHMgYSB2OCBiYXRjaCB0cmFuc2FjdGlvbiB0aHJvdWdoIHRoZSBidWlsZGVyJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgcmF3VHhIZXggPSAoYXdhaXQgYnVpbGRTYW5kYm94QmF0Y2goKS5idWlsZCgpKS50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgICBjb25zdCBuZXdCdWlsZGVyID0gZmFjdG9yeS5nZXRWOEJhdGNoU3Rha2luZ0J1aWxkZXIoKTtcbiAgICAgIG5ld0J1aWxkZXIuZnJvbShyYXdUeEhleCk7XG5cbiAgICAgIHNob3VsZC5lcXVhbChuZXdCdWlsZGVyLmdldEFtb3VudCgpLCBib25kQW1vdW50KTtcbiAgICAgIHNob3VsZC5lcXVhbChuZXdCdWlsZGVyLmdldFBheWVlKCksICdTdGFrZWQnKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwobmV3QnVpbGRlci5nZXRWYWxpZGF0b3JzKCksIFt2YWxpZGF0b3JdKTtcbiAgICB9KTtcblxuICAgIGl0KCdmYWN0b3J5LmZyb20gcm91dGVzIGEgdjggYmF0Y2ggYm9uZCtub21pbmF0ZSB0cmFuc2FjdGlvbiB0byBWOEJhdGNoU3Rha2luZ0J1aWxkZXInLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCByYXdUeEhleCA9IChhd2FpdCBidWlsZFNhbmRib3hCYXRjaCgpLmJ1aWxkKCkpLnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5mcm9tKHJhd1R4SGV4KTtcbiAgICAgIHNob3VsZC5vayhidWlsZGVyIGluc3RhbmNlb2YgVjhCYXRjaFN0YWtpbmdCdWlsZGVyKTtcbiAgICB9KTtcblxuICAgIGl0KCdmYWN0b3J5LmZyb20gcm91dGVzIHRvIFY4QmF0Y2hTdGFraW5nQnVpbGRlciBvbiB0aGUgdjggZGVjb2RlLXN1Y2Nlc3MgcGF0aCAoU0ktOTgxKScsIGFzeW5jICgpID0+IHtcbiAgICAgIC8vIFJlcHJvZHVjZXMgdGhlIHN0YWdpbmcgaW5jaWRlbnQ6IHdoZW4gdGhlIGZhY3RvcnkgY2FycmllcyB2OCBtYXRlcmlhbCwgYGRlY29kZSgpYCBzdWNjZWVkc1xuICAgICAgLy8gYW5kIHlpZWxkcyBhIGJvbmQgY2FsbCB3aXRoIG5vIGBjb250cm9sbGVyYC4gUm91dGluZyBtdXN0IGRldGVjdCB0aGUgbWlzc2luZyBjb250cm9sbGVyIGFuZFxuICAgICAgLy8gcmV0dXJuIHRoZSB2OCBidWlsZGVyIHJhdGhlciB0aGFuIHRoZSB2NyBCYXRjaFN0YWtpbmdCdWlsZGVyLCB3aGljaCBjcmFzaGVzIHJlYWRpbmdcbiAgICAgIC8vIGBhcmdzLmNvbnRyb2xsZXIuaWRgLlxuICAgICAgY29uc3QgcmF3VHhIZXggPSAoYXdhaXQgYnVpbGRTYW5kYm94QmF0Y2goKS5idWlsZCgpKS50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgY29uc3QgdjhNYXRlcmlhbCA9IHV0aWxzLmdldFY4TWF0ZXJpYWwoY29pbnMuZ2V0KCd0cG9seXgnKS5uZXR3b3JrLnR5cGUpO1xuICAgICAgY29uc3QgdjhGYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0cG9seXgnKSkubWF0ZXJpYWwodjhNYXRlcmlhbCk7XG4gICAgICBjb25zdCBidWlsZGVyID0gdjhGYWN0b3J5LmZyb20ocmF3VHhIZXgpO1xuICAgICAgc2hvdWxkLm9rKGJ1aWxkZXIgaW5zdGFuY2VvZiBWOEJhdGNoU3Rha2luZ0J1aWxkZXIpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2ZhY3RvcnkubWF0ZXJpYWwobGl2ZU1hdGVyaWFsKS5mcm9tKC4uLikgZm9yd2FyZHMgdGhlIGxpdmUgbWF0ZXJpYWwgaW50byB0aGUgcmVidWlsdCB2OCBiYXRjaCBzdGFraW5nIGJ1aWxkZXIgKFNJLTEwMzQpJywgYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gUmVwcm9kdWNlcyB0aGUgY3VzdG9kaWFsIHN0YWtpbmcgaW5jaWRlbnQ6IHRoZSBIU00gc2lnbnMgYWdhaW5zdCBMSVZFIGNoYWluIG1hdGVyaWFsXG4gICAgICAvLyAoZS5nLiBhIHNwZWNWZXJzaW9uIGJ1bXAgYWZ0ZXIgYSBydW50aW1lIHVwZ3JhZGUpLCBidXQgd2FsbGV0LXBsYXRmb3JtJ3MgZ2V0U2lnbmVkVHhcbiAgICAgIC8vIHJlLXZlcmlmaWVzIGJ5IGNhbGxpbmcgYGZhY3RvcnkubWF0ZXJpYWwobGl2ZU1hdGVyaWFsKS5mcm9tKHNlcmlhbGl6ZWRUeEhleClgLiBPbiB0aGVcbiAgICAgIC8vIGRlY29kZS1zdWNjZXNzIHBhdGgsIGBnZXRCdWlsZGVyKClgIHVzZWQgdG8gcmV0dXJuIGBnZXRWOEJhdGNoU3Rha2luZ0J1aWxkZXIoKWAgd2l0aG91dFxuICAgICAgLy8gZm9yd2FyZGluZyBgdGhpcy5fbWF0ZXJpYWxgLCBzbyB0aGUgcmVidWlsZCBzaWxlbnRseSBmZWxsIGJhY2sgdG8gdGhlIGJ1aWxkZXIncyBzdGF0aWNcbiAgICAgIC8vIGBnZXRWOE1hdGVyaWFsKClgIChzdGFsZSBzcGVjVmVyc2lvbikgaW5zdGVhZCBvZiB0aGUgY2FsbGVyJ3MgbGl2ZSBtYXRlcmlhbC4gQmVjYXVzZVxuICAgICAgLy8gc3BlY1ZlcnNpb24gaXMgZW1iZWRkZWQgaW4gdGhlIHJhdyBFeHRyaW5zaWNQYXlsb2FkIGJ5dGVzIHRoYXQgYXJlIGFjdHVhbGx5IHNpZ25lZCwgdGhlXG4gICAgICAvLyByZWJ1aWx0IHNpZ25hYmxlIHBheWxvYWQgd291bGQgdGhlbiBkaXZlcmdlIGZyb20gdGhlIG9uZSB0aGUgSFNNIHNpZ25lZCwgcHJvZHVjaW5nXG4gICAgICAvLyBgSW52YWxpZFNpZ25hdHVyZTogaW52YWxpZCBrZXkgc2lnbmF0dXJlYCBhdCBUcnVzdCBhcHByb3ZhbC5cbiAgICAgIC8vXG4gICAgICAvLyBTaW11bGF0ZSBhIFwibGl2ZVwiIGNoYWluIHRoYXQgaGFzIG1vdmVkIHBhc3QgdGhlIHBpbm5lZCBzdGF0aWMgdGVzdG5ldCB2OCBtYXRlcmlhbCBieVxuICAgICAgLy8gYnVtcGluZyBzcGVjVmVyc2lvbiBvbiBhIGNvcHkgb2YgaXQuXG4gICAgICBjb25zdCBsaXZlTWF0ZXJpYWwgPSB7XG4gICAgICAgIC4uLnRlc3RuZXRWOE1hdGVyaWFsLFxuICAgICAgICBzcGVjVmVyc2lvbjogdGVzdG5ldFY4TWF0ZXJpYWwuc3BlY1ZlcnNpb24gKyAxMCxcbiAgICAgIH0gYXMgdW5rbm93biBhcyBJbnRlcmZhY2UuTWF0ZXJpYWw7XG5cbiAgICAgIGNvbnN0IG9yaWdpbmFsVHggPSBhd2FpdCBuZXcgVjhCYXRjaFN0YWtpbmdCdWlsZGVyKGJ1aWxkVGVzdENvbmZpZygpKVxuICAgICAgICAubWF0ZXJpYWwobGl2ZU1hdGVyaWFsKVxuICAgICAgICAuYW1vdW50KGJvbmRBbW91bnQpXG4gICAgICAgIC5wYXllZSgnU3Rha2VkJylcbiAgICAgICAgLnZhbGlkYXRvcnMoW3ZhbGlkYXRvcl0pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzdGFzaCB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKHJlZmVyZW5jZUJsb2NrKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiBub25jZSB9KVxuICAgICAgICAuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHJhd1R4SGV4ID0gb3JpZ2luYWxUeC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgY29uc3Qgb3JpZ2luYWxTaWduYWJsZVBheWxvYWQgPSBvcmlnaW5hbFR4LnNpZ25hYmxlUGF5bG9hZC50b1N0cmluZygnaGV4Jyk7XG5cbiAgICAgIGNvbnN0IHJlYnVpbHRCdWlsZGVyID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0cG9seXgnKSkubWF0ZXJpYWwobGl2ZU1hdGVyaWFsKS5mcm9tKHJhd1R4SGV4KTtcbiAgICAgIC8vIFRoZSByYXcgc2lnbmluZyBwYXlsb2FkIGRvZXMgbm90IGNhcnJ5IHRoZSBzZW5kZXIgYWRkcmVzcyBvciB0aGUgcmF3IGBmaXJzdFZhbGlkYCBibG9ja1xuICAgICAgLy8gbnVtYmVyIChvbmx5IHRoZSBlbmNvZGVkIGVyYSksIHNvIOKAlCBsaWtlIGFueSByZWFsIGNhbGxlciByZS12ZXJpZnlpbmcgYSBkZWNvZGVkXG4gICAgICAvLyB0cmFuc2FjdGlvbiDigJQgdGhleSBtdXN0IGJlIHN1cHBsaWVkIGFnYWluIGJlZm9yZSBidWlsZCgpIGNhbiBydW4uXG4gICAgICAocmVidWlsdEJ1aWxkZXIgYXMgVjhCYXRjaFN0YWtpbmdCdWlsZGVyKS5zZW5kZXIoeyBhZGRyZXNzOiBzdGFzaCB9KS52YWxpZGl0eSh7IGZpcnN0VmFsaWQsIG1heER1cmF0aW9uOiA2NCB9KTtcbiAgICAgIGNvbnN0IHJlYnVpbHRUeCA9IGF3YWl0IHJlYnVpbHRCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCByZWJ1aWx0U2lnbmFibGVQYXlsb2FkID0gcmVidWlsdFR4LnNpZ25hYmxlUGF5bG9hZC50b1N0cmluZygnaGV4Jyk7XG5cbiAgICAgIC8vIFdpdGhvdXQgdGhlIFNJLTEwMzQgZml4LCB0aGlzIGZhaWxzOiB0aGUgcmVidWlsZCB1c2VzIHRoZSBzdGF0aWMgbWF0ZXJpYWwgKHNwZWNWZXJzaW9uXG4gICAgICAvLyA4MDAwMDAwKSBpbnN0ZWFkIG9mIGxpdmVNYXRlcmlhbCAoc3BlY1ZlcnNpb24gODAwMDAxMCksIHNvIHRoZSBwYXlsb2FkcyBkaWZmZXIuXG4gICAgICBzaG91bGQuZXF1YWwocmVidWlsdFNpZ25hYmxlUGF5bG9hZCwgb3JpZ2luYWxTaWduYWJsZVBheWxvYWQpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnVjggc3Rha2luZyB3cmFwcGVycyAoc21va2UgYnVpbGQpJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0cG9seXgnKSk7XG4gIGNvbnN0IHZhbGlkYXRvciA9IHN0YWtpbmdUeFY4LnNhbmRib3gudmFsaWRhdG9yO1xuICBjb25zdCBzZW5kZXIgPSBzdGFraW5nVHhWOC5zYW5kYm94LnN0YXNoO1xuICBjb25zdCByZWZlcmVuY2VCbG9jayA9IHN0YWtpbmdUeFY4LnNhbmRib3gucmVmZXJlbmNlQmxvY2s7XG5cbiAgY29uc3QgcmVwbGF5ID0geyBmaXJzdFZhbGlkOiAyNDgyOTEzMiwgbWF4RHVyYXRpb246IDY0IH07XG5cbiAgaXQoJ1Y4Qm9uZEV4dHJhQnVpbGRlciBidWlsZHMgd2l0aCB2OCBtYXRlcmlhbCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRWOEJvbmRFeHRyYUJ1aWxkZXIoKTtcbiAgICBzaG91bGQub2soYnVpbGRlciBpbnN0YW5jZW9mIFY4Qm9uZEV4dHJhQnVpbGRlcik7XG4gICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyXG4gICAgICAuYW1vdW50KCcxMDAwMDAwMCcpXG4gICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyIH0pXG4gICAgICAudmFsaWRpdHkocmVwbGF5KVxuICAgICAgLnJlZmVyZW5jZUJsb2NrKHJlZmVyZW5jZUJsb2NrKVxuICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMTg5IH0pXG4gICAgICAuYnVpbGQoKTtcbiAgICBzaG91bGQuZXF1YWwodHgudG9Kc29uKCkuc3BlY1ZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnNwZWNWZXJzaW9uKTtcbiAgfSk7XG5cbiAgaXQoJ1Y4VW5ib25kQnVpbGRlciBidWlsZHMgd2l0aCB2OCBtYXRlcmlhbCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRWOFVuYm9uZEJ1aWxkZXIoKTtcbiAgICBzaG91bGQub2soYnVpbGRlciBpbnN0YW5jZW9mIFY4VW5ib25kQnVpbGRlcik7XG4gICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyXG4gICAgICAuYW1vdW50KCcxMDAwMDAwMCcpXG4gICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyIH0pXG4gICAgICAudmFsaWRpdHkocmVwbGF5KVxuICAgICAgLnJlZmVyZW5jZUJsb2NrKHJlZmVyZW5jZUJsb2NrKVxuICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMTg5IH0pXG4gICAgICAuYnVpbGQoKTtcbiAgICBzaG91bGQuZXF1YWwodHgudG9Kc29uKCkuc3BlY1ZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnNwZWNWZXJzaW9uKTtcbiAgfSk7XG5cbiAgaXQoJ1Y4QmF0Y2hVbnN0YWtpbmdCdWlsZGVyIGJ1aWxkcyB3aXRoIHY4IG1hdGVyaWFsJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmdldFY4QmF0Y2hVbnN0YWtpbmdCdWlsZGVyKCk7XG4gICAgc2hvdWxkLm9rKGJ1aWxkZXIgaW5zdGFuY2VvZiBWOEJhdGNoVW5zdGFraW5nQnVpbGRlcik7XG4gICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyXG4gICAgICAuYW1vdW50KCcxMDAwMDAwMCcpXG4gICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyIH0pXG4gICAgICAudmFsaWRpdHkocmVwbGF5KVxuICAgICAgLnJlZmVyZW5jZUJsb2NrKHJlZmVyZW5jZUJsb2NrKVxuICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMTg5IH0pXG4gICAgICAuYnVpbGQoKTtcbiAgICBzaG91bGQuZXF1YWwodHgudG9Kc29uKCkuc3BlY1ZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnNwZWNWZXJzaW9uKTtcbiAgfSk7XG5cbiAgaXQoJ1Y4V2l0aGRyYXdVbmJvbmRlZEJ1aWxkZXIgYnVpbGRzIHdpdGggdjggbWF0ZXJpYWwnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZ2V0VjhXaXRoZHJhd1VuYm9uZGVkQnVpbGRlcigpO1xuICAgIHNob3VsZC5vayhidWlsZGVyIGluc3RhbmNlb2YgVjhXaXRoZHJhd1VuYm9uZGVkQnVpbGRlcik7XG4gICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyXG4gICAgICAuc2xhc2hpbmdTcGFucygwKVxuICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlciB9KVxuICAgICAgLnZhbGlkaXR5KHJlcGxheSlcbiAgICAgIC5yZWZlcmVuY2VCbG9jayhyZWZlcmVuY2VCbG9jaylcbiAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDE4OSB9KVxuICAgICAgLmJ1aWxkKCk7XG4gICAgc2hvdWxkLmVxdWFsKHR4LnRvSnNvbigpLnNwZWNWZXJzaW9uLCB0ZXN0bmV0VjhNYXRlcmlhbC5zcGVjVmVyc2lvbik7XG4gIH0pO1xuXG4gIGl0KCdWOE5vbWluYXRlQnVpbGRlciBidWlsZHMgd2l0aCB2OCBtYXRlcmlhbCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRWOE5vbWluYXRlQnVpbGRlcigpO1xuICAgIHNob3VsZC5vayhidWlsZGVyIGluc3RhbmNlb2YgVjhOb21pbmF0ZUJ1aWxkZXIpO1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlclxuICAgICAgLnZhbGlkYXRvcnMoW3ZhbGlkYXRvcl0pXG4gICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyIH0pXG4gICAgICAudmFsaWRpdHkocmVwbGF5KVxuICAgICAgLnJlZmVyZW5jZUJsb2NrKHJlZmVyZW5jZUJsb2NrKVxuICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMTg5IH0pXG4gICAgICAuYnVpbGQoKTtcbiAgICBzaG91bGQuZXF1YWwodHgudG9Kc29uKCkuc3BlY1ZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnNwZWNWZXJzaW9uKTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=v8HexTokenTransferBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v8HexTokenTransferBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/v8HexTokenTransferBuilder.ts"],"names":[],"mappings":""}
@@ -0,0 +1,90 @@
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 should_1 = __importDefault(require("should"));
7
+ const txwrapper_polkadot_1 = require("@substrate/txwrapper-polkadot");
8
+ const lib_1 = require("../../../src/lib");
9
+ const resources_1 = require("../../resources");
10
+ const resources_2 = require("../../../src/resources");
11
+ const base_1 = require("./base");
12
+ const FROM_DID = '0x1208d7851e6698249aea40742701ee1ef6cdcced260a7c49c1cca1a9db836342';
13
+ const TO_DID = '0xbc6f7ec808f361c1353ab9dc88c3cc54b98d9eb60fed9c063e67a40925b8ef61';
14
+ const ASSET_ID = '0x780602887b358cf48989d0d9aa6c8d28';
15
+ describe('V8HexTokenTransferBuilder', () => {
16
+ describe('v8 material', () => {
17
+ it('carries v8 specVersion and txVersion', () => {
18
+ const builder = new lib_1.V8HexTokenTransferBuilder((0, base_1.buildTestConfig)());
19
+ const material = builder._material;
20
+ should_1.default.equal(material.specVersion, resources_2.testnetV8Material.specVersion);
21
+ should_1.default.equal(material.txVersion, resources_2.testnetV8Material.txVersion);
22
+ });
23
+ });
24
+ describe('factory method', () => {
25
+ it('getV8HexTokenTransferBuilder returns a V8HexTokenTransferBuilder', () => {
26
+ const factory = new lib_1.TransactionBuilderFactory((0, base_1.buildTestConfig)());
27
+ should_1.default.ok(factory.getV8HexTokenTransferBuilder() instanceof lib_1.V8HexTokenTransferBuilder);
28
+ });
29
+ it('extends V8TokenTransferBuilder — shares the AssetHolder-wrapped legs/holderSet logic', () => {
30
+ const builder = new lib_1.V8HexTokenTransferBuilder((0, base_1.buildTestConfig)());
31
+ should_1.default.ok(builder instanceof lib_1.V8TokenTransferBuilder);
32
+ });
33
+ });
34
+ describe('memo encoding', () => {
35
+ it('encodes memo in NEW (hex) format', () => {
36
+ const builder = new lib_1.V8HexTokenTransferBuilder((0, base_1.buildTestConfig)());
37
+ builder.memo('56594');
38
+ const memo = builder._memo;
39
+ should_1.default.ok(memo.startsWith('0x'), `expected 0x-prefixed hex memo, got: ${memo}`);
40
+ should_1.default.equal(memo.length, 66);
41
+ });
42
+ });
43
+ describe('build transaction', () => {
44
+ const sender = resources_1.accounts.account1;
45
+ it('should build a v8 hex token transfer transaction with v8 specVersion in output', async () => {
46
+ const builder = new lib_1.V8HexTokenTransferBuilder((0, base_1.buildTestConfig)())
47
+ .assetId(ASSET_ID)
48
+ .amount('1000000')
49
+ .fromDID(FROM_DID)
50
+ .toDID(TO_DID)
51
+ .memo('56594')
52
+ .sender({ address: sender.address })
53
+ .validity({ firstValid: 3933, maxDuration: 64 })
54
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
55
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 1 })
56
+ .fee({ amount: 0, type: 'tip' });
57
+ builder.addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
58
+ const tx = await builder.build();
59
+ const txJson = tx.toJson();
60
+ should_1.default.deepEqual(txJson.specVersion, resources_2.testnetV8Material.specVersion);
61
+ should_1.default.deepEqual(txJson.transactionVersion, resources_2.testnetV8Material.txVersion);
62
+ });
63
+ it('encodes legs/holderSet using the v8 AssetHolder wrapper', async () => {
64
+ const builder = new lib_1.V8HexTokenTransferBuilder((0, base_1.buildTestConfig)())
65
+ .assetId(ASSET_ID)
66
+ .amount('1000000')
67
+ .fromDID(FROM_DID)
68
+ .toDID(TO_DID)
69
+ .memo('56594')
70
+ .sender({ address: sender.address })
71
+ .validity({ firstValid: 3933, maxDuration: 64 })
72
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
73
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 1 })
74
+ .fee({ amount: 0, type: 'tip' });
75
+ builder.addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
76
+ const tx = await builder.build();
77
+ const v8Material = lib_1.utils.getV8Material((0, base_1.buildTestConfig)().network.type);
78
+ const registry = lib_1.SingletonRegistry.getInstance(v8Material);
79
+ const decoded = (0, txwrapper_polkadot_1.decode)(tx.toBroadcastFormat(), {
80
+ metadataRpc: v8Material.metadata,
81
+ registry,
82
+ });
83
+ const args = decoded.method.args;
84
+ should_1.default.not.exist(args.portfolios);
85
+ should_1.default.exist(args.holderSet);
86
+ should_1.default.equal(args.holderSet[0].portfolio.did, FROM_DID);
87
+ });
88
+ });
89
+ });
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjhIZXhUb2tlblRyYW5zZmVyQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvdjhIZXhUb2tlblRyYW5zZmVyQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUE0QjtBQUM1QixzRUFBdUQ7QUFDdkQsMENBTTBCO0FBQzFCLCtDQUE2RDtBQUM3RCxzREFBMkQ7QUFDM0QsaUNBQXlDO0FBRXpDLE1BQU0sUUFBUSxHQUFHLG9FQUFvRSxDQUFDO0FBQ3RGLE1BQU0sTUFBTSxHQUFHLG9FQUFvRSxDQUFDO0FBQ3BGLE1BQU0sUUFBUSxHQUFHLG9DQUFvQyxDQUFDO0FBRXRELFFBQVEsQ0FBQywyQkFBMkIsRUFBRSxHQUFHLEVBQUU7SUFDekMsUUFBUSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7UUFDM0IsRUFBRSxDQUFDLHNDQUFzQyxFQUFFLEdBQUcsRUFBRTtZQUM5QyxNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLElBQUEsc0JBQWUsR0FBRSxDQUFDLENBQUM7WUFDakUsTUFBTSxRQUFRLEdBQUksT0FBZSxDQUFDLFNBQVMsQ0FBQztZQUM1QyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLDZCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xFLGdCQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsNkJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7UUFDOUIsRUFBRSxDQUFDLGtFQUFrRSxFQUFFLEdBQUcsRUFBRTtZQUMxRSxNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLElBQUEsc0JBQWUsR0FBRSxDQUFDLENBQUM7WUFDakUsZ0JBQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLDRCQUE0QixFQUFFLFlBQVksK0JBQXlCLENBQUMsQ0FBQztRQUN6RixDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxzRkFBc0YsRUFBRSxHQUFHLEVBQUU7WUFDOUYsTUFBTSxPQUFPLEdBQUcsSUFBSSwrQkFBeUIsQ0FBQyxJQUFBLHNCQUFlLEdBQUUsQ0FBQyxDQUFDO1lBQ2pFLGdCQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sWUFBWSw0QkFBc0IsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRTtRQUM3QixFQUFFLENBQUMsa0NBQWtDLEVBQUUsR0FBRyxFQUFFO1lBQzFDLE1BQU0sT0FBTyxHQUFHLElBQUksK0JBQXlCLENBQUMsSUFBQSxzQkFBZSxHQUFFLENBQUMsQ0FBQztZQUNqRSxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxHQUFJLE9BQWUsQ0FBQyxLQUFlLENBQUM7WUFDOUMsZ0JBQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSx1Q0FBdUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNoRixnQkFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxFQUFFO1FBQ2pDLE1BQU0sTUFBTSxHQUFHLG9CQUFRLENBQUMsUUFBUSxDQUFDO1FBRWpDLEVBQUUsQ0FBQyxnRkFBZ0YsRUFBRSxLQUFLLElBQUksRUFBRTtZQUM5RixNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLElBQUEsc0JBQWUsR0FBRSxDQUFDO2lCQUM3RCxPQUFPLENBQUMsUUFBUSxDQUFDO2lCQUNqQixNQUFNLENBQUMsU0FBUyxDQUFDO2lCQUNqQixPQUFPLENBQUMsUUFBUSxDQUFDO2lCQUNqQixLQUFLLENBQUMsTUFBTSxDQUFDO2lCQUNiLElBQUksQ0FBQyxPQUFPLENBQUM7aUJBQ2IsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztpQkFDbkMsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUM7aUJBQy9DLGNBQWMsQ0FBQyxvRUFBb0UsQ0FBQztpQkFDcEYsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztpQkFDekQsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNuQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLDRCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDdEYsTUFBTSxFQUFFLEdBQUcsTUFBTSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFakMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLGdCQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsNkJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDcEUsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLDZCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNFLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHlEQUF5RCxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3ZFLE1BQU0sT0FBTyxHQUFHLElBQUksK0JBQXlCLENBQUMsSUFBQSxzQkFBZSxHQUFFLENBQUM7aUJBQzdELE9BQU8sQ0FBQyxRQUFRLENBQUM7aUJBQ2pCLE1BQU0sQ0FBQyxTQUFTLENBQUM7aUJBQ2pCLE9BQU8sQ0FBQyxRQUFRLENBQUM7aUJBQ2pCLEtBQUssQ0FBQyxNQUFNLENBQUM7aUJBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQztpQkFDYixNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO2lCQUNuQyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQztpQkFDL0MsY0FBYyxDQUFDLG9FQUFvRSxDQUFDO2lCQUNwRixVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDO2lCQUN6RCxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ25DLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsNEJBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN0RixNQUFNLEVBQUUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUVqQyxNQUFNLFVBQVUsR0FBRyxXQUFLLENBQUMsYUFBYSxDQUFDLElBQUEsc0JBQWUsR0FBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2RSxNQUFNLFFBQVEsR0FBRyx1QkFBaUIsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDM0QsTUFBTSxPQUFPLEdBQUcsSUFBQSwyQkFBTSxFQUFDLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFO2dCQUM3QyxXQUFXLEVBQUUsVUFBVSxDQUFDLFFBQVE7Z0JBQ2hDLFFBQVE7YUFDVCxDQUFDLENBQUM7WUFDSCxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQVcsQ0FBQztZQUN4QyxnQkFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2xDLGdCQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM3QixnQkFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDMUQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgZGVjb2RlIH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItcG9sa2Fkb3QnO1xuaW1wb3J0IHtcbiAgVjhIZXhUb2tlblRyYW5zZmVyQnVpbGRlcixcbiAgVjhUb2tlblRyYW5zZmVyQnVpbGRlcixcbiAgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSxcbiAgU2luZ2xldG9uUmVnaXN0cnksXG4gIHV0aWxzLFxufSBmcm9tICcuLi8uLi8uLi9zcmMvbGliJztcbmltcG9ydCB7IGFjY291bnRzLCBtb2NrVHNzU2lnbmF0dXJlIH0gZnJvbSAnLi4vLi4vcmVzb3VyY2VzJztcbmltcG9ydCB7IHRlc3RuZXRWOE1hdGVyaWFsIH0gZnJvbSAnLi4vLi4vLi4vc3JjL3Jlc291cmNlcyc7XG5pbXBvcnQgeyBidWlsZFRlc3RDb25maWcgfSBmcm9tICcuL2Jhc2UnO1xuXG5jb25zdCBGUk9NX0RJRCA9ICcweDEyMDhkNzg1MWU2Njk4MjQ5YWVhNDA3NDI3MDFlZTFlZjZjZGNjZWQyNjBhN2M0OWMxY2NhMWE5ZGI4MzYzNDInO1xuY29uc3QgVE9fRElEID0gJzB4YmM2ZjdlYzgwOGYzNjFjMTM1M2FiOWRjODhjM2NjNTRiOThkOWViNjBmZWQ5YzA2M2U2N2E0MDkyNWI4ZWY2MSc7XG5jb25zdCBBU1NFVF9JRCA9ICcweDc4MDYwMjg4N2IzNThjZjQ4OTg5ZDBkOWFhNmM4ZDI4JztcblxuZGVzY3JpYmUoJ1Y4SGV4VG9rZW5UcmFuc2ZlckJ1aWxkZXInLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCd2OCBtYXRlcmlhbCcsICgpID0+IHtcbiAgICBpdCgnY2FycmllcyB2OCBzcGVjVmVyc2lvbiBhbmQgdHhWZXJzaW9uJywgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBWOEhleFRva2VuVHJhbnNmZXJCdWlsZGVyKGJ1aWxkVGVzdENvbmZpZygpKTtcbiAgICAgIGNvbnN0IG1hdGVyaWFsID0gKGJ1aWxkZXIgYXMgYW55KS5fbWF0ZXJpYWw7XG4gICAgICBzaG91bGQuZXF1YWwobWF0ZXJpYWwuc3BlY1ZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnNwZWNWZXJzaW9uKTtcbiAgICAgIHNob3VsZC5lcXVhbChtYXRlcmlhbC50eFZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnR4VmVyc2lvbik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdmYWN0b3J5IG1ldGhvZCcsICgpID0+IHtcbiAgICBpdCgnZ2V0VjhIZXhUb2tlblRyYW5zZmVyQnVpbGRlciByZXR1cm5zIGEgVjhIZXhUb2tlblRyYW5zZmVyQnVpbGRlcicsICgpID0+IHtcbiAgICAgIGNvbnN0IGZhY3RvcnkgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShidWlsZFRlc3RDb25maWcoKSk7XG4gICAgICBzaG91bGQub2soZmFjdG9yeS5nZXRWOEhleFRva2VuVHJhbnNmZXJCdWlsZGVyKCkgaW5zdGFuY2VvZiBWOEhleFRva2VuVHJhbnNmZXJCdWlsZGVyKTtcbiAgICB9KTtcblxuICAgIGl0KCdleHRlbmRzIFY4VG9rZW5UcmFuc2ZlckJ1aWxkZXIg4oCUIHNoYXJlcyB0aGUgQXNzZXRIb2xkZXItd3JhcHBlZCBsZWdzL2hvbGRlclNldCBsb2dpYycsICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVjhIZXhUb2tlblRyYW5zZmVyQnVpbGRlcihidWlsZFRlc3RDb25maWcoKSk7XG4gICAgICBzaG91bGQub2soYnVpbGRlciBpbnN0YW5jZW9mIFY4VG9rZW5UcmFuc2ZlckJ1aWxkZXIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnbWVtbyBlbmNvZGluZycsICgpID0+IHtcbiAgICBpdCgnZW5jb2RlcyBtZW1vIGluIE5FVyAoaGV4KSBmb3JtYXQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IFY4SGV4VG9rZW5UcmFuc2ZlckJ1aWxkZXIoYnVpbGRUZXN0Q29uZmlnKCkpO1xuICAgICAgYnVpbGRlci5tZW1vKCc1NjU5NCcpO1xuICAgICAgY29uc3QgbWVtbyA9IChidWlsZGVyIGFzIGFueSkuX21lbW8gYXMgc3RyaW5nO1xuICAgICAgc2hvdWxkLm9rKG1lbW8uc3RhcnRzV2l0aCgnMHgnKSwgYGV4cGVjdGVkIDB4LXByZWZpeGVkIGhleCBtZW1vLCBnb3Q6ICR7bWVtb31gKTtcbiAgICAgIHNob3VsZC5lcXVhbChtZW1vLmxlbmd0aCwgNjYpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYnVpbGQgdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgY29uc3Qgc2VuZGVyID0gYWNjb3VudHMuYWNjb3VudDE7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGEgdjggaGV4IHRva2VuIHRyYW5zZmVyIHRyYW5zYWN0aW9uIHdpdGggdjggc3BlY1ZlcnNpb24gaW4gb3V0cHV0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBWOEhleFRva2VuVHJhbnNmZXJCdWlsZGVyKGJ1aWxkVGVzdENvbmZpZygpKVxuICAgICAgICAuYXNzZXRJZChBU1NFVF9JRClcbiAgICAgICAgLmFtb3VudCgnMTAwMDAwMCcpXG4gICAgICAgIC5mcm9tRElEKEZST01fRElEKVxuICAgICAgICAudG9ESUQoVE9fRElEKVxuICAgICAgICAubWVtbygnNTY1OTQnKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyLmFkZHJlc3MgfSlcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMSB9KVxuICAgICAgICAuZmVlKHsgYW1vdW50OiAwLCB0eXBlOiAndGlwJyB9KTtcbiAgICAgIGJ1aWxkZXIuYWRkU2lnbmF0dXJlKHsgcHViOiBzZW5kZXIucHVibGljS2V5IH0sIEJ1ZmZlci5mcm9tKG1vY2tUc3NTaWduYXR1cmUsICdoZXgnKSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zcGVjVmVyc2lvbiwgdGVzdG5ldFY4TWF0ZXJpYWwuc3BlY1ZlcnNpb24pO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24udHJhbnNhY3Rpb25WZXJzaW9uLCB0ZXN0bmV0VjhNYXRlcmlhbC50eFZlcnNpb24pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2VuY29kZXMgbGVncy9ob2xkZXJTZXQgdXNpbmcgdGhlIHY4IEFzc2V0SG9sZGVyIHdyYXBwZXInLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IFY4SGV4VG9rZW5UcmFuc2ZlckJ1aWxkZXIoYnVpbGRUZXN0Q29uZmlnKCkpXG4gICAgICAgIC5hc3NldElkKEFTU0VUX0lEKVxuICAgICAgICAuYW1vdW50KCcxMDAwMDAwJylcbiAgICAgICAgLmZyb21ESUQoRlJPTV9ESUQpXG4gICAgICAgIC50b0RJRChUT19ESUQpXG4gICAgICAgIC5tZW1vKCc1NjU5NCcpXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXIuYWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxIH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pO1xuICAgICAgYnVpbGRlci5hZGRTaWduYXR1cmUoeyBwdWI6IHNlbmRlci5wdWJsaWNLZXkgfSwgQnVmZmVyLmZyb20obW9ja1Rzc1NpZ25hdHVyZSwgJ2hleCcpKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuXG4gICAgICBjb25zdCB2OE1hdGVyaWFsID0gdXRpbHMuZ2V0VjhNYXRlcmlhbChidWlsZFRlc3RDb25maWcoKS5uZXR3b3JrLnR5cGUpO1xuICAgICAgY29uc3QgcmVnaXN0cnkgPSBTaW5nbGV0b25SZWdpc3RyeS5nZXRJbnN0YW5jZSh2OE1hdGVyaWFsKTtcbiAgICAgIGNvbnN0IGRlY29kZWQgPSBkZWNvZGUodHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwge1xuICAgICAgICBtZXRhZGF0YVJwYzogdjhNYXRlcmlhbC5tZXRhZGF0YSxcbiAgICAgICAgcmVnaXN0cnksXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGFyZ3MgPSBkZWNvZGVkLm1ldGhvZC5hcmdzIGFzIGFueTtcbiAgICAgIHNob3VsZC5ub3QuZXhpc3QoYXJncy5wb3J0Zm9saW9zKTtcbiAgICAgIHNob3VsZC5leGlzdChhcmdzLmhvbGRlclNldCk7XG4gICAgICBzaG91bGQuZXF1YWwoYXJncy5ob2xkZXJTZXRbMF0ucG9ydGZvbGlvLmRpZCwgRlJPTV9ESUQpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=v8HexTransferBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v8HexTransferBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/v8HexTransferBuilder.ts"],"names":[],"mappings":""}
@@ -0,0 +1,62 @@
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 should_1 = __importDefault(require("should"));
7
+ const lib_1 = require("../../../src/lib");
8
+ const resources_1 = require("../../resources");
9
+ const resources_2 = require("../../../src/resources");
10
+ const base_1 = require("./base");
11
+ describe('V8HexTransferBuilder', () => {
12
+ describe('v8 material', () => {
13
+ it('carries v8 specVersion and txVersion', () => {
14
+ const builder = new lib_1.V8HexTransferBuilder((0, base_1.buildTestConfig)());
15
+ const material = builder._material;
16
+ should_1.default.equal(material.specVersion, resources_2.testnetV8Material.specVersion);
17
+ should_1.default.equal(material.txVersion, resources_2.testnetV8Material.txVersion);
18
+ });
19
+ });
20
+ describe('factory method', () => {
21
+ it('getV8HexTransferBuilder returns a V8HexTransferBuilder', () => {
22
+ const factory = new lib_1.TransactionBuilderFactory((0, base_1.buildTestConfig)());
23
+ should_1.default.ok(factory.getV8HexTransferBuilder() instanceof lib_1.V8HexTransferBuilder);
24
+ });
25
+ });
26
+ describe('memo encoding', () => {
27
+ it('encodes memo in NEW (hex) format', () => {
28
+ const builder = new lib_1.V8HexTransferBuilder((0, base_1.buildTestConfig)());
29
+ builder.memo('56594');
30
+ const memo = builder._memo;
31
+ should_1.default.ok(memo.startsWith('0x'), `expected 0x-prefixed hex memo, got: ${memo}`);
32
+ should_1.default.equal(memo.length, 66);
33
+ });
34
+ it('stores an already-encoded hex memo as-is', () => {
35
+ const builder = new lib_1.V8HexTransferBuilder((0, base_1.buildTestConfig)());
36
+ const encoded = '0x3536353934000000000000000000000000000000000000000000000000000000';
37
+ builder.memo(encoded);
38
+ should_1.default.equal(builder._memo, encoded);
39
+ });
40
+ });
41
+ describe('build transaction', () => {
42
+ const sender = resources_1.accounts.account1;
43
+ const receiver = resources_1.accounts.account2;
44
+ it('should build a v8 hex transfer transaction', async () => {
45
+ const builder = new lib_1.V8HexTransferBuilder((0, base_1.buildTestConfig)())
46
+ .amount('1000000')
47
+ .to({ address: receiver.address })
48
+ .sender({ address: sender.address })
49
+ .memo('56594')
50
+ .validity({ firstValid: 3933, maxDuration: 64 })
51
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
52
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 1 })
53
+ .fee({ amount: 0, type: 'tip' });
54
+ builder.addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
55
+ const tx = await builder.build();
56
+ const txJson = tx.toJson();
57
+ should_1.default.deepEqual(txJson.specVersion, resources_2.testnetV8Material.specVersion);
58
+ should_1.default.deepEqual(txJson.transactionVersion, resources_2.testnetV8Material.txVersion);
59
+ });
60
+ });
61
+ });
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjhIZXhUcmFuc2ZlckJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL3Y4SGV4VHJhbnNmZXJCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLDBDQUFtRjtBQUNuRiwrQ0FBNkQ7QUFDN0Qsc0RBQTJEO0FBQzNELGlDQUF5QztBQUV6QyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxFQUFFO0lBQ3BDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO1FBQzNCLEVBQUUsQ0FBQyxzQ0FBc0MsRUFBRSxHQUFHLEVBQUU7WUFDOUMsTUFBTSxPQUFPLEdBQUcsSUFBSSwwQkFBb0IsQ0FBQyxJQUFBLHNCQUFlLEdBQUUsQ0FBQyxDQUFDO1lBQzVELE1BQU0sUUFBUSxHQUFJLE9BQWUsQ0FBQyxTQUFTLENBQUM7WUFDNUMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSw2QkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNsRSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLDZCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFO1FBQzlCLEVBQUUsQ0FBQyx3REFBd0QsRUFBRSxHQUFHLEVBQUU7WUFDaEUsTUFBTSxPQUFPLEdBQUcsSUFBSSwrQkFBeUIsQ0FBQyxJQUFBLHNCQUFlLEdBQUUsQ0FBQyxDQUFDO1lBQ2pFLGdCQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxZQUFZLDBCQUFvQixDQUFDLENBQUM7UUFDL0UsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxlQUFlLEVBQUUsR0FBRyxFQUFFO1FBQzdCLEVBQUUsQ0FBQyxrQ0FBa0MsRUFBRSxHQUFHLEVBQUU7WUFDMUMsTUFBTSxPQUFPLEdBQUcsSUFBSSwwQkFBb0IsQ0FBQyxJQUFBLHNCQUFlLEdBQUUsQ0FBQyxDQUFDO1lBQzVELE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsTUFBTSxJQUFJLEdBQUksT0FBZSxDQUFDLEtBQWUsQ0FBQztZQUM5QyxnQkFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLHVDQUF1QyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ2hGLGdCQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsMENBQTBDLEVBQUUsR0FBRyxFQUFFO1lBQ2xELE1BQU0sT0FBTyxHQUFHLElBQUksMEJBQW9CLENBQUMsSUFBQSxzQkFBZSxHQUFFLENBQUMsQ0FBQztZQUM1RCxNQUFNLE9BQU8sR0FBRyxvRUFBb0UsQ0FBQztZQUNyRixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RCLGdCQUFNLENBQUMsS0FBSyxDQUFFLE9BQWUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7UUFDakMsTUFBTSxNQUFNLEdBQUcsb0JBQVEsQ0FBQyxRQUFRLENBQUM7UUFDakMsTUFBTSxRQUFRLEdBQUcsb0JBQVEsQ0FBQyxRQUFRLENBQUM7UUFFbkMsRUFBRSxDQUFDLDRDQUE0QyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzFELE1BQU0sT0FBTyxHQUFHLElBQUksMEJBQW9CLENBQUMsSUFBQSxzQkFBZSxHQUFFLENBQUM7aUJBQ3hELE1BQU0sQ0FBQyxTQUFTLENBQUM7aUJBQ2pCLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7aUJBQ2pDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7aUJBQ25DLElBQUksQ0FBQyxPQUFPLENBQUM7aUJBQ2IsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUM7aUJBQy9DLGNBQWMsQ0FBQyxvRUFBb0UsQ0FBQztpQkFDcEYsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztpQkFDekQsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNuQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLDRCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDdEYsTUFBTSxFQUFFLEdBQUcsTUFBTSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFakMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLGdCQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsNkJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDcEUsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLDZCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IFY4SGV4VHJhbnNmZXJCdWlsZGVyLCBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYic7XG5pbXBvcnQgeyBhY2NvdW50cywgbW9ja1Rzc1NpZ25hdHVyZSB9IGZyb20gJy4uLy4uL3Jlc291cmNlcyc7XG5pbXBvcnQgeyB0ZXN0bmV0VjhNYXRlcmlhbCB9IGZyb20gJy4uLy4uLy4uL3NyYy9yZXNvdXJjZXMnO1xuaW1wb3J0IHsgYnVpbGRUZXN0Q29uZmlnIH0gZnJvbSAnLi9iYXNlJztcblxuZGVzY3JpYmUoJ1Y4SGV4VHJhbnNmZXJCdWlsZGVyJywgKCkgPT4ge1xuICBkZXNjcmliZSgndjggbWF0ZXJpYWwnLCAoKSA9PiB7XG4gICAgaXQoJ2NhcnJpZXMgdjggc3BlY1ZlcnNpb24gYW5kIHR4VmVyc2lvbicsICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVjhIZXhUcmFuc2ZlckJ1aWxkZXIoYnVpbGRUZXN0Q29uZmlnKCkpO1xuICAgICAgY29uc3QgbWF0ZXJpYWwgPSAoYnVpbGRlciBhcyBhbnkpLl9tYXRlcmlhbDtcbiAgICAgIHNob3VsZC5lcXVhbChtYXRlcmlhbC5zcGVjVmVyc2lvbiwgdGVzdG5ldFY4TWF0ZXJpYWwuc3BlY1ZlcnNpb24pO1xuICAgICAgc2hvdWxkLmVxdWFsKG1hdGVyaWFsLnR4VmVyc2lvbiwgdGVzdG5ldFY4TWF0ZXJpYWwudHhWZXJzaW9uKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2ZhY3RvcnkgbWV0aG9kJywgKCkgPT4ge1xuICAgIGl0KCdnZXRWOEhleFRyYW5zZmVyQnVpbGRlciByZXR1cm5zIGEgVjhIZXhUcmFuc2ZlckJ1aWxkZXInLCAoKSA9PiB7XG4gICAgICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoYnVpbGRUZXN0Q29uZmlnKCkpO1xuICAgICAgc2hvdWxkLm9rKGZhY3RvcnkuZ2V0VjhIZXhUcmFuc2ZlckJ1aWxkZXIoKSBpbnN0YW5jZW9mIFY4SGV4VHJhbnNmZXJCdWlsZGVyKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ21lbW8gZW5jb2RpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ2VuY29kZXMgbWVtbyBpbiBORVcgKGhleCkgZm9ybWF0JywgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ldyBWOEhleFRyYW5zZmVyQnVpbGRlcihidWlsZFRlc3RDb25maWcoKSk7XG4gICAgICBidWlsZGVyLm1lbW8oJzU2NTk0Jyk7XG4gICAgICBjb25zdCBtZW1vID0gKGJ1aWxkZXIgYXMgYW55KS5fbWVtbyBhcyBzdHJpbmc7XG4gICAgICBzaG91bGQub2sobWVtby5zdGFydHNXaXRoKCcweCcpLCBgZXhwZWN0ZWQgMHgtcHJlZml4ZWQgaGV4IG1lbW8sIGdvdDogJHttZW1vfWApO1xuICAgICAgc2hvdWxkLmVxdWFsKG1lbW8ubGVuZ3RoLCA2Nik7XG4gICAgfSk7XG5cbiAgICBpdCgnc3RvcmVzIGFuIGFscmVhZHktZW5jb2RlZCBoZXggbWVtbyBhcy1pcycsICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVjhIZXhUcmFuc2ZlckJ1aWxkZXIoYnVpbGRUZXN0Q29uZmlnKCkpO1xuICAgICAgY29uc3QgZW5jb2RlZCA9ICcweDM1MzYzNTM5MzQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnO1xuICAgICAgYnVpbGRlci5tZW1vKGVuY29kZWQpO1xuICAgICAgc2hvdWxkLmVxdWFsKChidWlsZGVyIGFzIGFueSkuX21lbW8sIGVuY29kZWQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYnVpbGQgdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgY29uc3Qgc2VuZGVyID0gYWNjb3VudHMuYWNjb3VudDE7XG4gICAgY29uc3QgcmVjZWl2ZXIgPSBhY2NvdW50cy5hY2NvdW50MjtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgYSB2OCBoZXggdHJhbnNmZXIgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IFY4SGV4VHJhbnNmZXJCdWlsZGVyKGJ1aWxkVGVzdENvbmZpZygpKVxuICAgICAgICAuYW1vdW50KCcxMDAwMDAwJylcbiAgICAgICAgLnRvKHsgYWRkcmVzczogcmVjZWl2ZXIuYWRkcmVzcyB9KVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyLmFkZHJlc3MgfSlcbiAgICAgICAgLm1lbW8oJzU2NTk0JylcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMSB9KVxuICAgICAgICAuZmVlKHsgYW1vdW50OiAwLCB0eXBlOiAndGlwJyB9KTtcbiAgICAgIGJ1aWxkZXIuYWRkU2lnbmF0dXJlKHsgcHViOiBzZW5kZXIucHVibGljS2V5IH0sIEJ1ZmZlci5mcm9tKG1vY2tUc3NTaWduYXR1cmUsICdoZXgnKSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zcGVjVmVyc2lvbiwgdGVzdG5ldFY4TWF0ZXJpYWwuc3BlY1ZlcnNpb24pO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24udHJhbnNhY3Rpb25WZXJzaW9uLCB0ZXN0bmV0VjhNYXRlcmlhbC50eFZlcnNpb24pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=v8PreApproveAssetBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v8PreApproveAssetBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/v8PreApproveAssetBuilder.ts"],"names":[],"mappings":""}
@@ -0,0 +1,45 @@
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 should_1 = __importDefault(require("should"));
7
+ const lib_1 = require("../../../src/lib");
8
+ const resources_1 = require("../../resources");
9
+ const resources_2 = require("../../../src/resources");
10
+ const base_1 = require("./base");
11
+ const ASSET_ID = '0x780602887b358cf48989d0d9aa6c8d28';
12
+ describe('V8PreApproveAssetBuilder', () => {
13
+ describe('v8 material', () => {
14
+ it('carries v8 specVersion and txVersion', () => {
15
+ const builder = new lib_1.V8PreApproveAssetBuilder((0, base_1.buildTestConfig)());
16
+ const material = builder._material;
17
+ should_1.default.equal(material.specVersion, resources_2.testnetV8Material.specVersion);
18
+ should_1.default.equal(material.txVersion, resources_2.testnetV8Material.txVersion);
19
+ });
20
+ });
21
+ describe('factory method', () => {
22
+ it('getV8PreApproveAssetBuilder returns a V8PreApproveAssetBuilder', () => {
23
+ const factory = new lib_1.TransactionBuilderFactory((0, base_1.buildTestConfig)());
24
+ should_1.default.ok(factory.getV8PreApproveAssetBuilder() instanceof lib_1.V8PreApproveAssetBuilder);
25
+ });
26
+ });
27
+ describe('build transaction', () => {
28
+ const sender = resources_1.accounts.account1;
29
+ it('should build a v8 pre-approve asset transaction with v8 specVersion in output', async () => {
30
+ const builder = new lib_1.V8PreApproveAssetBuilder((0, base_1.buildTestConfig)())
31
+ .assetId(ASSET_ID)
32
+ .sender({ address: sender.address })
33
+ .validity({ firstValid: 3933, maxDuration: 64 })
34
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
35
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 1 })
36
+ .fee({ amount: 0, type: 'tip' });
37
+ builder.addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
38
+ const tx = await builder.build();
39
+ const txJson = tx.toJson();
40
+ should_1.default.deepEqual(txJson.specVersion, resources_2.testnetV8Material.specVersion);
41
+ should_1.default.deepEqual(txJson.transactionVersion, resources_2.testnetV8Material.txVersion);
42
+ });
43
+ });
44
+ });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjhQcmVBcHByb3ZlQXNzZXRCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci92OFByZUFwcHJvdmVBc3NldEJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsMENBQXVGO0FBQ3ZGLCtDQUE2RDtBQUM3RCxzREFBMkQ7QUFDM0QsaUNBQXlDO0FBRXpDLE1BQU0sUUFBUSxHQUFHLG9DQUFvQyxDQUFDO0FBRXRELFFBQVEsQ0FBQywwQkFBMEIsRUFBRSxHQUFHLEVBQUU7SUFDeEMsUUFBUSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7UUFDM0IsRUFBRSxDQUFDLHNDQUFzQyxFQUFFLEdBQUcsRUFBRTtZQUM5QyxNQUFNLE9BQU8sR0FBRyxJQUFJLDhCQUF3QixDQUFDLElBQUEsc0JBQWUsR0FBRSxDQUFDLENBQUM7WUFDaEUsTUFBTSxRQUFRLEdBQUksT0FBZSxDQUFDLFNBQVMsQ0FBQztZQUM1QyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLDZCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xFLGdCQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsNkJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7UUFDOUIsRUFBRSxDQUFDLGdFQUFnRSxFQUFFLEdBQUcsRUFBRTtZQUN4RSxNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLElBQUEsc0JBQWUsR0FBRSxDQUFDLENBQUM7WUFDakUsZ0JBQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLDJCQUEyQixFQUFFLFlBQVksOEJBQXdCLENBQUMsQ0FBQztRQUN2RixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsRUFBRTtRQUNqQyxNQUFNLE1BQU0sR0FBRyxvQkFBUSxDQUFDLFFBQVEsQ0FBQztRQUVqQyxFQUFFLENBQUMsK0VBQStFLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDN0YsTUFBTSxPQUFPLEdBQUcsSUFBSSw4QkFBd0IsQ0FBQyxJQUFBLHNCQUFlLEdBQUUsQ0FBQztpQkFDNUQsT0FBTyxDQUFDLFFBQVEsQ0FBQztpQkFDakIsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztpQkFDbkMsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUM7aUJBQy9DLGNBQWMsQ0FBQyxvRUFBb0UsQ0FBQztpQkFDcEYsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztpQkFDekQsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNuQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLDRCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDdEYsTUFBTSxFQUFFLEdBQUcsTUFBTSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFakMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLGdCQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsNkJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDcEUsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLDZCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IFY4UHJlQXBwcm92ZUFzc2V0QnVpbGRlciwgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWInO1xuaW1wb3J0IHsgYWNjb3VudHMsIG1vY2tUc3NTaWduYXR1cmUgfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMnO1xuaW1wb3J0IHsgdGVzdG5ldFY4TWF0ZXJpYWwgfSBmcm9tICcuLi8uLi8uLi9zcmMvcmVzb3VyY2VzJztcbmltcG9ydCB7IGJ1aWxkVGVzdENvbmZpZyB9IGZyb20gJy4vYmFzZSc7XG5cbmNvbnN0IEFTU0VUX0lEID0gJzB4NzgwNjAyODg3YjM1OGNmNDg5ODlkMGQ5YWE2YzhkMjgnO1xuXG5kZXNjcmliZSgnVjhQcmVBcHByb3ZlQXNzZXRCdWlsZGVyJywgKCkgPT4ge1xuICBkZXNjcmliZSgndjggbWF0ZXJpYWwnLCAoKSA9PiB7XG4gICAgaXQoJ2NhcnJpZXMgdjggc3BlY1ZlcnNpb24gYW5kIHR4VmVyc2lvbicsICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVjhQcmVBcHByb3ZlQXNzZXRCdWlsZGVyKGJ1aWxkVGVzdENvbmZpZygpKTtcbiAgICAgIGNvbnN0IG1hdGVyaWFsID0gKGJ1aWxkZXIgYXMgYW55KS5fbWF0ZXJpYWw7XG4gICAgICBzaG91bGQuZXF1YWwobWF0ZXJpYWwuc3BlY1ZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnNwZWNWZXJzaW9uKTtcbiAgICAgIHNob3VsZC5lcXVhbChtYXRlcmlhbC50eFZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnR4VmVyc2lvbik7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdmYWN0b3J5IG1ldGhvZCcsICgpID0+IHtcbiAgICBpdCgnZ2V0VjhQcmVBcHByb3ZlQXNzZXRCdWlsZGVyIHJldHVybnMgYSBWOFByZUFwcHJvdmVBc3NldEJ1aWxkZXInLCAoKSA9PiB7XG4gICAgICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoYnVpbGRUZXN0Q29uZmlnKCkpO1xuICAgICAgc2hvdWxkLm9rKGZhY3RvcnkuZ2V0VjhQcmVBcHByb3ZlQXNzZXRCdWlsZGVyKCkgaW5zdGFuY2VvZiBWOFByZUFwcHJvdmVBc3NldEJ1aWxkZXIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYnVpbGQgdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgY29uc3Qgc2VuZGVyID0gYWNjb3VudHMuYWNjb3VudDE7XG5cbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGEgdjggcHJlLWFwcHJvdmUgYXNzZXQgdHJhbnNhY3Rpb24gd2l0aCB2OCBzcGVjVmVyc2lvbiBpbiBvdXRwdXQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gbmV3IFY4UHJlQXBwcm92ZUFzc2V0QnVpbGRlcihidWlsZFRlc3RDb25maWcoKSlcbiAgICAgICAgLmFzc2V0SWQoQVNTRVRfSUQpXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXIuYWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxIH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pO1xuICAgICAgYnVpbGRlci5hZGRTaWduYXR1cmUoeyBwdWI6IHNlbmRlci5wdWJsaWNLZXkgfSwgQnVmZmVyLmZyb20obW9ja1Rzc1NpZ25hdHVyZSwgJ2hleCcpKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuXG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNwZWNWZXJzaW9uLCB0ZXN0bmV0VjhNYXRlcmlhbC5zcGVjVmVyc2lvbik7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50cmFuc2FjdGlvblZlcnNpb24sIHRlc3RuZXRWOE1hdGVyaWFsLnR4VmVyc2lvbik7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=v8RegisterDidBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v8RegisterDidBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/v8RegisterDidBuilder.ts"],"names":[],"mappings":""}