@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,59 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const should_1 = __importDefault(require("should"));
40
+ const lib_1 = require("../../../src/lib");
41
+ const material = __importStar(require("../../resources/materialData.json"));
42
+ const modifiedMaterial = __importStar(require("../../resources/materialDataModified.json"));
43
+ describe('SingletonRegistry', function () {
44
+ let oldRegistry;
45
+ let newRegistry;
46
+ it('should get the same registry when material is the same', function () {
47
+ oldRegistry = lib_1.SingletonRegistry.getInstance(material);
48
+ should_1.default.notEqual(oldRegistry, null);
49
+ newRegistry = lib_1.SingletonRegistry.getInstance(material);
50
+ oldRegistry.should.equal(newRegistry);
51
+ });
52
+ it('should get a different registry when material is different', function () {
53
+ oldRegistry = lib_1.SingletonRegistry.getInstance(material);
54
+ should_1.default.notEqual(oldRegistry, null);
55
+ newRegistry = lib_1.SingletonRegistry.getInstance(modifiedMaterial);
56
+ oldRegistry.should.not.equal(newRegistry);
57
+ });
58
+ });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xldG9uUmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL3NpbmdsZXRvblJlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLDBDQUFxRDtBQUdyRCw0RUFBOEQ7QUFDOUQsNEZBQThFO0FBRTlFLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRTtJQUM1QixJQUFJLFdBQXlCLENBQUM7SUFDOUIsSUFBSSxXQUF5QixDQUFDO0lBRTlCLEVBQUUsQ0FBQyx3REFBd0QsRUFBRTtRQUMzRCxXQUFXLEdBQUcsdUJBQWlCLENBQUMsV0FBVyxDQUFDLFFBQThCLENBQUMsQ0FBQztRQUM1RSxnQkFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbkMsV0FBVyxHQUFHLHVCQUFpQixDQUFDLFdBQVcsQ0FBQyxRQUE4QixDQUFDLENBQUM7UUFDNUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDeEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsNERBQTRELEVBQUU7UUFDL0QsV0FBVyxHQUFHLHVCQUFpQixDQUFDLFdBQVcsQ0FBQyxRQUE4QixDQUFDLENBQUM7UUFDNUUsZ0JBQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ25DLFdBQVcsR0FBRyx1QkFBaUIsQ0FBQyxXQUFXLENBQUMsZ0JBQXNDLENBQUMsQ0FBQztRQUNwRixXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDNUMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IFNpbmdsZXRvblJlZ2lzdHJ5IH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYic7XG5pbXBvcnQgeyBUeXBlUmVnaXN0cnkgfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1jb3JlL2xpYi90eXBlcyc7XG5pbXBvcnQgeyBJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuaW1wb3J0ICogYXMgbWF0ZXJpYWwgZnJvbSAnLi4vLi4vcmVzb3VyY2VzL21hdGVyaWFsRGF0YS5qc29uJztcbmltcG9ydCAqIGFzIG1vZGlmaWVkTWF0ZXJpYWwgZnJvbSAnLi4vLi4vcmVzb3VyY2VzL21hdGVyaWFsRGF0YU1vZGlmaWVkLmpzb24nO1xuXG5kZXNjcmliZSgnU2luZ2xldG9uUmVnaXN0cnknLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBvbGRSZWdpc3RyeTogVHlwZVJlZ2lzdHJ5O1xuICBsZXQgbmV3UmVnaXN0cnk6IFR5cGVSZWdpc3RyeTtcblxuICBpdCgnc2hvdWxkIGdldCB0aGUgc2FtZSByZWdpc3RyeSB3aGVuIG1hdGVyaWFsIGlzIHRoZSBzYW1lJywgZnVuY3Rpb24gKCkge1xuICAgIG9sZFJlZ2lzdHJ5ID0gU2luZ2xldG9uUmVnaXN0cnkuZ2V0SW5zdGFuY2UobWF0ZXJpYWwgYXMgSW50ZXJmYWNlLk1hdGVyaWFsKTtcbiAgICBzaG91bGQubm90RXF1YWwob2xkUmVnaXN0cnksIG51bGwpO1xuICAgIG5ld1JlZ2lzdHJ5ID0gU2luZ2xldG9uUmVnaXN0cnkuZ2V0SW5zdGFuY2UobWF0ZXJpYWwgYXMgSW50ZXJmYWNlLk1hdGVyaWFsKTtcbiAgICBvbGRSZWdpc3RyeS5zaG91bGQuZXF1YWwobmV3UmVnaXN0cnkpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdldCBhIGRpZmZlcmVudCByZWdpc3RyeSB3aGVuIG1hdGVyaWFsIGlzIGRpZmZlcmVudCcsIGZ1bmN0aW9uICgpIHtcbiAgICBvbGRSZWdpc3RyeSA9IFNpbmdsZXRvblJlZ2lzdHJ5LmdldEluc3RhbmNlKG1hdGVyaWFsIGFzIEludGVyZmFjZS5NYXRlcmlhbCk7XG4gICAgc2hvdWxkLm5vdEVxdWFsKG9sZFJlZ2lzdHJ5LCBudWxsKTtcbiAgICBuZXdSZWdpc3RyeSA9IFNpbmdsZXRvblJlZ2lzdHJ5LmdldEluc3RhbmNlKG1vZGlmaWVkTWF0ZXJpYWwgYXMgSW50ZXJmYWNlLk1hdGVyaWFsKTtcbiAgICBvbGRSZWdpc3RyeS5zaG91bGQubm90LmVxdWFsKG5ld1JlZ2lzdHJ5KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tokenTransferBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenTransferBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/tokenTransferBuilder.ts"],"names":[],"mappings":""}
@@ -0,0 +1,140 @@
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 src_1 = require("../../../src");
9
+ const resources_1 = require("../../resources");
10
+ const base_1 = require("./base");
11
+ const resources_2 = require("../../../src/resources");
12
+ describe('Polyx token transfer Builder - Testnet', () => {
13
+ let builder;
14
+ const sender = resources_1.accounts.rbitgoTokenOwner;
15
+ const senderDID = '0x28e8649fec23dd688090b9b5bb950fd34bf20a014cf05542e3ad0264915ee775';
16
+ const receiverDID = '0x9202856204a721d2f5e8b85408067d54f1ca84390bf4f558b5615a5a6d3bddb8';
17
+ const assetId = '0x780602887b358cf48989d0d9aa6c8d28';
18
+ beforeEach(() => {
19
+ const config = (0, base_1.buildTestConfig)();
20
+ builder = new lib_1.TokenTransferBuilder(config).material(src_1.utils.getMaterial(config.network.type));
21
+ });
22
+ describe('build tokenTransfer transaction', () => {
23
+ it('should build a tokenTransfer transaction', async () => {
24
+ builder
25
+ .toDID(receiverDID)
26
+ .fromDID(senderDID)
27
+ .memo('0')
28
+ .assetId(assetId)
29
+ .amount('100')
30
+ .sender({ address: sender.address })
31
+ .validity({ firstValid: 3933, maxDuration: 64 })
32
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
33
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 200 })
34
+ .fee({ amount: 0, type: 'tip' });
35
+ builder.addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
36
+ const tx = await builder.build();
37
+ const txJson = tx.toJson();
38
+ should_1.default.deepEqual(txJson.amount, '100');
39
+ should_1.default.deepEqual(txJson.toDID, receiverDID);
40
+ should_1.default.deepEqual(txJson.fromDID, senderDID);
41
+ should_1.default.deepEqual(txJson.sender, sender.address);
42
+ should_1.default.deepEqual(txJson.assetId, assetId);
43
+ should_1.default.deepEqual(txJson.memo, '0x3030303030303030303030303030303030303030303030303030303030303030');
44
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
45
+ should_1.default.deepEqual(txJson.referenceBlock, '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
46
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.genesisHash);
47
+ should_1.default.deepEqual(txJson.specVersion, Number(resources_2.testnetMaterial.specVersion));
48
+ should_1.default.deepEqual(txJson.nonce, 200);
49
+ should_1.default.deepEqual(txJson.tip, 0);
50
+ should_1.default.deepEqual(txJson.transactionVersion, Number(resources_2.testnetMaterial.txVersion));
51
+ should_1.default.deepEqual(txJson.chainName, resources_2.testnetMaterial.chainName);
52
+ should_1.default.deepEqual(txJson.eraPeriod, 64);
53
+ const inputs = tx.inputs[0];
54
+ should_1.default.deepEqual(inputs.address, senderDID);
55
+ should_1.default.deepEqual(inputs.value, '100');
56
+ const outputs = tx.outputs[0];
57
+ should_1.default.deepEqual(outputs.address, receiverDID);
58
+ should_1.default.deepEqual(outputs.value, '100');
59
+ });
60
+ it('should build an unsigned tokenTransfer transaction', async () => {
61
+ builder
62
+ .toDID(receiverDID)
63
+ .fromDID(senderDID)
64
+ .memo('0')
65
+ .assetId(assetId)
66
+ .amount('100')
67
+ .sender({ address: sender.address })
68
+ .validity({ firstValid: 3933, maxDuration: 64 })
69
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
70
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 200 })
71
+ .fee({ amount: 0, type: 'tip' });
72
+ const tx = await builder.build();
73
+ const txJson = tx.toJson();
74
+ should_1.default.deepEqual(txJson.amount, '100');
75
+ should_1.default.deepEqual(txJson.toDID, receiverDID);
76
+ should_1.default.deepEqual(txJson.fromDID, senderDID);
77
+ should_1.default.deepEqual(txJson.sender, sender.address);
78
+ should_1.default.deepEqual(txJson.assetId, assetId);
79
+ should_1.default.deepEqual(txJson.memo, '0x3030303030303030303030303030303030303030303030303030303030303030');
80
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
81
+ should_1.default.deepEqual(txJson.referenceBlock, '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
82
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.genesisHash);
83
+ should_1.default.deepEqual(txJson.specVersion, Number(resources_2.testnetMaterial.specVersion));
84
+ should_1.default.deepEqual(txJson.nonce, 200);
85
+ should_1.default.deepEqual(txJson.tip, 0);
86
+ should_1.default.deepEqual(txJson.transactionVersion, Number(resources_2.testnetMaterial.txVersion));
87
+ should_1.default.deepEqual(txJson.chainName, resources_1.chainName);
88
+ should_1.default.deepEqual(txJson.eraPeriod, 64);
89
+ });
90
+ it('should build from raw signed tx', async () => {
91
+ builder.from(resources_1.rawTx.tokenTransfer.signed);
92
+ builder
93
+ .validity({ firstValid: 3933, maxDuration: 64 })
94
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
95
+ const tx = await builder.build();
96
+ const txJson = tx.toJson();
97
+ should_1.default.deepEqual(txJson.amount, '1000000');
98
+ should_1.default.deepEqual(txJson.toDID, '0xbc6f7ec808f361c1353ab9dc88c3cc54b98d9eb60fed9c063e67a40925b8ef61');
99
+ should_1.default.deepEqual(txJson.fromDID, '0x1208d7851e6698249aea40742701ee1ef6cdcced260a7c49c1cca1a9db836342');
100
+ should_1.default.deepEqual(txJson.sender, '5HK1b9uRQqkj422kbWmDYFgzoLcjtVZAgP9yXkQyAMNDJnpX');
101
+ should_1.default.deepEqual(txJson.assetId, '0x780602887b358cf48989d0d9aa6c8d28');
102
+ should_1.default.deepEqual(txJson.memo, '0x3000000000000000000000000000000000000000000000000000000000000000');
103
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
104
+ should_1.default.deepEqual(txJson.referenceBlock, '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
105
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.genesisHash);
106
+ should_1.default.deepEqual(txJson.specVersion, Number(resources_2.testnetMaterial.specVersion));
107
+ should_1.default.deepEqual(txJson.nonce, 3);
108
+ should_1.default.deepEqual(txJson.tip, 0);
109
+ should_1.default.deepEqual(txJson.transactionVersion, Number(resources_2.testnetMaterial.txVersion));
110
+ should_1.default.deepEqual(txJson.chainName, resources_1.chainName);
111
+ should_1.default.deepEqual(txJson.eraPeriod, 64);
112
+ });
113
+ it('should build from raw unsigned tx', async () => {
114
+ builder.from(resources_1.rawTx.tokenTransfer.unsigned);
115
+ builder
116
+ .validity({ firstValid: 3933, maxDuration: 64 })
117
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
118
+ .sender({ address: '5HK1b9uRQqkj422kbWmDYFgzoLcjtVZAgP9yXkQyAMNDJnpX' })
119
+ .addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
120
+ const tx = await builder.build();
121
+ const txJson = tx.toJson();
122
+ should_1.default.deepEqual(txJson.amount, '1000000');
123
+ should_1.default.deepEqual(txJson.toDID, '0xbc6f7ec808f361c1353ab9dc88c3cc54b98d9eb60fed9c063e67a40925b8ef61');
124
+ should_1.default.deepEqual(txJson.fromDID, '0x1208d7851e6698249aea40742701ee1ef6cdcced260a7c49c1cca1a9db836342');
125
+ should_1.default.deepEqual(txJson.sender, '5HK1b9uRQqkj422kbWmDYFgzoLcjtVZAgP9yXkQyAMNDJnpX');
126
+ should_1.default.deepEqual(txJson.assetId, '0x780602887b358cf48989d0d9aa6c8d28');
127
+ should_1.default.deepEqual(txJson.memo, '0x3000000000000000000000000000000000000000000000000000000000000000');
128
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
129
+ should_1.default.deepEqual(txJson.referenceBlock, '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
130
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.genesisHash);
131
+ should_1.default.deepEqual(txJson.specVersion, Number(resources_2.testnetMaterial.specVersion));
132
+ should_1.default.deepEqual(txJson.nonce, 3);
133
+ should_1.default.deepEqual(txJson.eraPeriod, 64);
134
+ should_1.default.deepEqual(txJson.tip, 0);
135
+ should_1.default.deepEqual(txJson.transactionVersion, Number(resources_2.testnetMaterial.txVersion));
136
+ should_1.default.deepEqual(txJson.chainName, resources_1.chainName);
137
+ });
138
+ });
139
+ });
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5UcmFuc2ZlckJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL3Rva2VuVHJhbnNmZXJCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLDBDQUF3RDtBQUN4RCxzQ0FBcUM7QUFFckMsK0NBQTRGO0FBQzVGLGlDQUF5QztBQUN6QyxzREFBeUQ7QUFFekQsUUFBUSxDQUFDLHdDQUF3QyxFQUFFLEdBQUcsRUFBRTtJQUN0RCxJQUFJLE9BQTZCLENBQUM7SUFFbEMsTUFBTSxNQUFNLEdBQUcsb0JBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztJQUN6QyxNQUFNLFNBQVMsR0FBRyxvRUFBb0UsQ0FBQztJQUN2RixNQUFNLFdBQVcsR0FBRyxvRUFBb0UsQ0FBQztJQUN6RixNQUFNLE9BQU8sR0FBRyxvQ0FBb0MsQ0FBQztJQUVyRCxVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsTUFBTSxNQUFNLEdBQUcsSUFBQSxzQkFBZSxHQUFFLENBQUM7UUFDakMsT0FBTyxHQUFHLElBQUksMEJBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLGlDQUFpQyxFQUFFLEdBQUcsRUFBRTtRQUMvQyxFQUFFLENBQUMsMENBQTBDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDeEQsT0FBTztpQkFDSixLQUFLLENBQUMsV0FBVyxDQUFDO2lCQUNsQixPQUFPLENBQUMsU0FBUyxDQUFDO2lCQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDO2lCQUNULE9BQU8sQ0FBQyxPQUFPLENBQUM7aUJBQ2hCLE1BQU0sQ0FBQyxLQUFLLENBQUM7aUJBQ2IsTUFBTSxDQUFDLEVBQUUs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Q0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBUb2tlblRyYW5zZmVyQnVpbGRlciB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWInO1xuaW1wb3J0IHsgdXRpbHMgfSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuXG5pbXBvcnQgeyBhY2NvdW50cywgcmF3VHgsIGNoYWluTmFtZSwgZ2VuZXNpc0hhc2gsIG1vY2tUc3NTaWduYXR1cmUgfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMnO1xuaW1wb3J0IHsgYnVpbGRUZXN0Q29uZmlnIH0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IHRlc3RuZXRNYXRlcmlhbCB9IGZyb20gJy4uLy4uLy4uL3NyYy9yZXNvdXJjZXMnO1xuXG5kZXNjcmliZSgnUG9seXggdG9rZW4gdHJhbnNmZXIgQnVpbGRlciAtIFRlc3RuZXQnLCAoKSA9PiB7XG4gIGxldCBidWlsZGVyOiBUb2tlblRyYW5zZmVyQnVpbGRlcjtcblxuICBjb25zdCBzZW5kZXIgPSBhY2NvdW50cy5yYml0Z29Ub2tlbk93bmVyO1xuICBjb25zdCBzZW5kZXJESUQgPSAnMHgyOGU4NjQ5ZmVjMjNkZDY4ODA5MGI5YjViYjk1MGZkMzRiZjIwYTAxNGNmMDU1NDJlM2FkMDI2NDkxNWVlNzc1JztcbiAgY29uc3QgcmVjZWl2ZXJESUQgPSAnMHg5MjAyODU2MjA0YTcyMWQyZjVlOGI4NTQwODA2N2Q1NGYxY2E4NDM5MGJmNGY1NThiNTYxNWE1YTZkM2JkZGI4JztcbiAgY29uc3QgYXNzZXRJZCA9ICcweDc4MDYwMjg4N2IzNThjZjQ4OTg5ZDBkOWFhNmM4ZDI4JztcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSBidWlsZFRlc3RDb25maWcoKTtcbiAgICBidWlsZGVyID0gbmV3IFRva2VuVHJhbnNmZXJCdWlsZGVyKGNvbmZpZykubWF0ZXJpYWwodXRpbHMuZ2V0TWF0ZXJpYWwoY29uZmlnLm5ldHdvcmsudHlwZSkpO1xuICB9KTtcblxuICBkZXNjcmliZSgnYnVpbGQgdG9rZW5UcmFuc2ZlciB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGEgdG9rZW5UcmFuc2ZlciB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLnRvRElEKHJlY2VpdmVyRElEKVxuICAgICAgICAuZnJvbURJRChzZW5kZXJESUQpXG4gICAgICAgIC5tZW1vKCcwJylcbiAgICAgICAgLmFzc2V0SWQoYXNzZXRJZClcbiAgICAgICAgLmFtb3VudCgnMTAwJylcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlci5hZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDIwMCB9KVxuICAgICAgICAuZmVlKHsgYW1vdW50OiAwLCB0eXBlOiAndGlwJyB9KTtcbiAgICAgIGJ1aWxkZXIuYWRkU2lnbmF0dXJlKHsgcHViOiBzZW5kZXIucHVibGljS2V5IH0sIEJ1ZmZlci5mcm9tKG1vY2tUc3NTaWduYXR1cmUsICdoZXgnKSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uYW1vdW50LCAnMTAwJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50b0RJRCwgcmVjZWl2ZXJESUQpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZnJvbURJRCwgc2VuZGVyRElEKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNlbmRlciwgc2VuZGVyLmFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uYXNzZXRJZCwgYXNzZXRJZCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5tZW1vLCAnMHgzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5ibG9ja051bWJlciwgMzkzMyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5yZWZlcmVuY2VCbG9jaywgJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZ2VuZXNpc0hhc2gsIGdlbmVzaXNIYXNoKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNwZWNWZXJzaW9uLCBOdW1iZXIodGVzdG5ldE1hdGVyaWFsLnNwZWNWZXJzaW9uKSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5ub25jZSwgMjAwKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRpcCwgMCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50cmFuc2FjdGlvblZlcnNpb24sIE51bWJlcih0ZXN0bmV0TWF0ZXJpYWwudHhWZXJzaW9uKSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5jaGFpbk5hbWUsIHRlc3RuZXRNYXRlcmlhbC5jaGFpbk5hbWUpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZXJhUGVyaW9kLCA2NCk7XG5cbiAgICAgIGNvbnN0IGlucHV0cyA9IHR4LmlucHV0c1swXTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwoaW5wdXRzLmFkZHJlc3MsIHNlbmRlckRJRCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKGlucHV0cy52YWx1ZSwgJzEwMCcpO1xuXG4gICAgICBjb25zdCBvdXRwdXRzID0gdHgub3V0cHV0c1swXTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwob3V0cHV0cy5hZGRyZXNzLCByZWNlaXZlckRJRCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKG91dHB1dHMudmFsdWUsICcxMDAnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgYW4gdW5zaWduZWQgdG9rZW5UcmFuc2ZlciB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLnRvRElEKHJlY2VpdmVyRElEKVxuICAgICAgICAuZnJvbURJRChzZW5kZXJESUQpXG4gICAgICAgIC5tZW1vKCcwJylcbiAgICAgICAgLmFzc2V0SWQoYXNzZXRJZClcbiAgICAgICAgLmFtb3VudCgnMTAwJylcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlci5hZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDIwMCB9KVxuICAgICAgICAuZmVlKHsgYW1vdW50OiAwLCB0eXBlOiAndGlwJyB9KTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5hbW91bnQsICcxMDAnKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRvRElELCByZWNlaXZlckRJRCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5mcm9tRElELCBzZW5kZXJESUQpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uc2VuZGVyLCBzZW5kZXIuYWRkcmVzcyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5hc3NldElkLCBhc3NldElkKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLm1lbW8sICcweDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAnKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmJsb2NrTnVtYmVyLCAzOTMzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnJlZmVyZW5jZUJsb2NrLCAnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5nZW5lc2lzSGFzaCwgZ2VuZXNpc0hhc2gpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uc3BlY1ZlcnNpb24sIE51bWJlcih0ZXN0bmV0TWF0ZXJpYWwuc3BlY1ZlcnNpb24pKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLm5vbmNlLCAyMDApO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24udGlwLCAwKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRyYW5zYWN0aW9uVmVyc2lvbiwgTnVtYmVyKHRlc3RuZXRNYXRlcmlhbC50eFZlcnNpb24pKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmNoYWluTmFtZSwgY2hhaW5OYW1lKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmVyYVBlcmlvZCwgNjQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCBmcm9tIHJhdyBzaWduZWQgdHgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBidWlsZGVyLmZyb20ocmF3VHgudG9rZW5UcmFuc2Zlci5zaWduZWQpO1xuICAgICAgYnVpbGRlclxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5hbW91bnQsICcxMDAwMDAwJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50b0RJRCwgJzB4YmM2ZjdlYzgwOGYzNjFjMTM1M2FiOWRjODhjM2NjNTRiOThkOWViNjBmZWQ5YzA2M2U2N2E0MDkyNWI4ZWY2MScpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZnJvbURJRCwgJzB4MTIwOGQ3ODUxZTY2OTgyNDlhZWE0MDc0MjcwMWVlMWVmNmNkY2NlZDI2MGE3YzQ5YzFjY2ExYTlkYjgzNjM0MicpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uc2VuZGVyLCAnNUhLMWI5dVJRcWtqNDIya2JXbURZRmd6b0xjanRWWkFnUDl5WGtReUFNTkRKbnBYJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5hc3NldElkLCAnMHg3ODA2MDI4ODdiMzU4Y2Y0ODk4OWQwZDlhYTZjOGQyOCcpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ubWVtbywgJzB4MzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uYmxvY2tOdW1iZXIsIDM5MzMpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ucmVmZXJlbmNlQmxvY2ssICcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmdlbmVzaXNIYXNoLCBnZW5lc2lzSGFzaCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zcGVjVmVyc2lvbiwgTnVtYmVyKHRlc3RuZXRNYXRlcmlhbC5zcGVjVmVyc2lvbikpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ubm9uY2UsIDMpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24udGlwLCAwKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRyYW5zYWN0aW9uVmVyc2lvbiwgTnVtYmVyKHRlc3RuZXRNYXRlcmlhbC50eFZlcnNpb24pKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmNoYWluTmFtZSwgY2hhaW5OYW1lKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmVyYVBlcmlvZCwgNjQpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBidWlsZCBmcm9tIHJhdyB1bnNpZ25lZCB0eCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGJ1aWxkZXIuZnJvbShyYXdUeC50b2tlblRyYW5zZmVyLnVuc2lnbmVkKTtcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6ICc1SEsxYjl1UlFxa2o0MjJrYldtRFlGZ3pvTGNqdFZaQWdQOXlYa1F5QU1OREpucFgnIH0pXG4gICAgICAgIC5hZGRTaWduYXR1cmUoeyBwdWI6IHNlbmRlci5wdWJsaWNLZXkgfSwgQnVmZmVyLmZyb20obW9ja1Rzc1NpZ25hdHVyZSwgJ2hleCcpKTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmFtb3VudCwgJzEwMDAwMDAnKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRvRElELCAnMHhiYzZmN2VjODA4ZjM2MWMxMzUzYWI5ZGM4OGMzY2M1NGI5OGQ5ZWI2MGZlZDljMDYzZTY3YTQwOTI1YjhlZjYxJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5mcm9tRElELCAnMHgxMjA4ZDc4NTFlNjY5ODI0OWFlYTQwNzQyNzAxZWUxZWY2Y2RjY2VkMjYwYTdjNDljMWNjYTFhOWRiODM2MzQyJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zZW5kZXIsICc1SEsxYjl1UlFxa2o0MjJrYldtRFlGZ3pvTGNqdFZaQWdQOXlYa1F5QU1OREpucFgnKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmFzc2V0SWQsICcweDc4MDYwMjg4N2IzNThjZjQ4OTg5ZDBkOWFhNmM4ZDI4Jyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5tZW1vLCAnMHgzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5ibG9ja051bWJlciwgMzkzMyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5yZWZlcmVuY2VCbG9jaywgJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZ2VuZXNpc0hhc2gsIGdlbmVzaXNIYXNoKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNwZWNWZXJzaW9uLCBOdW1iZXIodGVzdG5ldE1hdGVyaWFsLnNwZWNWZXJzaW9uKSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5ub25jZSwgMyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5lcmFQZXJpb2QsIDY0KTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRpcCwgMCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50cmFuc2FjdGlvblZlcnNpb24sIE51bWJlcih0ZXN0bmV0TWF0ZXJpYWwudHhWZXJzaW9uKSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5jaGFpbk5hbWUsIGNoYWluTmFtZSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=transactionBuilderFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/transactionBuilderFactory.ts"],"names":[],"mappings":""}
@@ -0,0 +1,240 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const statics_1 = require("@bitgo-beta/statics");
40
+ const should_1 = __importDefault(require("should"));
41
+ const lib_1 = require("../../../src/lib");
42
+ const resources_1 = require("../../resources");
43
+ const materialData = __importStar(require("../../resources/materialData.json"));
44
+ const base_1 = require("./base");
45
+ describe('Tao Transaction Builder Factory', function () {
46
+ const sender = resources_1.accounts.account1;
47
+ let factory;
48
+ xdescribe('parse generic builders', function () {
49
+ before(function () {
50
+ factory = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tpolyx'));
51
+ });
52
+ [{ type: 'transfer', builder: lib_1.TransferBuilder }].forEach((txn) => {
53
+ it(`should parse an unsigned ${txn.type} txn and return a ${txn.type} builder`, async () => {
54
+ const builder = factory.from(resources_1.rawTx[txn.type].unsigned).material(materialData);
55
+ builder.should.be.instanceOf(txn.builder);
56
+ builder
57
+ .validity({ firstValid: 3933 })
58
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
59
+ .sender({ address: sender.address });
60
+ const tx = await builder.build();
61
+ should_1.default.equal(tx.toBroadcastFormat(), resources_1.rawTx[txn.type].unsigned);
62
+ });
63
+ it(`should parse a signed ${txn.type} txn and return a ${txn.type} builder`, async () => {
64
+ const builder = factory.from(resources_1.rawTx[txn.type].signed).material(materialData);
65
+ builder.should.be.instanceOf(txn.builder);
66
+ builder
67
+ .validity({ firstValid: 3933 })
68
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
69
+ const tx = await builder.build();
70
+ should_1.default.equal(tx.toBroadcastFormat(), resources_1.rawTx[txn.type].signed);
71
+ });
72
+ });
73
+ });
74
+ describe('tryGetV8Builder routing', function () {
75
+ const receiver = resources_1.accounts.account2;
76
+ let v8TransferTxHex;
77
+ let v8HexTransferTxHex;
78
+ before(async function () {
79
+ const config = (0, base_1.buildTestConfig)();
80
+ // Build an unsigned v8 transferWithMemo tx (plain-string memo, not 0x-prefixed)
81
+ const v8Tx = await new lib_1.V8TransferBuilder(config)
82
+ .amount('1000000')
83
+ .to({ address: receiver.address })
84
+ .sender({ address: sender.address })
85
+ .memo('0')
86
+ .validity({ firstValid: 3933, maxDuration: 64 })
87
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
88
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 1 })
89
+ .fee({ amount: 0, type: 'tip' })
90
+ .build();
91
+ v8TransferTxHex = v8Tx.toBroadcastFormat();
92
+ // Build an unsigned v8 hex-memo transferWithMemo tx
93
+ const v8HexTx = await new lib_1.V8HexTransferBuilder(config)
94
+ .amount('1000000')
95
+ .to({ address: receiver.address })
96
+ .sender({ address: sender.address })
97
+ .memo('56594')
98
+ .validity({ firstValid: 3933, maxDuration: 64 })
99
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
100
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 1 })
101
+ .fee({ amount: 0, type: 'tip' })
102
+ .build();
103
+ v8HexTransferTxHex = v8HexTx.toBroadcastFormat();
104
+ });
105
+ it('routes a v8 transferWithMemo tx to V8TransferBuilder via fallback', function () {
106
+ // A v8 txHex encodes transferWithMemo at call index 0x28 (Balances pallet, call 40),
107
+ // which does not exist in the v7 SDK metadata. The factory falls back to tryGetV8Builder,
108
+ // decodes against v8 metadata, and returns the correct builder.
109
+ const factoryInst = new lib_1.TransactionBuilderFactory((0, base_1.buildTestConfig)());
110
+ const builder = factoryInst.from(v8TransferTxHex);
111
+ should_1.default.ok(builder instanceof lib_1.V8TransferBuilder, 'expected V8TransferBuilder from tryGetV8Builder fallback');
112
+ });
113
+ it('routes a v8 hex-memo transferWithMemo tx to V8HexTransferBuilder via fallback', function () {
114
+ const factoryInst = new lib_1.TransactionBuilderFactory((0, base_1.buildTestConfig)());
115
+ const builder = factoryInst.from(v8HexTransferTxHex);
116
+ should_1.default.ok(builder instanceof lib_1.V8HexTransferBuilder, 'expected V8HexTransferBuilder from tryGetV8Builder fallback');
117
+ });
118
+ it('routes a v7 transferWithMemo tx to TransferBuilder directly', function () {
119
+ const factoryInst = new lib_1.TransactionBuilderFactory((0, base_1.buildTestConfig)());
120
+ const builder = factoryInst.from(resources_1.rawTx.transfer.signed);
121
+ should_1.default.ok(builder instanceof lib_1.TransferBuilder, 'expected TransferBuilder for v7 txHex');
122
+ });
123
+ });
124
+ // Regression test for the bug where getBuilder() decoded a v8 addAndAffirmWithMediators
125
+ // payload with v7 metadata (same call index, so no throw), silently lost sender.did, then
126
+ // routed to the v7 TokenTransferBuilder — causing Joi to throw
127
+ // 'legs[0].fungible.sender.did is required'.
128
+ describe('v8 token transfer routing regression', function () {
129
+ const FROM_DID = '0x1208d7851e6698249aea40742701ee1ef6cdcced260a7c49c1cca1a9db836342';
130
+ const TO_DID = '0xbc6f7ec808f361c1353ab9dc88c3cc54b98d9eb60fed9c063e67a40925b8ef61';
131
+ const ASSET_ID = '0x780602887b358cf48989d0d9aa6c8d28';
132
+ const VALIDITY = { firstValid: 3933, maxDuration: 64 };
133
+ const REF_BLOCK = '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d';
134
+ let unsignedHex;
135
+ let signedHex;
136
+ before(async function () {
137
+ const config = (0, base_1.buildTestConfig)();
138
+ // unsigned (no signature attached)
139
+ const unsignedTx = await new lib_1.V8TokenTransferBuilder(config)
140
+ .assetId(ASSET_ID)
141
+ .amount('1000000')
142
+ .fromDID(FROM_DID)
143
+ .toDID(TO_DID)
144
+ .memo('0')
145
+ .sender({ address: sender.address })
146
+ .validity(VALIDITY)
147
+ .referenceBlock(REF_BLOCK)
148
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 1 })
149
+ .fee({ amount: 0, type: 'tip' })
150
+ .build();
151
+ unsignedHex = unsignedTx.toBroadcastFormat();
152
+ // signed
153
+ const signedBuilder = new lib_1.V8TokenTransferBuilder(config)
154
+ .assetId(ASSET_ID)
155
+ .amount('1000000')
156
+ .fromDID(FROM_DID)
157
+ .toDID(TO_DID)
158
+ .memo('0')
159
+ .sender({ address: sender.address })
160
+ .validity(VALIDITY)
161
+ .referenceBlock(REF_BLOCK)
162
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 1 })
163
+ .fee({ amount: 0, type: 'tip' });
164
+ signedBuilder.addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
165
+ const signedTx = await signedBuilder.build();
166
+ signedHex = signedTx.toBroadcastFormat();
167
+ });
168
+ it('routes a v8 token transfer tx to V8TokenTransferBuilder (not TokenTransferBuilder)', function () {
169
+ // The call index for addAndAffirmWithMediators is identical in v7 and v8, so the v7 decode
170
+ // path "succeeds" but drops sender.did. The fix in getBuilder() detects the missing field
171
+ // and redirects to tryGetV8Builder() before Joi validation fires.
172
+ const factoryInst = new lib_1.TransactionBuilderFactory((0, base_1.buildTestConfig)());
173
+ const builder = factoryInst.from(signedHex);
174
+ should_1.default.ok(builder instanceof lib_1.V8TokenTransferBuilder, 'expected V8TokenTransferBuilder — v8 payload must not be silently mis-routed to v7 TokenTransferBuilder');
175
+ // V8TokenTransferBuilder extends TokenTransferBuilder; verify it is the v8 subclass
176
+ // specifically (constructor name) so a future refactor that breaks the class hierarchy
177
+ // is caught here rather than silently allowing a plain TokenTransferBuilder through.
178
+ should_1.default.equal(builder.constructor.name, 'V8TokenTransferBuilder', 'constructor must be V8TokenTransferBuilder, not plain TokenTransferBuilder');
179
+ });
180
+ it('rebuilds from unsigned v8 token transfer hex with correct fields and matching raw output', async function () {
181
+ const factoryInst = new lib_1.TransactionBuilderFactory((0, base_1.buildTestConfig)());
182
+ const builder = factoryInst.from(unsignedHex);
183
+ builder.validity(VALIDITY).referenceBlock(REF_BLOCK).sender({ address: sender.address });
184
+ const rebuilt = await builder.build();
185
+ const json = rebuilt.toJson();
186
+ should_1.default.equal(json.assetId, ASSET_ID);
187
+ should_1.default.equal(json.amount, '1000000');
188
+ should_1.default.equal(json.fromDID, FROM_DID);
189
+ should_1.default.equal(json.toDID, TO_DID);
190
+ should_1.default.equal(rebuilt.toBroadcastFormat(), unsignedHex, 'unsigned round-trip hex must match original');
191
+ });
192
+ it('rebuilds from signed v8 token transfer hex with correct fields and matching raw output', async function () {
193
+ const factoryInst = new lib_1.TransactionBuilderFactory((0, base_1.buildTestConfig)());
194
+ const builder = factoryInst.from(signedHex);
195
+ builder.validity(VALIDITY).referenceBlock(REF_BLOCK);
196
+ const rebuilt = await builder.build();
197
+ const json = rebuilt.toJson();
198
+ should_1.default.equal(json.assetId, ASSET_ID);
199
+ should_1.default.equal(json.amount, '1000000');
200
+ should_1.default.equal(json.fromDID, FROM_DID);
201
+ should_1.default.equal(json.toDID, TO_DID);
202
+ should_1.default.equal(rebuilt.toBroadcastFormat(), signedHex, 'signed round-trip hex must match original');
203
+ });
204
+ it('forwards factory live material specVersion to V8TokenTransferBuilder (SI-XXXX regression)', async function () {
205
+ // Regression for the bug where getV8TokenTransferBuilder() was called without
206
+ // .material(this._material), causing the builder to use the static placeholder
207
+ // specVersion (8000000) instead of the live chain specVersion. This produced a
208
+ // rebuilt signablePayload with wrong additional bytes, failing verifySignature.
209
+ const liveSpecVersion = 8000020;
210
+ const liveMaterial = {
211
+ ...lib_1.utils.getV8Material(statics_1.NetworkType.TESTNET),
212
+ specVersion: liveSpecVersion,
213
+ };
214
+ // Build an unsigned tx with the live material — its signable payload encodes liveSpecVersion.
215
+ const originalTx = await new lib_1.V8TokenTransferBuilder((0, base_1.buildTestConfig)())
216
+ .material(liveMaterial)
217
+ .assetId(ASSET_ID)
218
+ .amount('1000000')
219
+ .fromDID(FROM_DID)
220
+ .toDID(TO_DID)
221
+ .memo('0')
222
+ .sender({ address: sender.address })
223
+ .validity(VALIDITY)
224
+ .referenceBlock(REF_BLOCK)
225
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 1 })
226
+ .fee({ amount: 0, type: 'tip' })
227
+ .build();
228
+ const originalSignable = originalTx.signablePayload.toString('hex');
229
+ const signingPayloadHex = originalTx.toBroadcastFormat();
230
+ // Factory with the same live material must forward it to the created V8TokenTransferBuilder
231
+ // so the rebuild uses liveSpecVersion, not the static 8000000 placeholder.
232
+ const factoryInst = new lib_1.TransactionBuilderFactory((0, base_1.buildTestConfig)()).material(liveMaterial);
233
+ const rebuiltBuilder = factoryInst.from(signingPayloadHex);
234
+ rebuiltBuilder.sender({ address: sender.address }).validity(VALIDITY).referenceBlock(REF_BLOCK);
235
+ const rebuiltTx = await rebuiltBuilder.build();
236
+ should_1.default.equal(rebuiltTx.signablePayload.toString('hex'), originalSignable, 'signablePayload must match: factory must forward live material to V8TokenTransferBuilder');
237
+ });
238
+ });
239
+ });
240
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlEQUF5RDtBQUN6RCxvREFBNEI7QUFDNUIsMENBTzBCO0FBRTFCLCtDQUFvRTtBQUNwRSxnRkFBa0U7QUFDbEUsaUNBQXlDO0FBRXpDLFFBQVEsQ0FBQyxpQ0FBaUMsRUFBRTtJQUMxQyxNQUFNLE1BQU0sR0FBRyxvQkFBUSxDQUFDLFFBQVEsQ0FBQztJQUNqQyxJQUFJLE9BQWtDLENBQUM7SUFFdkMsU0FBUyxDQUFDLHdCQUF3QixFQUFFO1FBQ2xDLE1BQU0sQ0FBQztZQUNMLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUMvRCxDQUFDLENBQUMsQ0FBQztRQUVILENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxxQkFBZSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUMvRCxFQUFFLENBQUMsNEJBQTRCLEdBQUcsQ0FBQyxJQUFJLHFCQUFxQixHQUFHLENBQUMsSUFBSSxVQUFVLEVBQUUsS0FBSyxJQUFJLEVBQUU7Z0JBQ3pGLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQWtDLENBQUMsQ0FBQztnQkFFcEcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFFMUMsT0FB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QkFBaUIsR0FBRyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUV6RCw0RkFBNEY7WUFDNUYsMkVBQTJFO1lBQzNFLE1BQU0sV0FBVyxHQUFHLElBQUksK0JBQXlCLENBQUMsSUFBQSxzQkFBZSxHQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDNUYsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzNELGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNoRyxNQUFNLFNBQVMsR0FBRyxNQUFNLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUUvQyxnQkFBTSxDQUFDLEtBQUssQ0FDVixTQUFTLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFDekMsZ0JBQWdCLEVBQ2hCLDBGQUEwRixDQUMzRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29pbnMsIE5ldHdvcmtUeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5LFxuICBUcmFuc2ZlckJ1aWxkZXIsXG4gIFY4VHJhbnNmZXJCdWlsZGVyLFxuICBWOEhleFRyYW5zZmVyQnVpbGRlcixcbiAgVjhUb2tlblRyYW5zZmVyQnVpbGRlcixcbiAgdXRpbHMsXG59IGZyb20gJy4uLy4uLy4uL3NyYy9saWInO1xuaW1wb3J0IHsgSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vLi4vc3JjJztcbmltcG9ydCB7IHJhd1R4LCBhY2NvdW50cywgbW9ja1Rzc1NpZ25hdHVyZSB9IGZyb20gJy4uLy4uL3Jlc291cmNlcyc7XG5pbXBvcnQgKiBhcyBtYXRlcmlhbERhdGEgZnJvbSAnLi4vLi4vcmVzb3VyY2VzL21hdGVyaWFsRGF0YS5qc29uJztcbmltcG9ydCB7IGJ1aWxkVGVzdENvbmZpZyB9IGZyb20gJy4vYmFzZSc7XG5cbmRlc2NyaWJlKCdUYW8gVHJhbnNhY3Rpb24gQnVpbGRlciBGYWN0b3J5JywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBzZW5kZXIgPSBhY2NvdW50cy5hY2NvdW50MTtcbiAgbGV0IGZhY3Rvcnk6IFRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnk7XG5cbiAgeGRlc2NyaWJlKCdwYXJzZSBnZW5lcmljIGJ1aWxkZXJzJywgZnVuY3Rpb24gKCkge1xuICAgIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgICBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbnMuZ2V0KCd0cG9seXgnKSk7XG4gICAgfSk7XG5cbiAgICBbeyB0eXBlOiAndHJhbnNmZXInLCBidWlsZGVyOiBUcmFuc2ZlckJ1aWxkZXIgfV0uZm9yRWFjaCgodHhuKSA9PiB7XG4gICAgICBpdChgc2hvdWxkIHBhcnNlIGFuIHVuc2lnbmVkICR7dHhuLnR5cGV9IHR4biBhbmQgcmV0dXJuIGEgJHt0eG4udHlwZX0gYnVpbGRlcmAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZnJvbShyYXdUeFt0eG4udHlwZV0udW5zaWduZWQpLm1hdGVyaWFsKG1hdGVyaWFsRGF0YSBhcyBJbnRlcmZhY2UuTWF0ZXJpYWwpO1xuXG4gICAgICAgIGJ1aWxkZXIuc2hvdWxkLmJlLmluc3RhbmNlT2YodHhuLmJ1aWxkZXIpO1xuXG4gICAgICAgIGJ1aWxkZXJcbiAgICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzIH0pXG4gICAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXIuYWRkcmVzcyB9KTtcbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLCByYXdUeFt0eG4udHlwZV0udW5zaWduZWQpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KGBzaG91bGQgcGFyc2UgYSBzaWduZWQgJHt0eG4udHlwZX0gdHhuIGFuZCByZXR1cm4gYSAke3R4bi50eXBlfSBidWlsZGVyYCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5mcm9tKHJhd1R4W3R4bi50eXBlXS5zaWduZWQpLm1hdGVyaWFsKG1hdGVyaWFsRGF0YSBhcyBJbnRlcmZhY2UuTWF0ZXJpYWwpO1xuXG4gICAgICAgIGJ1aWxkZXIuc2hvdWxkLmJlLmluc3RhbmNlT2YodHhuLmJ1aWxkZXIpO1xuXG4gICAgICAgIGJ1aWxkZXJcbiAgICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzIH0pXG4gICAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKTtcbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIHNob3VsZC5lcXVhbCh0eC50b0Jyb2FkY2FzdEZvcm1hdCgpLCByYXdUeFt0eG4udHlwZV0uc2lnbmVkKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndHJ5R2V0VjhCdWlsZGVyIHJvdXRpbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgcmVjZWl2ZXIgPSBhY2NvdW50cy5hY2NvdW50MjtcblxuICAgIGxldCB2OFRyYW5zZmVyVHhIZXg6IHN0cmluZztcbiAgICBsZXQgdjhIZXhUcmFuc2ZlclR4SGV4OiBzdHJpbmc7XG5cbiAgICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY29uZmlnID0gYnVpbGRUZXN0Q29uZmlnKCk7XG5cbiAgICAgIC8vIEJ1aWxkIGFuIHVuc2lnbmVkIHY4IHRyYW5zZmVyV2l0aE1lbW8gdHggKHBsYWluLXN0cmluZyBtZW1vLCBub3QgMHgtcHJlZml4ZWQpXG4gICAgICBjb25zdCB2OFR4ID0gYXdhaXQgbmV3IFY4VHJhbnNmZXJCdWlsZGVyKGNvbmZpZylcbiAgICAgICAgLmFtb3VudCgnMTAwMDAwMCcpXG4gICAgICAgIC50byh7IGFkZHJlc3M6IHJlY2VpdmVyLmFkZHJlc3MgfSlcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlci5hZGRyZXNzIH0pXG4gICAgICAgIC5tZW1vKCcwJylcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMSB9KVxuICAgICAgICAuZmVlKHsgYW1vdW50OiAwLCB0eXBlOiAndGlwJyB9KVxuICAgICAgICAuYnVpbGQoKTtcbiAgICAgIHY4VHJhbnNmZXJUeEhleCA9IHY4VHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgICAgLy8gQnVpbGQgYW4gdW5zaWduZWQgdjggaGV4LW1lbW8gdHJhbnNmZXJXaXRoTWVtbyB0eFxuICAgICAgY29uc3QgdjhIZXhUeCA9IGF3YWl0IG5ldyBWOEhleFRyYW5zZmVyQnVpbGRlcihjb25maWcpXG4gICAgICAgIC5hbW91bnQoJzEwMDAwMDAnKVxuICAgICAgICAudG8oeyBhZGRyZXNzOiByZWNlaXZlci5hZGRyZXNzIH0pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXIuYWRkcmVzcyB9KVxuICAgICAgICAubWVtbygnNTY1OTQnKVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxIH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pXG4gICAgICAgIC5idWlsZCgpO1xuICAgICAgdjhIZXhUcmFuc2ZlclR4SGV4ID0gdjhIZXhUeC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JvdXRlcyBhIHY4IHRyYW5zZmVyV2l0aE1lbW8gdHggdG8gVjhUcmFuc2ZlckJ1aWxkZXIgdmlhIGZhbGxiYWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gQSB2OCB0eEhleCBlbmNvZGVzIHRyYW5zZmVyV2l0aE1lbW8gYXQgY2FsbCBpbmRleCAweDI4IChCYWxhbmNlcyBwYWxsZXQsIGNhbGwgNDApLFxuICAgICAgLy8gd2hpY2ggZG9lcyBub3QgZXhpc3QgaW4gdGhlIHY3IFNESyBtZXRhZGF0YS4gVGhlIGZhY3RvcnkgZmFsbHMgYmFjayB0byB0cnlHZXRWOEJ1aWxkZXIsXG4gICAgICAvLyBkZWNvZGVzIGFnYWluc3QgdjggbWV0YWRhdGEsIGFuZCByZXR1cm5zIHRoZSBjb3JyZWN0IGJ1aWxkZXIuXG4gICAgICBjb25zdCBmYWN0b3J5SW5zdCA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGJ1aWxkVGVzdENvbmZpZygpKTtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5SW5zdC5mcm9tKHY4VHJhbnNmZXJUeEhleCk7XG4gICAgICBzaG91bGQub2soYnVpbGRlciBpbnN0YW5jZW9mIFY4VHJhbnNmZXJCdWlsZGVyLCAnZXhwZWN0ZWQgVjhUcmFuc2ZlckJ1aWxkZXIgZnJvbSB0cnlHZXRWOEJ1aWxkZXIgZmFsbGJhY2snKTtcbiAgICB9KTtcblxuICAgIGl0KCdyb3V0ZXMgYSB2OCBoZXgtbWVtbyB0cmFuc2ZlcldpdGhNZW1vIHR4IHRvIFY4SGV4VHJhbnNmZXJCdWlsZGVyIHZpYSBmYWxsYmFjaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGZhY3RvcnlJbnN0ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoYnVpbGRUZXN0Q29uZmlnKCkpO1xuICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnlJbnN0LmZyb20odjhIZXhUcmFuc2ZlclR4SGV4KTtcbiAgICAgIHNob3VsZC5vayhidWlsZGVyIGluc3RhbmNlb2YgVjhIZXhUcmFuc2ZlckJ1aWxkZXIsICdleHBlY3RlZCBWOEhleFRyYW5zZmVyQnVpbGRlciBmcm9tIHRyeUdldFY4QnVpbGRlciBmYWxsYmFjaycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JvdXRlcyBhIHY3IHRyYW5zZmVyV2l0aE1lbW8gdHggdG8gVHJhbnNmZXJCdWlsZGVyIGRpcmVjdGx5JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZmFjdG9yeUluc3QgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShidWlsZFRlc3RDb25maWcoKSk7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeUluc3QuZnJvbShyYXdUeC50cmFuc2Zlci5zaWduZWQpO1xuICAgICAgc2hvdWxkLm9rKGJ1aWxkZXIgaW5zdGFuY2VvZiBUcmFuc2ZlckJ1aWxkZXIsICdleHBlY3RlZCBUcmFuc2ZlckJ1aWxkZXIgZm9yIHY3IHR4SGV4Jyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIFJlZ3Jlc3Npb24gdGVzdCBmb3IgdGhlIGJ1ZyB3aGVyZSBnZXRCdWlsZGVyKCkgZGVjb2RlZCBhIHY4IGFkZEFuZEFmZmlybVdpdGhNZWRpYXRvcnNcbiAgLy8gcGF5bG9hZCB3aXRoIHY3IG1ldGFkYXRhIChzYW1lIGNhbGwgaW5kZXgsIHNvIG5vIHRocm93KSwgc2lsZW50bHkgbG9zdCBzZW5kZXIuZGlkLCB0aGVuXG4gIC8vIHJvdXRlZCB0byB0aGUgdjcgVG9rZW5UcmFuc2ZlckJ1aWxkZXIg4oCUIGNhdXNpbmcgSm9pIHRvIHRocm93XG4gIC8vICdsZWdzWzBdLmZ1bmdpYmxlLnNlbmRlci5kaWQgaXMgcmVxdWlyZWQnLlxuICBkZXNjcmliZSgndjggdG9rZW4gdHJhbnNmZXIgcm91dGluZyByZWdyZXNzaW9uJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IEZST01fRElEID0gJzB4MTIwOGQ3ODUxZTY2OTgyNDlhZWE0MDc0MjcwMWVlMWVmNmNkY2NlZDI2MGE3YzQ5YzFjY2ExYTlkYjgzNjM0Mic7XG4gICAgY29uc3QgVE9fRElEID0gJzB4YmM2ZjdlYzgwOGYzNjFjMTM1M2FiOWRjODhjM2NjNTRiOThkOWViNjBmZWQ5YzA2M2U2N2E0MDkyNWI4ZWY2MSc7XG4gICAgY29uc3QgQVNTRVRfSUQgPSAnMHg3ODA2MDI4ODdiMzU4Y2Y0ODk4OWQwZDlhYTZjOGQyOCc7XG4gICAgY29uc3QgVkFMSURJVFkgPSB7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9O1xuICAgIGNvbnN0IFJFRl9CTE9DSyA9ICcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnO1xuXG4gICAgbGV0IHVuc2lnbmVkSGV4OiBzdHJpbmc7XG4gICAgbGV0IHNpZ25lZEhleDogc3RyaW5nO1xuXG4gICAgYmVmb3JlKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IGJ1aWxkVGVzdENvbmZpZygpO1xuXG4gICAgICAvLyB1bnNpZ25lZCAobm8gc2lnbmF0dXJlIGF0dGFjaGVkKVxuICAgICAgY29uc3QgdW5zaWduZWRUeCA9IGF3YWl0IG5ldyBWOFRva2VuVHJhbnNmZXJCdWlsZGVyKGNvbmZpZylcbiAgICAgICAgLmFzc2V0SWQoQVNTRVRfSUQpXG4gICAgICAgIC5hbW91bnQoJzEwMDAwMDAnKVxuICAgICAgICAuZnJvbURJRChGUk9NX0RJRClcbiAgICAgICAgLnRvRElEKFRPX0RJRClcbiAgICAgICAgLm1lbW8oJzAnKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyLmFkZHJlc3MgfSlcbiAgICAgICAgLnZhbGlkaXR5KFZBTElESVRZKVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soUkVGX0JMT0NLKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxIH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pXG4gICAgICAgIC5idWlsZCgpO1xuICAgICAgdW5zaWduZWRIZXggPSB1bnNpZ25lZFR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICAgIC8vIHNpZ25lZFxuICAgICAgY29uc3Qgc2lnbmVkQnVpbGRlciA9IG5ldyBWOFRva2VuVHJhbnNmZXJCdWlsZGVyKGNvbmZpZylcbiAgICAgICAgLmFzc2V0SWQoQVNTRVRfSUQpXG4gICAgICAgIC5hbW91bnQoJzEwMDAwMDAnKVxuICAgICAgICAuZnJvbURJRChGUk9NX0RJRClcbiAgICAgICAgLnRvRElEKFRPX0RJRClcbiAgICAgICAgLm1lbW8oJzAnKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyLmFkZHJlc3MgfSlcbiAgICAgICAgLnZhbGlkaXR5KFZBTElESVRZKVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soUkVGX0JMT0NLKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxIH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pO1xuICAgICAgc2lnbmVkQnVpbGRlci5hZGRTaWduYXR1cmUoeyBwdWI6IHNlbmRlci5wdWJsaWNLZXkgfSwgQnVmZmVyLmZyb20obW9ja1Rzc1NpZ25hdHVyZSwgJ2hleCcpKTtcbiAgICAgIGNvbnN0IHNpZ25lZFR4ID0gYXdhaXQgc2lnbmVkQnVpbGRlci5idWlsZCgpO1xuICAgICAgc2lnbmVkSGV4ID0gc2lnbmVkVHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyb3V0ZXMgYSB2OCB0b2tlbiB0cmFuc2ZlciB0eCB0byBWOFRva2VuVHJhbnNmZXJCdWlsZGVyIChub3QgVG9rZW5UcmFuc2ZlckJ1aWxkZXIpJywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gVGhlIGNhbGwgaW5kZXggZm9yIGFkZEFuZEFmZmlybVdpdGhNZWRpYXRvcnMgaXMgaWRlbnRpY2FsIGluIHY3IGFuZCB2OCwgc28gdGhlIHY3IGRlY29kZVxuICAgICAgLy8gcGF0aCBcInN1Y2NlZWRzXCIgYnV0IGRyb3BzIHNlbmRlci5kaWQuIFRoZSBmaXggaW4gZ2V0QnVpbGRlcigpIGRldGVjdHMgdGhlIG1pc3NpbmcgZmllbGRcbiAgICAgIC8vIGFuZCByZWRpcmVjdHMgdG8gdHJ5R2V0VjhCdWlsZGVyKCkgYmVmb3JlIEpvaSB2YWxpZGF0aW9uIGZpcmVzLlxuICAgICAgY29uc3QgZmFjdG9yeUluc3QgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShidWlsZFRlc3RDb25maWcoKSk7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeUluc3QuZnJvbShzaWduZWRIZXgpO1xuICAgICAgc2hvdWxkLm9rKFxuICAgICAgICBidWlsZGVyIGluc3RhbmNlb2YgVjhUb2tlblRyYW5zZmVyQnVpbGRlcixcbiAgICAgICAgJ2V4cGVjdGVkIFY4VG9rZW5UcmFuc2ZlckJ1aWxkZXIg4oCUIHY4IHBheWxvYWQgbXVzdCBub3QgYmUgc2lsZW50bHkgbWlzLXJvdXRlZCB0byB2NyBUb2tlblRyYW5zZmVyQnVpbGRlcidcbiAgICAgICk7XG4gICAgICAvLyBWOFRva2VuVHJhbnNmZXJCdWlsZGVyIGV4dGVuZHMgVG9rZW5UcmFuc2ZlckJ1aWxkZXI7IHZlcmlmeSBpdCBpcyB0aGUgdjggc3ViY2xhc3NcbiAgICAgIC8vIHNwZWNpZmljYWxseSAoY29uc3RydWN0b3IgbmFtZSkgc28gYSBmdXR1cmUgcmVmYWN0b3IgdGhhdCBicmVha3MgdGhlIGNsYXNzIGhpZXJhcmNoeVxuICAgICAgLy8gaXMgY2F1Z2h0IGhlcmUgcmF0aGVyIHRoYW4gc2lsZW50bHkgYWxsb3dpbmcgYSBwbGFpbiBUb2tlblRyYW5zZmVyQnVpbGRlciB0aHJvdWdoLlxuICAgICAgc2hvdWxkLmVxdWFsKFxuICAgICAgICBidWlsZGVyLmNvbnN0cnVjdG9yLm5hbWUsXG4gICAgICAgICdWOFRva2VuVHJhbnNmZXJCdWlsZGVyJyxcbiAgICAgICAgJ2NvbnN0cnVjdG9yIG11c3QgYmUgVjhUb2tlblRyYW5zZmVyQnVpbGRlciwgbm90IHBsYWluIFRva2VuVHJhbnNmZXJCdWlsZGVyJ1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZWJ1aWxkcyBmcm9tIHVuc2lnbmVkIHY4IHRva2VuIHRyYW5zZmVyIGhleCB3aXRoIGNvcnJlY3QgZmllbGRzIGFuZCBtYXRjaGluZyByYXcgb3V0cHV0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZmFjdG9yeUluc3QgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShidWlsZFRlc3RDb25maWcoKSk7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeUluc3QuZnJvbSh1bnNpZ25lZEhleCk7XG4gICAgICBidWlsZGVyLnZhbGlkaXR5KFZBTElESVRZKS5yZWZlcmVuY2VCbG9jayhSRUZfQkxPQ0spLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlci5hZGRyZXNzIH0pO1xuICAgICAgY29uc3QgcmVidWlsdCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgY29uc3QganNvbiA9IHJlYnVpbHQudG9Kc29uKCk7XG4gICAgICBzaG91bGQuZXF1YWwoanNvbi5hc3NldElkLCBBU1NFVF9JRCk7XG4gICAgICBzaG91bGQuZXF1YWwoanNvbi5hbW91bnQsICcxMDAwMDAwJyk7XG4gICAgICBzaG91bGQuZXF1YWwoanNvbi5mcm9tRElELCBGUk9NX0RJRCk7XG4gICAgICBzaG91bGQuZXF1YWwoanNvbi50b0RJRCwgVE9fRElEKTtcbiAgICAgIHNob3VsZC5lcXVhbChyZWJ1aWx0LnRvQnJvYWRjYXN0Rm9ybWF0KCksIHVuc2lnbmVkSGV4LCAndW5zaWduZWQgcm91bmQtdHJpcCBoZXggbXVzdCBtYXRjaCBvcmlnaW5hbCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlYnVpbGRzIGZyb20gc2lnbmVkIHY4IHRva2VuIHRyYW5zZmVyIGhleCB3aXRoIGNvcnJlY3QgZmllbGRzIGFuZCBtYXRjaGluZyByYXcgb3V0cHV0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZmFjdG9yeUluc3QgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShidWlsZFRlc3RDb25maWcoKSk7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeUluc3QuZnJvbShzaWduZWRIZXgpO1xuICAgICAgYnVpbGRlci52YWxpZGl0eShWQUxJRElUWSkucmVmZXJlbmNlQmxvY2soUkVGX0JMT0NLKTtcbiAgICAgIGNvbnN0IHJlYnVpbHQgPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIGNvbnN0IGpzb24gPSByZWJ1aWx0LnRvSnNvbigpO1xuICAgICAgc2hvdWxkLmVxdWFsKGpzb24uYXNzZXRJZCwgQVNTRVRfSUQpO1xuICAgICAgc2hvdWxkLmVxdWFsKGpzb24uYW1vdW50LCAnMTAwMDAwMCcpO1xuICAgICAgc2hvdWxkLmVxdWFsKGpzb24uZnJvbURJRCwgRlJPTV9ESUQpO1xuICAgICAgc2hvdWxkLmVxdWFsKGpzb24udG9ESUQsIFRPX0RJRCk7XG4gICAgICBzaG91bGQuZXF1YWwocmVidWlsdC50b0Jyb2FkY2FzdEZvcm1hdCgpLCBzaWduZWRIZXgsICdzaWduZWQgcm91bmQtdHJpcCBoZXggbXVzdCBtYXRjaCBvcmlnaW5hbCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2ZvcndhcmRzIGZhY3RvcnkgbGl2ZSBtYXRlcmlhbCBzcGVjVmVyc2lvbiB0byBWOFRva2VuVHJhbnNmZXJCdWlsZGVyIChTSS1YWFhYIHJlZ3Jlc3Npb24pJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gUmVncmVzc2lvbiBmb3IgdGhlIGJ1ZyB3aGVyZSBnZXRWOFRva2VuVHJhbnNmZXJCdWlsZGVyKCkgd2FzIGNhbGxlZCB3aXRob3V0XG4gICAgICAvLyAubWF0ZXJpYWwodGhpcy5fbWF0ZXJpYWwpLCBjYXVzaW5nIHRoZSBidWlsZGVyIHRvIHVzZSB0aGUgc3RhdGljIHBsYWNlaG9sZGVyXG4gICAgICAvLyBzcGVjVmVyc2lvbiAoODAwMDAwMCkgaW5zdGVhZCBvZiB0aGUgbGl2ZSBjaGFpbiBzcGVjVmVyc2lvbi4gVGhpcyBwcm9kdWNlZCBhXG4gICAgICAvLyByZWJ1aWx0IHNpZ25hYmxlUGF5bG9hZCB3aXRoIHdyb25nIGFkZGl0aW9uYWwgYnl0ZXMsIGZhaWxpbmcgdmVyaWZ5U2lnbmF0dXJlLlxuICAgICAgY29uc3QgbGl2ZVNwZWNWZXJzaW9uID0gODAwMDAyMDtcbiAgICAgIGNvbnN0IGxpdmVNYXRlcmlhbCA9IHtcbiAgICAgICAgLi4udXRpbHMuZ2V0VjhNYXRlcmlhbChOZXR3b3JrVHlwZS5URVNUTkVUKSxcbiAgICAgICAgc3BlY1ZlcnNpb246IGxpdmVTcGVjVmVyc2lvbixcbiAgICAgIH0gYXMgSW50ZXJmYWNlLk1hdGVyaWFsO1xuXG4gICAgICAvLyBCdWlsZCBhbiB1bnNpZ25lZCB0eCB3aXRoIHRoZSBsaXZlIG1hdGVyaWFsIOKAlCBpdHMgc2lnbmFibGUgcGF5bG9hZCBlbmNvZGVzIGxpdmVTcGVjVmVyc2lvbi5cbiAgICAgIGNvbnN0IG9yaWdpbmFsVHggPSBhd2FpdCBuZXcgVjhUb2tlblRyYW5zZmVyQnVpbGRlcihidWlsZFRlc3RDb25maWcoKSlcbiAgICAgICAgLm1hdGVyaWFsKGxpdmVNYXRlcmlhbClcbiAgICAgICAgLmFzc2V0SWQoQVNTRVRfSUQpXG4gICAgICAgIC5hbW91bnQoJzEwMDAwMDAnKVxuICAgICAgICAuZnJvbURJRChGUk9NX0RJRClcbiAgICAgICAgLnRvRElEKFRPX0RJRClcbiAgICAgICAgLm1lbW8oJzAnKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyLmFkZHJlc3MgfSlcbiAgICAgICAgLnZhbGlkaXR5KFZBTElESVRZKVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soUkVGX0JMT0NLKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxIH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pXG4gICAgICAgIC5idWlsZCgpO1xuICAgICAgY29uc3Qgb3JpZ2luYWxTaWduYWJsZSA9IG9yaWdpbmFsVHguc2lnbmFibGVQYXlsb2FkLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgIGNvbnN0IHNpZ25pbmdQYXlsb2FkSGV4ID0gb3JpZ2luYWxUeC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgICAvLyBGYWN0b3J5IHdpdGggdGhlIHNhbWUgbGl2ZSBtYXRlcmlhbCBtdXN0IGZvcndhcmQgaXQgdG8gdGhlIGNyZWF0ZWQgVjhUb2tlblRyYW5zZmVyQnVpbGRlclxuICAgICAgLy8gc28gdGhlIHJlYnVpbGQgdXNlcyBsaXZlU3BlY1ZlcnNpb24sIG5vdCB0aGUgc3RhdGljIDgwMDAwMDAgcGxhY2Vob2xkZXIuXG4gICAgICBjb25zdCBmYWN0b3J5SW5zdCA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGJ1aWxkVGVzdENvbmZpZygpKS5tYXRlcmlhbChsaXZlTWF0ZXJpYWwpO1xuICAgICAgY29uc3QgcmVidWlsdEJ1aWxkZXIgPSBmYWN0b3J5SW5zdC5mcm9tKHNpZ25pbmdQYXlsb2FkSGV4KTtcbiAgICAgIHJlYnVpbHRCdWlsZGVyLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlci5hZGRyZXNzIH0pLnZhbGlkaXR5KFZBTElESVRZKS5yZWZlcmVuY2VCbG9jayhSRUZfQkxPQ0spO1xuICAgICAgY29uc3QgcmVidWlsdFR4ID0gYXdhaXQgcmVidWlsdEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgc2hvdWxkLmVxdWFsKFxuICAgICAgICByZWJ1aWx0VHguc2lnbmFibGVQYXlsb2FkLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgb3JpZ2luYWxTaWduYWJsZSxcbiAgICAgICAgJ3NpZ25hYmxlUGF5bG9hZCBtdXN0IG1hdGNoOiBmYWN0b3J5IG11c3QgZm9yd2FyZCBsaXZlIG1hdGVyaWFsIHRvIFY4VG9rZW5UcmFuc2ZlckJ1aWxkZXInXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=transferBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/transferBuilder.ts"],"names":[],"mappings":""}