@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,226 @@
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 sdk_core_1 = require("@bitgo-beta/sdk-core");
11
+ const utils_1 = __importDefault(require("../../../src/lib/utils"));
12
+ const resources_1 = require("../../resources");
13
+ describe('Polyx Nominate Builder', function () {
14
+ let builder;
15
+ const factory = new lib_1.TransactionBuilderFactory(statics_1.coins.get('tpolyx'));
16
+ const senderAddress = resources_1.accounts.account1.address;
17
+ const validatorAddress = resources_1.nominateValidators[0];
18
+ const validatorAddress2 = resources_1.nominateValidators[1];
19
+ beforeEach(() => {
20
+ builder = factory.getNominateBuilder();
21
+ });
22
+ describe('transaction type', () => {
23
+ it('should return StakingVote transaction type', () => {
24
+ should_1.default.equal(builder['transactionType'], sdk_core_1.TransactionType.StakingVote);
25
+ });
26
+ });
27
+ describe('validators setter validation', () => {
28
+ it('should reject empty validators array', () => {
29
+ should_1.default.throws(() => builder.validators([]), /at least 1/);
30
+ });
31
+ it('should reject more than 16 validators', () => {
32
+ const tooMany = Array(17).fill(validatorAddress);
33
+ should_1.default.throws(() => builder.validators(tooMany), /at most 16/);
34
+ });
35
+ it('should reject malformed validator addresses', () => {
36
+ should_1.default.throws(() => builder.validators(['not-a-valid-address']), /is not a well-formed/);
37
+ });
38
+ it('should accept valid single validator', () => {
39
+ should_1.default.doesNotThrow(() => builder.validators([validatorAddress]));
40
+ should_1.default.deepEqual(builder.getValidators(), [validatorAddress]);
41
+ });
42
+ it('should accept multiple valid validators', () => {
43
+ should_1.default.doesNotThrow(() => builder.validators([validatorAddress, validatorAddress2]));
44
+ should_1.default.deepEqual(builder.getValidators(), [validatorAddress, validatorAddress2]);
45
+ });
46
+ it('should accept exactly 16 validators', () => {
47
+ const exactly16 = Array(16).fill(validatorAddress);
48
+ should_1.default.doesNotThrow(() => builder.validators(exactly16));
49
+ });
50
+ });
51
+ describe('build unsigned nominate transaction', () => {
52
+ it('should build an unsigned nominate transaction', async () => {
53
+ const material = utils_1.default.getMaterial(statics_1.coins.get('tpolyx').network.type);
54
+ builder
55
+ .validators([validatorAddress, validatorAddress2])
56
+ .sender({ address: senderAddress })
57
+ .validity({ firstValid: 3933, maxDuration: 64 })
58
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
59
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 15 })
60
+ .fee({ amount: 0, type: 'tip' })
61
+ .material(material);
62
+ const tx = await builder.build();
63
+ should_1.default.exist(tx);
64
+ should_1.default.equal(tx.type, sdk_core_1.TransactionType.StakingVote);
65
+ });
66
+ });
67
+ describe('build signed nominate transaction', () => {
68
+ it('should parse a signed nominate transaction from hex', () => {
69
+ const material = utils_1.default.getMaterial(statics_1.coins.get('tpolyx').network.type);
70
+ const signedBuilder = factory.getNominateBuilder();
71
+ signedBuilder.material(material);
72
+ signedBuilder.from(resources_1.nominateTx.signed);
73
+ const validators = signedBuilder.getValidators();
74
+ should_1.default.exist(validators);
75
+ validators.length.should.be.greaterThan(0);
76
+ });
77
+ });
78
+ describe('validateDecodedTransaction', () => {
79
+ it('should reject non-nominate method name', () => {
80
+ const mockDecoded = {
81
+ method: { name: 'bond', pallet: 'staking', args: {} },
82
+ };
83
+ should_1.default.throws(() => builder.validateDecodedTransaction(mockDecoded), /Invalid transaction type/);
84
+ });
85
+ it('should validate a real built nominate transaction', () => {
86
+ const material = utils_1.default.getMaterial(statics_1.coins.get('tpolyx').network.type);
87
+ builder
88
+ .validators([validatorAddress, validatorAddress2])
89
+ .sender({ address: senderAddress })
90
+ .validity({ firstValid: 3933, maxDuration: 64 })
91
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
92
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 15 })
93
+ .fee({ amount: 0, type: 'tip' })
94
+ .material(material);
95
+ const unsignedTx = builder['buildTransaction']();
96
+ const decodedTx = (0, txwrapper_polkadot_1.decode)(unsignedTx, {
97
+ metadataRpc: material.metadata,
98
+ registry: builder['_registry'],
99
+ });
100
+ should_1.default.equal(decodedTx.method.name, 'nominate');
101
+ should_1.default.doesNotThrow(() => builder.validateDecodedTransaction(decodedTx));
102
+ });
103
+ });
104
+ describe('parse from raw signed transaction', () => {
105
+ it('should parse signed nominate tx and recover validators', () => {
106
+ const material = utils_1.default.getMaterial(statics_1.coins.get('tpolyx').network.type);
107
+ const newBuilder = factory.getNominateBuilder();
108
+ newBuilder.material(material);
109
+ newBuilder.from(resources_1.nominateTx.signed);
110
+ const validators = newBuilder.getValidators();
111
+ should_1.default.exist(validators);
112
+ validators.length.should.be.greaterThan(0);
113
+ });
114
+ });
115
+ describe('parse from raw unsigned transaction', () => {
116
+ it('should parse unsigned nominate tx and recover validators', async () => {
117
+ const material = utils_1.default.getMaterial(statics_1.coins.get('tpolyx').network.type);
118
+ // Build a real unsigned tx first, then parse it back
119
+ const originalBuilder = factory.getNominateBuilder();
120
+ originalBuilder
121
+ .validators([validatorAddress, validatorAddress2])
122
+ .sender({ address: senderAddress })
123
+ .validity({ firstValid: 3933, maxDuration: 64 })
124
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
125
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 15 })
126
+ .fee({ amount: 0, type: 'tip' })
127
+ .material(material);
128
+ const tx = await originalBuilder.build();
129
+ const rawHex = tx.toBroadcastFormat();
130
+ const newBuilder = factory.getNominateBuilder();
131
+ newBuilder.material(material);
132
+ newBuilder.from(rawHex);
133
+ const validators = newBuilder.getValidators();
134
+ should_1.default.exist(validators);
135
+ should_1.default.deepEqual(validators, [validatorAddress, validatorAddress2]);
136
+ });
137
+ });
138
+ describe('round-trip', () => {
139
+ it('should rebuild from serialized unsigned transaction and preserve validators', async () => {
140
+ const material = utils_1.default.getMaterial(statics_1.coins.get('tpolyx').network.type);
141
+ const originalBuilder = factory.getNominateBuilder();
142
+ originalBuilder
143
+ .validators([validatorAddress, validatorAddress2])
144
+ .sender({ address: senderAddress })
145
+ .validity({ firstValid: 3933, maxDuration: 64 })
146
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
147
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 15 })
148
+ .fee({ amount: 0, type: 'tip' })
149
+ .material(material);
150
+ const tx = await originalBuilder.build();
151
+ const rawHex = tx.toBroadcastFormat();
152
+ const rebuiltBuilder = factory.getNominateBuilder();
153
+ rebuiltBuilder.material(material);
154
+ rebuiltBuilder.from(rawHex);
155
+ should_1.default.deepEqual(rebuiltBuilder.getValidators(), [validatorAddress, validatorAddress2]);
156
+ });
157
+ });
158
+ describe('signablePayload (Substrate 256-byte blake2 rule)', () => {
159
+ const buildNominateTx = async (validators) => {
160
+ const material = utils_1.default.getMaterial(statics_1.coins.get('tpolyx').network.type);
161
+ const nominateBuilder = factory.getNominateBuilder();
162
+ nominateBuilder
163
+ .validators(validators)
164
+ .sender({ address: senderAddress })
165
+ .validity({ firstValid: 3933, maxDuration: 64 })
166
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
167
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 15 })
168
+ .fee({ amount: 0, type: 'tip' })
169
+ .material(material);
170
+ return (await nominateBuilder.build());
171
+ };
172
+ it('should return raw payload bytes when the extrinsic is at most 256 bytes', async () => {
173
+ const tx = await buildNominateTx([validatorAddress, validatorAddress2]);
174
+ const signablePayload = tx.signablePayload;
175
+ // small nominate extrinsic stays under the 256-byte threshold, so it is signed as-is
176
+ signablePayload.length.should.be.belowOrEqual(256);
177
+ signablePayload.length.should.not.equal(32);
178
+ // for a sub-256-byte payload, signablePayload is exactly the raw extrinsic payload
179
+ const rawExtrinsicPayload = Buffer.from(tx.rawExtrinsicPayload);
180
+ rawExtrinsicPayload.should.deepEqual(signablePayload);
181
+ // toJson surfaces the full raw payload as rawSignableHex even when it equals signablePayload
182
+ should_1.default.equal(tx.toJson().rawSignableHex, rawExtrinsicPayload.toString('hex'));
183
+ });
184
+ it('should return the 32-byte blake2_256 hash when the extrinsic exceeds 256 bytes', async () => {
185
+ // Each nominate target adds a 33-byte MultiAddress (1-byte variant + 32-byte account id) on
186
+ // top of 79 bytes of fixed signing-payload overhead (call index, era, nonce, tip,
187
+ // spec/transaction versions, genesis + block hash). So 5 targets stay raw at 244 bytes and
188
+ // 6 already cross to 277 bytes (hashed). 8 would also exceed the threshold; this uses 9 to
189
+ // mirror the multi-nomination scenario from SI-926 with margin (376 bytes).
190
+ const manyValidators = Array(9).fill(validatorAddress);
191
+ const tx = await buildNominateTx(manyValidators);
192
+ const signablePayload = tx.signablePayload;
193
+ should_1.default.equal(signablePayload.length, 32);
194
+ // the raw extrinsic payload stays full-length and diverges from the hashed signablePayload
195
+ const rawExtrinsicPayload = Buffer.from(tx.rawExtrinsicPayload);
196
+ rawExtrinsicPayload.length.should.be.greaterThan(256);
197
+ rawExtrinsicPayload.should.not.deepEqual(signablePayload);
198
+ // signablePayload is the blake2_256 hash of the raw extrinsic payload
199
+ utils_1.default.getSubstrateSigningBytes(tx.rawExtrinsicPayload).should.deepEqual(signablePayload);
200
+ // toJson surfaces the full raw payload as rawSignableHex for the HSM signing path
201
+ should_1.default.equal(tx.toJson().rawSignableHex, rawExtrinsicPayload.toString('hex'));
202
+ });
203
+ // The 256-byte boundary is impractical to hit with a real extrinsic, so exercise the
204
+ // raw-vs-hash decision directly through the shared Substrate signing-bytes helper.
205
+ it('should keep payloads of exactly 256 bytes raw and only hash strictly larger ones', () => {
206
+ const at = utils_1.default.getSubstrateSigningBytes(new Uint8Array(256).fill(7));
207
+ should_1.default.equal(at.length, 256);
208
+ at.should.deepEqual(Buffer.alloc(256, 7));
209
+ const below = utils_1.default.getSubstrateSigningBytes(new Uint8Array(255).fill(7));
210
+ should_1.default.equal(below.length, 255);
211
+ const above = utils_1.default.getSubstrateSigningBytes(new Uint8Array(257).fill(7));
212
+ should_1.default.equal(above.length, 32);
213
+ });
214
+ });
215
+ describe('factory routing', () => {
216
+ it('should route raw nominate extrinsic to NominateBuilder', () => {
217
+ const resolvedBuilder = factory.from(resources_1.nominateTx.signed);
218
+ should_1.default.ok(resolvedBuilder instanceof lib_1.NominateBuilder, 'expected NominateBuilder');
219
+ });
220
+ it('should route batchAll bond+nominate to BatchBuilder', () => {
221
+ const resolvedBuilder = factory.from(resources_1.stakingTx.batch.bondAndNominate.signed);
222
+ should_1.default.ok(resolvedBuilder instanceof lib_1.BatchBuilder, 'expected BatchBuilder');
223
+ });
224
+ });
225
+ });
226
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9taW5hdGVCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci9ub21pbmF0ZUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzRUFBdUQ7QUFDdkQsaURBQTRDO0FBQzVDLG9EQUE0QjtBQUM1QiwwQ0FBOEc7QUFDOUcsbURBQXVEO0FBQ3ZELG1FQUEyQztBQUMzQywrQ0FBc0Y7QUFFdEYsUUFBUSxDQUFDLHdCQUF3QixFQUFFO0lBQ2pDLElBQUksT0FBd0IsQ0FBQztJQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLCtCQUF5QixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUVuRSxNQUFNLGFBQWEsR0FBRyxvQkFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7SUFDaEQsTUFBTSxnQkFBZ0IsR0FBRyw4QkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxNQUFNLGlCQUFpQixHQUFHLDhCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWhELFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxPQUFPLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDekMsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFO1FBQ2hDLEVBQUUsQ0FBQyw0Q0FBNEMsRUFBRSxHQUFHLEVBQUU7WUFDcEQsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsMEJBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLDhCQUE4QixFQUFFLEdBQUcsRUFBRTtRQUM1QyxFQUFFLENBQUMsc0NBQXNDLEVBQUUsR0FBRyxFQUFFO1lBQzlDLGdCQUFN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QyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO1FBQy9CLEVBQUUsQ0FBQyx3REFBd0QsRUFBRSxHQUFHLEVBQUU7WUFDaEUsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxzQkFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3hELGdCQUFNLENBQUMsRUFBRSxDQUFDLGVBQWUsWUFBWSxxQkFBZSxFQUFFLDBCQUEwQixDQUFDLENBQUM7UUFDcEYsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMscURBQXFELEVBQUUsR0FBRyxFQUFFO1lBQzdELE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMscUJBQVMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzdFLGdCQUFNLENBQUMsRUFBRSxDQUFDLGVBQWUsWUFBWSxrQkFBWSxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFDOUUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVjb2RlIH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItcG9sa2Fkb3QnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnksIE5vbWluYXRlQnVpbGRlciwgQmF0Y2hCdWlsZGVyLCBQb2x5eFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vLi4vLi4vc3JjL2xpYi91dGlscyc7XG5pbXBvcnQgeyBhY2NvdW50cywgbm9taW5hdGVUeCwgbm9taW5hdGVWYWxpZGF0b3JzLCBzdGFraW5nVHggfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMnO1xuXG5kZXNjcmliZSgnUG9seXggTm9taW5hdGUgQnVpbGRlcicsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJ1aWxkZXI6IE5vbWluYXRlQnVpbGRlcjtcbiAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5zLmdldCgndHBvbHl4JykpO1xuXG4gIGNvbnN0IHNlbmRlckFkZHJlc3MgPSBhY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzO1xuICBjb25zdCB2YWxpZGF0b3JBZGRyZXNzID0gbm9taW5hdGVWYWxpZGF0b3JzWzBdO1xuICBjb25zdCB2YWxpZGF0b3JBZGRyZXNzMiA9IG5vbWluYXRlVmFsaWRhdG9yc1sxXTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBidWlsZGVyID0gZmFjdG9yeS5nZXROb21pbmF0ZUJ1aWxkZXIoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3RyYW5zYWN0aW9uIHR5cGUnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gU3Rha2luZ1ZvdGUgdHJhbnNhY3Rpb24gdHlwZScsICgpID0+IHtcbiAgICAgIHNob3VsZC5lcXVhbChidWlsZGVyWyd0cmFuc2FjdGlvblR5cGUnXSwgVHJhbnNhY3Rpb25UeXBlLlN0YWtpbmdWb3RlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3ZhbGlkYXRvcnMgc2V0dGVyIHZhbGlkYXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZWplY3QgZW1wdHkgdmFsaWRhdG9ycyBhcnJheScsICgpID0+IHtcbiAgICAgIHNob3VsZC50aHJvd3MoKCkgPT4gYnVpbGRlci52YWxpZGF0b3JzKFtdKSwgL2F0IGxlYXN0IDEvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IG1vcmUgdGhhbiAxNiB2YWxpZGF0b3JzJywgKCkgPT4ge1xuICAgICAgY29uc3QgdG9vTWFueSA9IEFycmF5KDE3KS5maWxsKHZhbGlkYXRvckFkZHJlc3MpO1xuICAgICAgc2hvdWxkLnRocm93cygoKSA9PiBidWlsZGVyLnZhbGlkYXRvcnModG9vTWFueSksIC9hdCBtb3N0IDE2Lyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlamVjdCBtYWxmb3JtZWQgdmFsaWRhdG9yIGFkZHJlc3NlcycsICgpID0+IHtcbiAgICAgIHNob3VsZC50aHJvd3MoKCkgPT4gYnVpbGRlci52YWxpZGF0b3JzKFsnbm90LWEtdmFsaWQtYWRkcmVzcyddKSwgL2lzIG5vdCBhIHdlbGwtZm9ybWVkLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFjY2VwdCB2YWxpZCBzaW5nbGUgdmFsaWRhdG9yJywgKCkgPT4ge1xuICAgICAgc2hvdWxkLmRvZXNOb3RUaHJvdygoKSA9PiBidWlsZGVyLnZhbGlkYXRvcnMoW3ZhbGlkYXRvckFkZHJlc3NdKSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKGJ1aWxkZXIuZ2V0VmFsaWRhdG9ycygpLCBbdmFsaWRhdG9yQWRkcmVzc10pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhY2NlcHQgbXVsdGlwbGUgdmFsaWQgdmFsaWRhdG9ycycsICgpID0+IHtcbiAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4gYnVpbGRlci52YWxpZGF0b3JzKFt2YWxpZGF0b3JBZGRyZXNzLCB2YWxpZGF0b3JBZGRyZXNzMl0pKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwoYnVpbGRlci5nZXRWYWxpZGF0b3JzKCksIFt2YWxpZGF0b3JBZGRyZXNzLCB2YWxpZGF0b3JBZGRyZXNzMl0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhY2NlcHQgZXhhY3RseSAxNiB2YWxpZGF0b3JzJywgKCkgPT4ge1xuICAgICAgY29uc3QgZXhhY3RseTE2ID0gQXJyYXkoMTYpLmZpbGwodmFsaWRhdG9yQWRkcmVzcyk7XG4gICAgICBzaG91bGQuZG9lc05vdFRocm93KCgpID0+IGJ1aWxkZXIudmFsaWRhdG9ycyhleGFjdGx5MTYpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2J1aWxkIHVuc2lnbmVkIG5vbWluYXRlIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgYnVpbGQgYW4gdW5zaWduZWQgbm9taW5hdGUgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBtYXRlcmlhbCA9IHV0aWxzLmdldE1hdGVyaWFsKGNvaW5zLmdldCgndHBvbHl4JykubmV0d29yay50eXBlKTtcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLnZhbGlkYXRvcnMoW3ZhbGlkYXRvckFkZHJlc3MsIHZhbGlkYXRvckFkZHJlc3MyXSlcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlckFkZHJlc3MgfSlcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMTUgfSlcbiAgICAgICAgLmZlZSh7IGFtb3VudDogMCwgdHlwZTogJ3RpcCcgfSlcbiAgICAgICAgLm1hdGVyaWFsKG1hdGVyaWFsKTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICBzaG91bGQuZXhpc3QodHgpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5TdGFraW5nVm90ZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdidWlsZCBzaWduZWQgbm9taW5hdGUgdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBwYXJzZSBhIHNpZ25lZCBub21pbmF0ZSB0cmFuc2FjdGlvbiBmcm9tIGhleCcsICgpID0+IHtcbiAgICAgIGNvbnN0IG1hdGVyaWFsID0gdXRpbHMuZ2V0TWF0ZXJpYWwoY29pbnMuZ2V0KCd0cG9seXgnKS5uZXR3b3JrLnR5cGUpO1xuICAgICAgY29uc3Qgc2lnbmVkQnVpbGRlciA9IGZhY3RvcnkuZ2V0Tm9taW5hdGVCdWlsZGVyKCk7XG4gICAgICBzaWduZWRCdWlsZGVyLm1hdGVyaWFsKG1hdGVyaWFsKTtcbiAgICAgIHNpZ25lZEJ1aWxkZXIuZnJvbShub21pbmF0ZVR4LnNpZ25lZCk7XG5cbiAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBzaWduZWRCdWlsZGVyLmdldFZhbGlkYXRvcnMoKTtcbiAgICAgIHNob3VsZC5leGlzdCh2YWxpZGF0b3JzKTtcbiAgICAgIHZhbGlkYXRvcnMubGVuZ3RoLnNob3VsZC5iZS5ncmVhdGVyVGhhbigwKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3ZhbGlkYXRlRGVjb2RlZFRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmVqZWN0IG5vbi1ub21pbmF0ZSBtZXRob2QgbmFtZScsICgpID0+IHtcbiAgICAgIGNvbnN0IG1vY2tEZWNvZGVkID0ge1xuICAgICAgICBtZXRob2Q6IHsgbmFtZTogJ2JvbmQnLCBwYWxsZXQ6ICdzdGFraW5nJywgYXJnczoge30gfSxcbiAgICAgIH07XG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IGJ1aWxkZXIudmFsaWRhdGVEZWNvZGVkVHJhbnNhY3Rpb24obW9ja0RlY29kZWQgYXMgbmV2ZXIpLCAvSW52YWxpZCB0cmFuc2FjdGlvbiB0eXBlLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGEgcmVhbCBidWlsdCBub21pbmF0ZSB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICAgIGNvbnN0IG1hdGVyaWFsID0gdXRpbHMuZ2V0TWF0ZXJpYWwoY29pbnMuZ2V0KCd0cG9seXgnKS5uZXR3b3JrLnR5cGUpO1xuICAgICAgYnVpbGRlclxuICAgICAgICAudmFsaWRhdG9ycyhbdmFsaWRhdG9yQWRkcmVzcywgdmFsaWRhdG9yQWRkcmVzczJdKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyQWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxNSB9KVxuICAgICAgICAuZmVlKHsgYW1vdW50OiAwLCB0eXBlOiAndGlwJyB9KVxuICAgICAgICAubWF0ZXJpYWwobWF0ZXJpYWwpO1xuXG4gICAgICBjb25zdCB1bnNpZ25lZFR4ID0gYnVpbGRlclsnYnVpbGRUcmFuc2FjdGlvbiddKCk7XG4gICAgICBjb25zdCBkZWNvZGVkVHggPSBkZWNvZGUodW5zaWduZWRUeCwge1xuICAgICAgICBtZXRhZGF0YVJwYzogbWF0ZXJpYWwubWV0YWRhdGEsXG4gICAgICAgIHJlZ2lzdHJ5OiBidWlsZGVyWydfcmVnaXN0cnknXSxcbiAgICAgIH0pO1xuXG4gICAgICBzaG91bGQuZXF1YWwoZGVjb2RlZFR4Lm1ldGhvZC5uYW1lLCAnbm9taW5hdGUnKTtcbiAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4gYnVpbGRlci52YWxpZGF0ZURlY29kZWRUcmFuc2FjdGlvbihkZWNvZGVkVHgpKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3BhcnNlIGZyb20gcmF3IHNpZ25lZCB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHBhcnNlIHNpZ25lZCBub21pbmF0ZSB0eCBhbmQgcmVjb3ZlciB2YWxpZGF0b3JzJywgKCkgPT4ge1xuICAgICAgY29uc3QgbWF0ZXJpYWwgPSB1dGlscy5nZXRNYXRlcmlhbChjb2lucy5nZXQoJ3Rwb2x5eCcpLm5ldHdvcmsudHlwZSk7XG4gICAgICBjb25zdCBuZXdCdWlsZGVyID0gZmFjdG9yeS5nZXROb21pbmF0ZUJ1aWxkZXIoKTtcbiAgICAgIG5ld0J1aWxkZXIubWF0ZXJpYWwobWF0ZXJpYWwpO1xuICAgICAgbmV3QnVpbGRlci5mcm9tKG5vbWluYXRlVHguc2lnbmVkKTtcblxuICAgICAgY29uc3QgdmFsaWRhdG9ycyA9IG5ld0J1aWxkZXIuZ2V0VmFsaWRhdG9ycygpO1xuICAgICAgc2hvdWxkLmV4aXN0KHZhbGlkYXRvcnMpO1xuICAgICAgdmFsaWRhdG9ycy5sZW5ndGguc2hvdWxkLmJlLmdyZWF0ZXJUaGFuKDApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncGFyc2UgZnJvbSByYXcgdW5zaWduZWQgdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBwYXJzZSB1bnNpZ25lZCBub21pbmF0ZSB0eCBhbmQgcmVjb3ZlciB2YWxpZGF0b3JzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgbWF0ZXJpYWwgPSB1dGlscy5nZXRNYXRlcmlhbChjb2lucy5nZXQoJ3Rwb2x5eCcpLm5ldHdvcmsudHlwZSk7XG4gICAgICAvLyBCdWlsZCBhIHJlYWwgdW5zaWduZWQgdHggZmlyc3QsIHRoZW4gcGFyc2UgaXQgYmFja1xuICAgICAgY29uc3Qgb3JpZ2luYWxCdWlsZGVyID0gZmFjdG9yeS5nZXROb21pbmF0ZUJ1aWxkZXIoKTtcbiAgICAgIG9yaWdpbmFsQnVpbGRlclxuICAgICAgICAudmFsaWRhdG9ycyhbdmFsaWRhdG9yQWRkcmVzcywgdmFsaWRhdG9yQWRkcmVzczJdKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyQWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxNSB9KVxuICAgICAgICAuZmVlKHsgYW1vdW50OiAwLCB0eXBlOiAndGlwJyB9KVxuICAgICAgICAubWF0ZXJpYWwobWF0ZXJpYWwpO1xuXG4gICAgICBjb25zdCB0eCA9IGF3YWl0IG9yaWdpbmFsQnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgcmF3SGV4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgICAgY29uc3QgbmV3QnVpbGRlciA9IGZhY3RvcnkuZ2V0Tm9taW5hdGVCdWlsZGVyKCk7XG4gICAgICBuZXdCdWlsZGVyLm1hdGVyaWFsKG1hdGVyaWFsKTtcbiAgICAgIG5ld0J1aWxkZXIuZnJvbShyYXdIZXgpO1xuXG4gICAgICBjb25zdCB2YWxpZGF0b3JzID0gbmV3QnVpbGRlci5nZXRWYWxpZGF0b3JzKCk7XG4gICAgICBzaG91bGQuZXhpc3QodmFsaWRhdG9ycyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHZhbGlkYXRvcnMsIFt2YWxpZGF0b3JBZGRyZXNzLCB2YWxpZGF0b3JBZGRyZXNzMl0pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgncm91bmQtdHJpcCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJlYnVpbGQgZnJvbSBzZXJpYWxpemVkIHVuc2lnbmVkIHRyYW5zYWN0aW9uIGFuZCBwcmVzZXJ2ZSB2YWxpZGF0b3JzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgbWF0ZXJpYWwgPSB1dGlscy5nZXRNYXRlcmlhbChjb2lucy5nZXQoJ3Rwb2x5eCcpLm5ldHdvcmsudHlwZSk7XG4gICAgICBjb25zdCBvcmlnaW5hbEJ1aWxkZXIgPSBmYWN0b3J5LmdldE5vbWluYXRlQnVpbGRlcigpO1xuICAgICAgb3JpZ2luYWxCdWlsZGVyXG4gICAgICAgIC52YWxpZGF0b3JzKFt2YWxpZGF0b3JBZGRyZXNzLCB2YWxpZGF0b3JBZGRyZXNzMl0pXG4gICAgICAgIC5zZW5kZXIoeyBhZGRyZXNzOiBzZW5kZXJBZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDE1IH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pXG4gICAgICAgIC5tYXRlcmlhbChtYXRlcmlhbCk7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgb3JpZ2luYWxCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCByYXdIZXggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgICBjb25zdCByZWJ1aWx0QnVpbGRlciA9IGZhY3RvcnkuZ2V0Tm9taW5hdGVCdWlsZGVyKCk7XG4gICAgICByZWJ1aWx0QnVpbGRlci5tYXRlcmlhbChtYXRlcmlhbCk7XG4gICAgICByZWJ1aWx0QnVpbGRlci5mcm9tKHJhd0hleCk7XG5cbiAgICAgIHNob3VsZC5kZWVwRXF1YWwocmVidWlsdEJ1aWxkZXIuZ2V0VmFsaWRhdG9ycygpLCBbdmFsaWRhdG9yQWRkcmVzcywgdmFsaWRhdG9yQWRkcmVzczJdKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NpZ25hYmxlUGF5bG9hZCAoU3Vic3RyYXRlIDI1Ni1ieXRlIGJsYWtlMiBydWxlKScsICgpID0+IHtcbiAgICBjb25zdCBidWlsZE5vbWluYXRlVHggPSBhc3luYyAodmFsaWRhdG9yczogc3RyaW5nW10pID0+IHtcbiAgICAgIGNvbnN0IG1hdGVyaWFsID0gdXRpbHMuZ2V0TWF0ZXJpYWwoY29pbnMuZ2V0KCd0cG9seXgnKS5uZXR3b3JrLnR5cGUpO1xuICAgICAgY29uc3Qgbm9taW5hdGVCdWlsZGVyID0gZmFjdG9yeS5nZXROb21pbmF0ZUJ1aWxkZXIoKTtcbiAgICAgIG5vbWluYXRlQnVpbGRlclxuICAgICAgICAudmFsaWRhdG9ycyh2YWxpZGF0b3JzKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyQWRkcmVzcyB9KVxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKVxuICAgICAgICAuc2VxdWVuY2VJZCh7IG5hbWU6ICdOb25jZScsIGtleXdvcmQ6ICdub25jZScsIHZhbHVlOiAxNSB9KVxuICAgICAgICAuZmVlKHsgYW1vdW50OiAwLCB0eXBlOiAndGlwJyB9KVxuICAgICAgICAubWF0ZXJpYWwobWF0ZXJpYWwpO1xuICAgICAgcmV0dXJuIChhd2FpdCBub21pbmF0ZUJ1aWxkZXIuYnVpbGQoKSkgYXMgUG9seXhUcmFuc2FjdGlvbjtcbiAgICB9O1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gcmF3IHBheWxvYWQgYnl0ZXMgd2hlbiB0aGUgZXh0cmluc2ljIGlzIGF0IG1vc3QgMjU2IGJ5dGVzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZE5vbWluYXRlVHgoW3ZhbGlkYXRvckFkZHJlc3MsIHZhbGlkYXRvckFkZHJlc3MyXSk7XG4gICAgICBjb25zdCBzaWduYWJsZVBheWxvYWQgPSB0eC5zaWduYWJsZVBheWxvYWQ7XG4gICAgICAvLyBzbWFsbCBub21pbmF0ZSBleHRyaW5zaWMgc3RheXMgdW5kZXIgdGhlIDI1Ni1ieXRlIHRocmVzaG9sZCwgc28gaXQgaXMgc2lnbmVkIGFzLWlzXG4gICAgICBzaWduYWJsZVBheWxvYWQubGVuZ3RoLnNob3VsZC5iZS5iZWxvd09yRXF1YWwoMjU2KTtcbiAgICAgIHNpZ25hYmxlUGF5bG9hZC5sZW5ndGguc2hvdWxkLm5vdC5lcXVhbCgzMik7XG4gICAgICAvLyBmb3IgYSBzdWItMjU2LWJ5dGUgcGF5bG9hZCwgc2lnbmFibGVQYXlsb2FkIGlzIGV4YWN0bHkgdGhlIHJhdyBleHRyaW5zaWMgcGF5bG9hZFxuICAgICAgY29uc3QgcmF3RXh0cmluc2ljUGF5bG9hZCA9IEJ1ZmZlci5mcm9tKHR4LnJhd0V4dHJpbnNpY1BheWxvYWQpO1xuICAgICAgcmF3RXh0cmluc2ljUGF5bG9hZC5zaG91bGQuZGVlcEVxdWFsKHNpZ25hYmxlUGF5bG9hZCk7XG4gICAgICAvLyB0b0pzb24gc3VyZmFjZXMgdGhlIGZ1bGwgcmF3IHBheWxvYWQgYXMgcmF3U2lnbmFibGVIZXggZXZlbiB3aGVuIGl0IGVxdWFscyBzaWduYWJsZVBheWxvYWRcbiAgICAgIHNob3VsZC5lcXVhbCh0eC50b0pzb24oKS5yYXdTaWduYWJsZUhleCwgcmF3RXh0cmluc2ljUGF5bG9hZC50b1N0cmluZygnaGV4JykpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIDMyLWJ5dGUgYmxha2UyXzI1NiBoYXNoIHdoZW4gdGhlIGV4dHJpbnNpYyBleGNlZWRzIDI1NiBieXRlcycsIGFzeW5jICgpID0+IHtcbiAgICAgIC8vIEVhY2ggbm9taW5hdGUgdGFyZ2V0IGFkZHMgYSAzMy1ieXRlIE11bHRpQWRkcmVzcyAoMS1ieXRlIHZhcmlhbnQgKyAzMi1ieXRlIGFjY291bnQgaWQpIG9uXG4gICAgICAvLyB0b3Agb2YgNzkgYnl0ZXMgb2YgZml4ZWQgc2lnbmluZy1wYXlsb2FkIG92ZXJoZWFkIChjYWxsIGluZGV4LCBlcmEsIG5vbmNlLCB0aXAsXG4gICAgICAvLyBzcGVjL3RyYW5zYWN0aW9uIHZlcnNpb25zLCBnZW5lc2lzICsgYmxvY2sgaGFzaCkuIFNvIDUgdGFyZ2V0cyBzdGF5IHJhdyBhdCAyNDQgYnl0ZXMgYW5kXG4gICAgICAvLyA2IGFscmVhZHkgY3Jvc3MgdG8gMjc3IGJ5dGVzIChoYXNoZWQpLiA4IHdvdWxkIGFsc28gZXhjZWVkIHRoZSB0aHJlc2hvbGQ7IHRoaXMgdXNlcyA5IHRvXG4gICAgICAvLyBtaXJyb3IgdGhlIG11bHRpLW5vbWluYXRpb24gc2NlbmFyaW8gZnJvbSBTSS05MjYgd2l0aCBtYXJnaW4gKDM3NiBieXRlcykuXG4gICAgICBjb25zdCBtYW55VmFsaWRhdG9ycyA9IEFycmF5KDkpLmZpbGwodmFsaWRhdG9yQWRkcmVzcyk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkTm9taW5hdGVUeChtYW55VmFsaWRhdG9ycyk7XG4gICAgICBjb25zdCBzaWduYWJsZVBheWxvYWQgPSB0eC5zaWduYWJsZVBheWxvYWQ7XG4gICAgICBzaG91bGQuZXF1YWwoc2lnbmFibGVQYXlsb2FkLmxlbmd0aCwgMzIpO1xuICAgICAgLy8gdGhlIHJhdyBleHRyaW5zaWMgcGF5bG9hZCBzdGF5cyBmdWxsLWxlbmd0aCBhbmQgZGl2ZXJnZXMgZnJvbSB0aGUgaGFzaGVkIHNpZ25hYmxlUGF5bG9hZFxuICAgICAgY29uc3QgcmF3RXh0cmluc2ljUGF5bG9hZCA9IEJ1ZmZlci5mcm9tKHR4LnJhd0V4dHJpbnNpY1BheWxvYWQpO1xuICAgICAgcmF3RXh0cmluc2ljUGF5bG9hZC5sZW5ndGguc2hvdWxkLmJlLmdyZWF0ZXJUaGFuKDI1Nik7XG4gICAgICByYXdFeHRyaW5zaWNQYXlsb2FkLnNob3VsZC5ub3QuZGVlcEVxdWFsKHNpZ25hYmxlUGF5bG9hZCk7XG4gICAgICAvLyBzaWduYWJsZVBheWxvYWQgaXMgdGhlIGJsYWtlMl8yNTYgaGFzaCBvZiB0aGUgcmF3IGV4dHJpbnNpYyBwYXlsb2FkXG4gICAgICB1dGlscy5nZXRTdWJzdHJhdGVTaWduaW5nQnl0ZXModHgucmF3RXh0cmluc2ljUGF5bG9hZCkuc2hvdWxkLmRlZXBFcXVhbChzaWduYWJsZVBheWxvYWQpO1xuICAgICAgLy8gdG9Kc29uIHN1cmZhY2VzIHRoZSBmdWxsIHJhdyBwYXlsb2FkIGFzIHJhd1NpZ25hYmxlSGV4IGZvciB0aGUgSFNNIHNpZ25pbmcgcGF0aFxuICAgICAgc2hvdWxkLmVxdWFsKHR4LnRvSnNvbigpLnJhd1NpZ25hYmxlSGV4LCByYXdFeHRyaW5zaWNQYXlsb2FkLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgfSk7XG5cbiAgICAvLyBUaGUgMjU2LWJ5dGUgYm91bmRhcnkgaXMgaW1wcmFjdGljYWwgdG8gaGl0IHdpdGggYSByZWFsIGV4dHJpbnNpYywgc28gZXhlcmNpc2UgdGhlXG4gICAgLy8gcmF3LXZzLWhhc2ggZGVjaXNpb24gZGlyZWN0bHkgdGhyb3VnaCB0aGUgc2hhcmVkIFN1YnN0cmF0ZSBzaWduaW5nLWJ5dGVzIGhlbHBlci5cbiAgICBpdCgnc2hvdWxkIGtlZXAgcGF5bG9hZHMgb2YgZXhhY3RseSAyNTYgYnl0ZXMgcmF3IGFuZCBvbmx5IGhhc2ggc3RyaWN0bHkgbGFyZ2VyIG9uZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBhdCA9IHV0aWxzLmdldFN1YnN0cmF0ZVNpZ25pbmdCeXRlcyhuZXcgVWludDhBcnJheSgyNTYpLmZpbGwoNykpO1xuICAgICAgc2hvdWxkLmVxdWFsKGF0Lmxlbmd0aCwgMjU2KTtcbiAgICAgIGF0LnNob3VsZC5kZWVwRXF1YWwoQnVmZmVyLmFsbG9jKDI1NiwgNykpO1xuXG4gICAgICBjb25zdCBiZWxvdyA9IHV0aWxzLmdldFN1YnN0cmF0ZVNpZ25pbmdCeXRlcyhuZXcgVWludDhBcnJheSgyNTUpLmZpbGwoNykpO1xuICAgICAgc2hvdWxkLmVxdWFsKGJlbG93Lmxlbmd0aCwgMjU1KTtcblxuICAgICAgY29uc3QgYWJvdmUgPSB1dGlscy5nZXRTdWJzdHJhdGVTaWduaW5nQnl0ZXMobmV3IFVpbnQ4QXJyYXkoMjU3KS5maWxsKDcpKTtcbiAgICAgIHNob3VsZC5lcXVhbChhYm92ZS5sZW5ndGgsIDMyKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2ZhY3Rvcnkgcm91dGluZycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJvdXRlIHJhdyBub21pbmF0ZSBleHRyaW5zaWMgdG8gTm9taW5hdGVCdWlsZGVyJywgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzb2x2ZWRCdWlsZGVyID0gZmFjdG9yeS5mcm9tKG5vbWluYXRlVHguc2lnbmVkKTtcbiAgICAgIHNob3VsZC5vayhyZXNvbHZlZEJ1aWxkZXIgaW5zdGFuY2VvZiBOb21pbmF0ZUJ1aWxkZXIsICdleHBlY3RlZCBOb21pbmF0ZUJ1aWxkZXInKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcm91dGUgYmF0Y2hBbGwgYm9uZCtub21pbmF0ZSB0byBCYXRjaEJ1aWxkZXInLCAoKSA9PiB7XG4gICAgICBjb25zdCByZXNvbHZlZEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20oc3Rha2luZ1R4LmJhdGNoLmJvbmRBbmROb21pbmF0ZS5zaWduZWQpO1xuICAgICAgc2hvdWxkLm9rKHJlc29sdmVkQnVpbGRlciBpbnN0YW5jZW9mIEJhdGNoQnVpbGRlciwgJ2V4cGVjdGVkIEJhdGNoQnVpbGRlcicpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=preApproveAssetBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preApproveAssetBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/preApproveAssetBuilder.ts"],"names":[],"mappings":""}
@@ -0,0 +1,115 @@
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 Pre Approve Asset Builder - Testnet', () => {
13
+ let builder;
14
+ const sender = resources_1.accounts.rbitgoTokenOwner;
15
+ const assetId = '0x780602887b358cf48989d0d9aa6c8d28';
16
+ beforeEach(() => {
17
+ const config = (0, base_1.buildTestConfig)();
18
+ builder = new lib_1.PreApproveAssetBuilder(config).material(src_1.utils.getMaterial(config.network.type));
19
+ });
20
+ describe('build preApproveAsset transaction', () => {
21
+ it('should build a preApproveAsset transaction', async () => {
22
+ builder
23
+ .assetId(assetId)
24
+ .sender({ address: sender.address })
25
+ .validity({ firstValid: 3933, maxDuration: 64 })
26
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
27
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 200 })
28
+ .fee({ amount: 0, type: 'tip' });
29
+ builder.addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
30
+ const tx = await builder.build();
31
+ const txJson = tx.toJson();
32
+ should_1.default.deepEqual(txJson.assetId, assetId);
33
+ should_1.default.deepEqual(txJson.sender, sender.address);
34
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
35
+ should_1.default.deepEqual(txJson.referenceBlock, '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
36
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.genesisHash);
37
+ should_1.default.deepEqual(txJson.specVersion, Number(resources_2.testnetMaterial.specVersion));
38
+ should_1.default.deepEqual(txJson.nonce, 200);
39
+ should_1.default.deepEqual(txJson.tip, 0);
40
+ should_1.default.deepEqual(txJson.transactionVersion, Number(resources_2.testnetMaterial.txVersion));
41
+ should_1.default.deepEqual(txJson.chainName, resources_2.testnetMaterial.chainName);
42
+ should_1.default.deepEqual(txJson.eraPeriod, 64);
43
+ const inputs = tx.inputs[0];
44
+ should_1.default.deepEqual(inputs.address, sender.address);
45
+ should_1.default.deepEqual(inputs.value, '0');
46
+ const outputs = tx.outputs[0];
47
+ should_1.default.deepEqual(outputs.address, sender.address);
48
+ should_1.default.deepEqual(outputs.value, '0');
49
+ });
50
+ it('should build an unsigned preApproveAsset transaction', async () => {
51
+ builder
52
+ .assetId(assetId)
53
+ .sender({ address: sender.address })
54
+ .validity({ firstValid: 3933, maxDuration: 64 })
55
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
56
+ .sequenceId({ name: 'Nonce', keyword: 'nonce', value: 200 })
57
+ .fee({ amount: 0, type: 'tip' });
58
+ const tx = await builder.build();
59
+ const txJson = tx.toJson();
60
+ should_1.default.deepEqual(txJson.amount, '0');
61
+ should_1.default.deepEqual(txJson.assetId, assetId);
62
+ should_1.default.deepEqual(txJson.sender, sender.address);
63
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
64
+ should_1.default.deepEqual(txJson.referenceBlock, '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
65
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.genesisHash);
66
+ should_1.default.deepEqual(txJson.specVersion, Number(resources_2.testnetMaterial.specVersion));
67
+ should_1.default.deepEqual(txJson.nonce, 200);
68
+ should_1.default.deepEqual(txJson.tip, 0);
69
+ should_1.default.deepEqual(txJson.transactionVersion, Number(resources_2.testnetMaterial.txVersion));
70
+ should_1.default.deepEqual(txJson.chainName, resources_1.chainName);
71
+ should_1.default.deepEqual(txJson.eraPeriod, 64);
72
+ });
73
+ it('should build from raw signed tx', async () => {
74
+ builder.from(resources_1.rawTx.preApproveAsset.signed);
75
+ builder
76
+ .validity({ firstValid: 3933, maxDuration: 64 })
77
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
78
+ const tx = await builder.build();
79
+ const txJson = tx.toJson();
80
+ should_1.default.deepEqual(txJson.amount, '0');
81
+ should_1.default.deepEqual(txJson.sender, '5DUjX9W4WGN5oU76FBR1tYj7TG6L82Ndagd8RYjpKmu7QNaP');
82
+ should_1.default.deepEqual(txJson.blockNumber, 3933);
83
+ should_1.default.deepEqual(txJson.referenceBlock, '0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d');
84
+ should_1.default.deepEqual(txJson.genesisHash, resources_1.genesisHash);
85
+ should_1.default.deepEqual(txJson.specVersion, Number(resources_2.testnetMaterial.specVersion));
86
+ should_1.default.deepEqual(txJson.nonce, 1);
87
+ should_1.default.deepEqual(txJson.tip, 0);
88
+ should_1.default.deepEqual(txJson.transactionVersion, Number(resources_2.testnetMaterial.txVersion));
89
+ should_1.default.deepEqual(txJson.chainName, resources_1.chainName);
90
+ should_1.default.deepEqual(txJson.eraPeriod, 64);
91
+ });
92
+ it('should build from raw unsigned tx', async () => {
93
+ builder.from(resources_1.rawTx.preApproveAsset.unsigned);
94
+ builder
95
+ .validity({ firstValid: 3933, maxDuration: 64 })
96
+ .referenceBlock('0x149799bc9602cb5cf201f3425fb8d253b2d4e61fc119dcab3249f307f594754d')
97
+ .sender({ address: sender.address })
98
+ .addSignature({ pub: sender.publicKey }, Buffer.from(resources_1.mockTssSignature, 'hex'));
99
+ const tx = await builder.build();
100
+ const txJson = tx.toJson();
101
+ should_1.default.deepEqual(txJson.amount, '0');
102
+ should_1.default.deepEqual(txJson.sender, sender.address);
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, 1);
108
+ should_1.default.deepEqual(txJson.eraPeriod, 64);
109
+ should_1.default.deepEqual(txJson.tip, 0);
110
+ should_1.default.deepEqual(txJson.transactionVersion, Number(resources_2.testnetMaterial.txVersion));
111
+ should_1.default.deepEqual(txJson.chainName, resources_1.chainName);
112
+ });
113
+ });
114
+ });
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlQXBwcm92ZUFzc2V0QnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvcHJlQXBwcm92ZUFzc2V0QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUE0QjtBQUM1QiwwQ0FBMEQ7QUFDMUQsc0NBQXFDO0FBRXJDLCtDQUE0RjtBQUM1RixpQ0FBeUM7QUFDekMsc0RBQXlEO0FBRXpELFFBQVEsQ0FBQywyQ0FBMkMsRUFBRSxHQUFHLEVBQUU7SUFDekQsSUFBSSxPQUErQixDQUFDO0lBRXBDLE1BQU0sTUFBTSxHQUFHLG9CQUFRLENBQUMsZ0JBQWdCLENBQUM7SUFDekMsTUFBTSxPQUFPLEdBQUcsb0NBQW9DLENBQUM7SUFFckQsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLE1BQU0sTUFBTSxHQUFHLElBQUEsc0JBQWUsR0FBRSxDQUFDO1FBQ2pDLE9BQU8sR0FBRyxJQUFJLDRCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxtQ0FBbUMsRUFBRSxHQUFHLEVBQUU7UUFDakQsRUFBRSxDQUFDLDRDQUE0QyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzFELE9BQU87aUJBQ0osT0FBTyxDQUFDLE9BQU8sQ0FBQztpQkFDaEIsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztpQkFDbkMsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUM7aUJBQy9DLGNBQWMsQ0FBQyxvRUFBb0UsQ0FBQztpQkFDcEYsVUFBVSxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8s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O1lBQ2hELGdCQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDM0MsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxvRUFBb0UsQ0FBQyxDQUFDO1lBQzlHLGdCQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsdUJBQVcsQ0FBQyxDQUFDO1lBQ2xELGdCQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLDJCQUFlLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUMxRSxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLGdCQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdkMsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNoQyxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLDJCQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUMvRSxnQkFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLHFCQUFTLENBQUMsQ0FBQztRQUNoRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBQcmVBcHByb3ZlQXNzZXRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYic7XG5pbXBvcnQgeyB1dGlscyB9IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5cbmltcG9ydCB7IGFjY291bnRzLCByYXdUeCwgY2hhaW5OYW1lLCBnZW5lc2lzSGFzaCwgbW9ja1Rzc1NpZ25hdHVyZSB9IGZyb20gJy4uLy4uL3Jlc291cmNlcyc7XG5pbXBvcnQgeyBidWlsZFRlc3RDb25maWcgfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHsgdGVzdG5ldE1hdGVyaWFsIH0gZnJvbSAnLi4vLi4vLi4vc3JjL3Jlc291cmNlcyc7XG5cbmRlc2NyaWJlKCdQb2x5eCBQcmUgQXBwcm92ZSBBc3NldCBCdWlsZGVyIC0gVGVzdG5ldCcsICgpID0+IHtcbiAgbGV0IGJ1aWxkZXI6IFByZUFwcHJvdmVBc3NldEJ1aWxkZXI7XG5cbiAgY29uc3Qgc2VuZGVyID0gYWNjb3VudHMucmJpdGdvVG9rZW5Pd25lcjtcbiAgY29uc3QgYXNzZXRJZCA9ICcweDc4MDYwMjg4N2IzNThjZjQ4OTg5ZDBkOWFhNmM4ZDI4JztcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBjb25zdCBjb25maWcgPSBidWlsZFRlc3RDb25maWcoKTtcbiAgICBidWlsZGVyID0gbmV3IFByZUFwcHJvdmVBc3NldEJ1aWxkZXIoY29uZmlnKS5tYXRlcmlhbCh1dGlscy5nZXRNYXRlcmlhbChjb25maWcubmV0d29yay50eXBlKSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdidWlsZCBwcmVBcHByb3ZlQXNzZXQgdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBidWlsZCBhIHByZUFwcHJvdmVBc3NldCB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLmFzc2V0SWQoYXNzZXRJZClcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlci5hZGRyZXNzIH0pXG4gICAgICAgIC52YWxpZGl0eSh7IGZpcnN0VmFsaWQ6IDM5MzMsIG1heER1cmF0aW9uOiA2NCB9KVxuICAgICAgICAucmVmZXJlbmNlQmxvY2soJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpXG4gICAgICAgIC5zZXF1ZW5jZUlkKHsgbmFtZTogJ05vbmNlJywga2V5d29yZDogJ25vbmNlJywgdmFsdWU6IDIwMCB9KVxuICAgICAgICAuZmVlKHsgYW1vdW50OiAwLCB0eXBlOiAndGlwJyB9KTtcbiAgICAgIGJ1aWxkZXIuYWRkU2lnbmF0dXJlKHsgcHViOiBzZW5kZXIucHVibGljS2V5IH0sIEJ1ZmZlci5mcm9tKG1vY2tUc3NTaWduYXR1cmUsICdoZXgnKSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHR4SnNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uYXNzZXRJZCwgYXNzZXRJZCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zZW5kZXIsIHNlbmRlci5hZGRyZXNzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmJsb2NrTnVtYmVyLCAzOTMzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnJlZmVyZW5jZUJsb2NrLCAnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5nZW5lc2lzSGFzaCwgZ2VuZXNpc0hhc2gpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uc3BlY1ZlcnNpb24sIE51bWJlcih0ZXN0bmV0TWF0ZXJpYWwuc3BlY1ZlcnNpb24pKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLm5vbmNlLCAyMDApO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24udGlwLCAwKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRyYW5zYWN0aW9uVmVyc2lvbiwgTnVtYmVyKHRlc3RuZXRNYXRlcmlhbC50eFZlcnNpb24pKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmNoYWluTmFtZSwgdGVzdG5ldE1hdGVyaWFsLmNoYWluTmFtZSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5lcmFQZXJpb2QsIDY0KTtcblxuICAgICAgY29uc3QgaW5wdXRzID0gdHguaW5wdXRzWzBdO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChpbnB1dHMuYWRkcmVzcywgc2VuZGVyLmFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChpbnB1dHMudmFsdWUsICcwJyk7XG5cbiAgICAgIGNvbnN0IG91dHB1dHMgPSB0eC5vdXRwdXRzWzBdO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChvdXRwdXRzLmFkZHJlc3MsIHNlbmRlci5hZGRyZXNzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwob3V0cHV0cy52YWx1ZSwgJzAnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgYW4gdW5zaWduZWQgcHJlQXBwcm92ZUFzc2V0IHRyYW5zYWN0aW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgYnVpbGRlclxuICAgICAgICAuYXNzZXRJZChhc3NldElkKVxuICAgICAgICAuc2VuZGVyKHsgYWRkcmVzczogc2VuZGVyLmFkZHJlc3MgfSlcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlcXVlbmNlSWQoeyBuYW1lOiAnTm9uY2UnLCBrZXl3b3JkOiAnbm9uY2UnLCB2YWx1ZTogMjAwIH0pXG4gICAgICAgIC5mZWUoeyBhbW91bnQ6IDAsIHR5cGU6ICd0aXAnIH0pO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmFtb3VudCwgJzAnKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmFzc2V0SWQsIGFzc2V0SWQpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uc2VuZGVyLCBzZW5kZXIuYWRkcmVzcyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5ibG9ja051bWJlciwgMzkzMyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5yZWZlcmVuY2VCbG9jaywgJzB4MTQ5Nzk5YmM5NjAyY2I1Y2YyMDFmMzQyNWZiOGQyNTNiMmQ0ZTYxZmMxMTlkY2FiMzI0OWYzMDdmNTk0NzU0ZCcpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZ2VuZXNpc0hhc2gsIGdlbmVzaXNIYXNoKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNwZWNWZXJzaW9uLCBOdW1iZXIodGVzdG5ldE1hdGVyaWFsLnNwZWNWZXJzaW9uKSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5ub25jZSwgMjAwKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRpcCwgMCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50cmFuc2FjdGlvblZlcnNpb24sIE51bWJlcih0ZXN0bmV0TWF0ZXJpYWwudHhWZXJzaW9uKSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5jaGFpbk5hbWUsIGNoYWluTmFtZSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5lcmFQZXJpb2QsIDY0KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgZnJvbSByYXcgc2lnbmVkIHR4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgYnVpbGRlci5mcm9tKHJhd1R4LnByZUFwcHJvdmVBc3NldC5zaWduZWQpO1xuICAgICAgYnVpbGRlclxuICAgICAgICAudmFsaWRpdHkoeyBmaXJzdFZhbGlkOiAzOTMzLCBtYXhEdXJhdGlvbjogNjQgfSlcbiAgICAgICAgLnJlZmVyZW5jZUJsb2NrKCcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QgdHhKc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5hbW91bnQsICcwJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zZW5kZXIsICc1RFVqWDlXNFdHTjVvVTc2RkJSMXRZajdURzZMODJOZGFnZDhSWWpwS211N1FOYVAnKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmJsb2NrTnVtYmVyLCAzOTMzKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnJlZmVyZW5jZUJsb2NrLCAnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5nZW5lc2lzSGFzaCwgZ2VuZXNpc0hhc2gpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uc3BlY1ZlcnNpb24sIE51bWJlcih0ZXN0bmV0TWF0ZXJpYWwuc3BlY1ZlcnNpb24pKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLm5vbmNlLCAxKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnRpcCwgMCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50cmFuc2FjdGlvblZlcnNpb24sIE51bWJlcih0ZXN0bmV0TWF0ZXJpYWwudHhWZXJzaW9uKSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5jaGFpbk5hbWUsIGNoYWluTmFtZSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5lcmFQZXJpb2QsIDY0KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYnVpbGQgZnJvbSByYXcgdW5zaWduZWQgdHgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBidWlsZGVyLmZyb20ocmF3VHgucHJlQXBwcm92ZUFzc2V0LnVuc2lnbmVkKTtcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLnZhbGlkaXR5KHsgZmlyc3RWYWxpZDogMzkzMywgbWF4RHVyYXRpb246IDY0IH0pXG4gICAgICAgIC5yZWZlcmVuY2VCbG9jaygnMHgxNDk3OTliYzk2MDJjYjVjZjIwMWYzNDI1ZmI4ZDI1M2IyZDRlNjFmYzExOWRjYWIzMjQ5ZjMwN2Y1OTQ3NTRkJylcbiAgICAgICAgLnNlbmRlcih7IGFkZHJlc3M6IHNlbmRlci5hZGRyZXNzIH0pXG4gICAgICAgIC5hZGRTaWduYXR1cmUoeyBwdWI6IHNlbmRlci5wdWJsaWNLZXkgfSwgQnVmZmVyLmZyb20obW9ja1Rzc1NpZ25hdHVyZSwgJ2hleCcpKTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmFtb3VudCwgJzAnKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLnNlbmRlciwgc2VuZGVyLmFkZHJlc3MpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uYmxvY2tOdW1iZXIsIDM5MzMpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ucmVmZXJlbmNlQmxvY2ssICcweDE0OTc5OWJjOTYwMmNiNWNmMjAxZjM0MjVmYjhkMjUzYjJkNGU2MWZjMTE5ZGNhYjMyNDlmMzA3ZjU5NDc1NGQnKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwodHhKc29uLmdlbmVzaXNIYXNoLCBnZW5lc2lzSGFzaCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi5zcGVjVmVyc2lvbiwgTnVtYmVyKHRlc3RuZXRNYXRlcmlhbC5zcGVjVmVyc2lvbikpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24ubm9uY2UsIDEpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uZXJhUGVyaW9kLCA2NCk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHR4SnNvbi50aXAsIDApO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24udHJhbnNhY3Rpb25WZXJzaW9uLCBOdW1iZXIodGVzdG5ldE1hdGVyaWFsLnR4VmVyc2lvbikpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbCh0eEpzb24uY2hhaW5OYW1lLCBjaGFpbk5hbWUpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=registerDidWithCDDBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerDidWithCDDBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/registerDidWithCDDBuilder.ts"],"names":[],"mappings":""}