@bitgo-beta/sdk-coin-sol 7.6.4-beta.31 → 7.6.4-beta.310

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 (395) hide show
  1. package/dist/cjs/src/bigint-buffer-guard.d.ts.map +1 -0
  2. package/dist/cjs/src/bigint-buffer-guard.js +29 -0
  3. package/dist/cjs/src/config/token2022StaticConfig.d.ts.map +1 -0
  4. package/dist/cjs/src/config/token2022StaticConfig.js +50 -0
  5. package/dist/cjs/src/index.d.ts.map +1 -0
  6. package/dist/{src → cjs/src}/index.js +1 -1
  7. package/dist/cjs/src/lib/ataInitializationBuilder.d.ts.map +1 -0
  8. package/dist/cjs/src/lib/ataInitializationBuilder.js +196 -0
  9. package/dist/cjs/src/lib/closeAtaBuilder.d.ts.map +1 -0
  10. package/dist/cjs/src/lib/closeAtaBuilder.js +69 -0
  11. package/dist/{src → cjs/src}/lib/constants.d.ts +24 -0
  12. package/dist/cjs/src/lib/constants.d.ts.map +1 -0
  13. package/dist/cjs/src/lib/constants.js +196 -0
  14. package/dist/cjs/src/lib/customInstructionBuilder.d.ts.map +1 -0
  15. package/dist/cjs/src/lib/customInstructionBuilder.js +289 -0
  16. package/dist/cjs/src/lib/explainTransactionWasm.d.ts +21 -0
  17. package/dist/cjs/src/lib/explainTransactionWasm.d.ts.map +1 -0
  18. package/dist/cjs/src/lib/explainTransactionWasm.js +264 -0
  19. package/dist/{src → cjs/src}/lib/iface.d.ts +20 -2
  20. package/dist/cjs/src/lib/iface.d.ts.map +1 -0
  21. package/dist/cjs/src/lib/iface.js +7 -0
  22. package/dist/{src → cjs/src}/lib/index.d.ts +1 -0
  23. package/dist/cjs/src/lib/index.d.ts.map +1 -0
  24. package/dist/{src → cjs/src}/lib/index.js +4 -2
  25. package/dist/{src → cjs/src}/lib/instructionParamsFactory.d.ts +1 -0
  26. package/dist/cjs/src/lib/instructionParamsFactory.d.ts.map +1 -0
  27. package/dist/cjs/src/lib/instructionParamsFactory.js +1059 -0
  28. package/dist/cjs/src/lib/jitoStakePoolOperations.d.ts.map +1 -0
  29. package/dist/cjs/src/lib/jitoStakePoolOperations.js +200 -0
  30. package/dist/cjs/src/lib/keyPair.d.ts.map +1 -0
  31. package/dist/cjs/src/lib/keyPair.js +63 -0
  32. package/dist/cjs/src/lib/messages/index.d.ts.map +1 -0
  33. package/dist/{src → cjs/src}/lib/messages/index.js +1 -1
  34. package/dist/cjs/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
  35. package/dist/cjs/src/lib/messages/messageBuilderFactory.js +19 -0
  36. package/dist/cjs/src/lib/recoverNestedAtaBuilder.d.ts +25 -0
  37. package/dist/cjs/src/lib/recoverNestedAtaBuilder.d.ts.map +1 -0
  38. package/dist/cjs/src/lib/recoverNestedAtaBuilder.js +90 -0
  39. package/dist/cjs/src/lib/solInstructionFactory.d.ts.map +1 -0
  40. package/dist/cjs/src/lib/solInstructionFactory.js +595 -0
  41. package/dist/cjs/src/lib/stakingActivateBuilder.d.ts.map +1 -0
  42. package/dist/cjs/src/lib/stakingActivateBuilder.js +120 -0
  43. package/dist/cjs/src/lib/stakingAuthorizeBuilder.d.ts.map +1 -0
  44. package/dist/cjs/src/lib/stakingAuthorizeBuilder.js +89 -0
  45. package/dist/cjs/src/lib/stakingDeactivateBuilder.d.ts.map +1 -0
  46. package/dist/cjs/src/lib/stakingDeactivateBuilder.js +208 -0
  47. package/dist/cjs/src/lib/stakingDelegateBuilder.d.ts.map +1 -0
  48. package/dist/cjs/src/lib/stakingDelegateBuilder.js +120 -0
  49. package/dist/cjs/src/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
  50. package/dist/cjs/src/lib/stakingRawMsgAuthorizeBuilder.js +110 -0
  51. package/dist/cjs/src/lib/stakingWithdrawBuilder.d.ts.map +1 -0
  52. package/dist/cjs/src/lib/stakingWithdrawBuilder.js +78 -0
  53. package/dist/cjs/src/lib/token2022Config.d.ts.map +1 -0
  54. package/dist/cjs/src/lib/token2022Config.js +27 -0
  55. package/dist/cjs/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  56. package/dist/cjs/src/lib/tokenTransferBuilder.js +188 -0
  57. package/dist/cjs/src/lib/transaction.d.ts.map +1 -0
  58. package/dist/cjs/src/lib/transaction.js +612 -0
  59. package/dist/cjs/src/lib/transactionBuilder.d.ts.map +1 -0
  60. package/dist/cjs/src/lib/transactionBuilder.js +380 -0
  61. package/dist/{src → cjs/src}/lib/transactionBuilderFactory.d.ts +5 -0
  62. package/dist/cjs/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  63. package/dist/cjs/src/lib/transactionBuilderFactory.js +209 -0
  64. package/dist/cjs/src/lib/transferBuilder.d.ts.map +1 -0
  65. package/dist/cjs/src/lib/transferBuilder.js +70 -0
  66. package/dist/cjs/src/lib/transferBuilderV2.d.ts.map +1 -0
  67. package/dist/cjs/src/lib/transferBuilderV2.js +210 -0
  68. package/dist/cjs/src/lib/utils.d.ts.map +1 -0
  69. package/dist/cjs/src/lib/utils.js +595 -0
  70. package/dist/cjs/src/lib/walletInitializationBuilder.d.ts.map +1 -0
  71. package/dist/cjs/src/lib/walletInitializationBuilder.js +71 -0
  72. package/dist/cjs/src/register.d.ts.map +1 -0
  73. package/dist/cjs/src/register.js +15 -0
  74. package/dist/{src → cjs/src}/sol.d.ts +40 -0
  75. package/dist/cjs/src/sol.d.ts.map +1 -0
  76. package/dist/cjs/src/sol.js +1402 -0
  77. package/dist/cjs/src/solToken.d.ts.map +1 -0
  78. package/dist/cjs/src/solToken.js +69 -0
  79. package/dist/cjs/src/tsol.d.ts.map +1 -0
  80. package/dist/cjs/src/tsol.js +24 -0
  81. package/dist/{test → cjs/test}/fixtures/sol.d.ts.map +1 -1
  82. package/dist/cjs/test/fixtures/sol.js +1433 -0
  83. package/dist/{test → cjs/test}/resources/sol.d.ts +27 -27
  84. package/dist/cjs/test/resources/sol.d.ts.map +1 -0
  85. package/dist/cjs/test/resources/sol.js +320 -0
  86. package/dist/cjs/test/unit/explainTransactionWasm.d.ts +5 -0
  87. package/dist/cjs/test/unit/explainTransactionWasm.d.ts.map +1 -0
  88. package/dist/cjs/test/unit/explainTransactionWasm.js +26 -0
  89. package/dist/cjs/test/unit/fixtures/solBackupKey.d.ts.map +1 -0
  90. package/dist/cjs/test/unit/fixtures/solBackupKey.js +8 -0
  91. package/dist/cjs/test/unit/getBuilderFactory.d.ts.map +1 -0
  92. package/dist/cjs/test/unit/getBuilderFactory.js +10 -0
  93. package/dist/cjs/test/unit/instructionParamsFactory.d.ts.map +1 -0
  94. package/dist/cjs/test/unit/instructionParamsFactory.js +412 -0
  95. package/dist/cjs/test/unit/instructionParamsFactory.staking.d.ts.map +1 -0
  96. package/dist/cjs/test/unit/instructionParamsFactory.staking.js +1059 -0
  97. package/dist/cjs/test/unit/jitoWasmVerification.d.ts +2 -0
  98. package/dist/cjs/test/unit/jitoWasmVerification.d.ts.map +1 -0
  99. package/dist/cjs/test/unit/jitoWasmVerification.js +78 -0
  100. package/dist/{test → cjs/test}/unit/keyPair.d.ts.map +1 -1
  101. package/dist/cjs/test/unit/keyPair.js +177 -0
  102. package/dist/cjs/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
  103. package/dist/cjs/test/unit/messages/messageBuilderFactory.js +118 -0
  104. package/dist/cjs/test/unit/messages/simpleMessageBuilder.d.ts.map +1 -0
  105. package/dist/cjs/test/unit/messages/simpleMessageBuilder.js +194 -0
  106. package/dist/{test → cjs/test}/unit/sol.d.ts.map +1 -1
  107. package/dist/cjs/test/unit/sol.js +3326 -0
  108. package/dist/cjs/test/unit/solInstructionFactory.d.ts.map +1 -0
  109. package/dist/cjs/test/unit/solInstructionFactory.js +454 -0
  110. package/dist/cjs/test/unit/solToken.d.ts.map +1 -0
  111. package/dist/cjs/test/unit/solToken.js +31 -0
  112. package/dist/cjs/test/unit/transaction.d.ts.map +1 -0
  113. package/dist/cjs/test/unit/transaction.js +1108 -0
  114. package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +1 -0
  115. package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.js +202 -0
  116. package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +1 -0
  117. package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.js +471 -0
  118. package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +1 -0
  119. package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.js +413 -0
  120. package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +1 -0
  121. package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.js +430 -0
  122. package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +1 -0
  123. package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +157 -0
  124. package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +1 -0
  125. package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.js +384 -0
  126. package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +1 -0
  127. package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.js +224 -0
  128. package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
  129. package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +259 -0
  130. package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  131. package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.js +787 -0
  132. package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  133. package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.js +495 -0
  134. package/dist/cjs/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  135. package/dist/cjs/test/unit/transactionBuilder/transferBuilder.js +286 -0
  136. package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +1 -0
  137. package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.js +862 -0
  138. package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +1 -0
  139. package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.js +259 -0
  140. package/dist/{test → cjs/test}/unit/utils.d.ts.map +1 -1
  141. package/dist/cjs/test/unit/utils.js +517 -0
  142. package/dist/cjs/test/unit/versionedTransaction.d.ts.map +1 -0
  143. package/dist/cjs/test/unit/versionedTransaction.js +207 -0
  144. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  145. package/dist/esm/bigint-buffer-guard.d.ts +1 -0
  146. package/dist/esm/config/token2022StaticConfig.d.ts +3 -0
  147. package/dist/esm/config/token2022StaticConfig.js +47 -0
  148. package/dist/esm/index.d.ts +7 -0
  149. package/dist/esm/index.js +7 -0
  150. package/dist/esm/lib/ataInitializationBuilder.d.ts +47 -0
  151. package/dist/esm/lib/ataInitializationBuilder.js +156 -0
  152. package/dist/esm/lib/closeAtaBuilder.d.ts +19 -0
  153. package/dist/esm/lib/closeAtaBuilder.js +62 -0
  154. package/dist/esm/lib/constants.d.ts +164 -0
  155. package/dist/esm/lib/constants.d.ts.map +1 -0
  156. package/dist/esm/lib/constants.js +193 -0
  157. package/dist/esm/lib/customInstructionBuilder.d.ts +72 -0
  158. package/dist/esm/lib/customInstructionBuilder.js +282 -0
  159. package/dist/esm/lib/explainTransactionWasm.d.ts +21 -0
  160. package/dist/esm/lib/explainTransactionWasm.d.ts.map +1 -0
  161. package/dist/esm/lib/explainTransactionWasm.js +261 -0
  162. package/dist/esm/lib/iface.d.ts +262 -0
  163. package/dist/esm/lib/iface.d.ts.map +1 -0
  164. package/dist/esm/lib/iface.js +3 -0
  165. package/dist/esm/lib/index.d.ts +23 -0
  166. package/dist/{src → esm}/lib/index.d.ts.map +1 -1
  167. package/dist/esm/lib/index.js +23 -0
  168. package/dist/esm/lib/instructionParamsFactory.d.ts +13 -0
  169. package/dist/{src → esm}/lib/instructionParamsFactory.d.ts.map +1 -1
  170. package/dist/esm/lib/instructionParamsFactory.js +1052 -0
  171. package/dist/esm/lib/jitoStakePoolOperations.d.ts +113 -0
  172. package/dist/esm/lib/jitoStakePoolOperations.js +189 -0
  173. package/dist/esm/lib/keyPair.d.ts +26 -0
  174. package/dist/esm/lib/keyPair.js +59 -0
  175. package/dist/esm/lib/messages/index.d.ts +2 -0
  176. package/dist/esm/lib/messages/index.js +2 -0
  177. package/dist/esm/lib/messages/messageBuilderFactory.d.ts +7 -0
  178. package/dist/{src → esm}/lib/messages/messageBuilderFactory.js +5 -9
  179. package/dist/esm/lib/recoverNestedAtaBuilder.d.ts +25 -0
  180. package/dist/esm/lib/recoverNestedAtaBuilder.d.ts.map +1 -0
  181. package/dist/esm/lib/recoverNestedAtaBuilder.js +83 -0
  182. package/dist/esm/lib/solInstructionFactory.d.ts +10 -0
  183. package/dist/esm/lib/solInstructionFactory.d.ts.map +1 -0
  184. package/dist/esm/lib/solInstructionFactory.js +589 -0
  185. package/dist/esm/lib/stakingActivateBuilder.d.ts +59 -0
  186. package/dist/esm/lib/stakingActivateBuilder.js +113 -0
  187. package/dist/esm/lib/stakingAuthorizeBuilder.d.ts +43 -0
  188. package/dist/esm/lib/stakingAuthorizeBuilder.js +82 -0
  189. package/dist/esm/lib/stakingDeactivateBuilder.d.ts +81 -0
  190. package/dist/{src → esm}/lib/stakingDeactivateBuilder.js +31 -38
  191. package/dist/esm/lib/stakingDelegateBuilder.d.ts +42 -0
  192. package/dist/esm/lib/stakingDelegateBuilder.js +113 -0
  193. package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.d.ts +33 -0
  194. package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.js +103 -0
  195. package/dist/esm/lib/stakingWithdrawBuilder.d.ts +31 -0
  196. package/dist/esm/lib/stakingWithdrawBuilder.js +71 -0
  197. package/dist/esm/lib/token2022Config.d.ts +44 -0
  198. package/dist/esm/lib/token2022Config.js +23 -0
  199. package/dist/esm/lib/tokenTransferBuilder.d.ts +41 -0
  200. package/dist/esm/lib/tokenTransferBuilder.js +181 -0
  201. package/dist/esm/lib/transaction.d.ts +103 -0
  202. package/dist/esm/lib/transaction.d.ts.map +1 -0
  203. package/dist/esm/lib/transaction.js +605 -0
  204. package/dist/esm/lib/transactionBuilder.d.ts +128 -0
  205. package/dist/esm/lib/transactionBuilder.js +373 -0
  206. package/dist/esm/lib/transactionBuilderFactory.d.ts +120 -0
  207. package/dist/esm/lib/transactionBuilderFactory.d.ts.map +1 -0
  208. package/dist/esm/lib/transactionBuilderFactory.js +205 -0
  209. package/dist/esm/lib/transferBuilder.d.ts +26 -0
  210. package/dist/esm/lib/transferBuilder.js +63 -0
  211. package/dist/esm/lib/transferBuilderV2.d.ts +43 -0
  212. package/dist/esm/lib/transferBuilderV2.js +203 -0
  213. package/dist/esm/lib/utils.d.ts +200 -0
  214. package/dist/{src → esm}/lib/utils.d.ts.map +1 -1
  215. package/dist/esm/lib/utils.js +558 -0
  216. package/dist/esm/lib/walletInitializationBuilder.d.ts +26 -0
  217. package/dist/esm/lib/walletInitializationBuilder.js +64 -0
  218. package/dist/esm/register.d.ts +3 -0
  219. package/dist/esm/register.js +11 -0
  220. package/dist/esm/sol.d.ts +267 -0
  221. package/dist/esm/sol.d.ts.map +1 -0
  222. package/dist/esm/sol.js +1361 -0
  223. package/dist/esm/solToken.d.ts +37 -0
  224. package/dist/esm/solToken.js +65 -0
  225. package/dist/esm/tsol.d.ts +11 -0
  226. package/dist/esm/tsol.js +20 -0
  227. package/package.json +34 -15
  228. package/dist/src/config/token2022StaticConfig.js +0 -50
  229. package/dist/src/lib/ataInitializationBuilder.js +0 -196
  230. package/dist/src/lib/closeAtaBuilder.js +0 -69
  231. package/dist/src/lib/constants.d.ts.map +0 -1
  232. package/dist/src/lib/constants.js +0 -171
  233. package/dist/src/lib/customInstructionBuilder.js +0 -289
  234. package/dist/src/lib/iface.d.ts.map +0 -1
  235. package/dist/src/lib/iface.js +0 -7
  236. package/dist/src/lib/instructionParamsFactory.js +0 -1036
  237. package/dist/src/lib/jitoStakePoolOperations.js +0 -200
  238. package/dist/src/lib/keyPair.js +0 -63
  239. package/dist/src/lib/solInstructionFactory.d.ts.map +0 -1
  240. package/dist/src/lib/solInstructionFactory.js +0 -572
  241. package/dist/src/lib/stakingActivateBuilder.js +0 -120
  242. package/dist/src/lib/stakingAuthorizeBuilder.js +0 -89
  243. package/dist/src/lib/stakingDelegateBuilder.js +0 -120
  244. package/dist/src/lib/stakingRawMsgAuthorizeBuilder.js +0 -110
  245. package/dist/src/lib/stakingWithdrawBuilder.js +0 -78
  246. package/dist/src/lib/token2022Config.js +0 -27
  247. package/dist/src/lib/tokenTransferBuilder.js +0 -188
  248. package/dist/src/lib/transaction.d.ts.map +0 -1
  249. package/dist/src/lib/transaction.js +0 -595
  250. package/dist/src/lib/transactionBuilder.js +0 -380
  251. package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
  252. package/dist/src/lib/transactionBuilderFactory.js +0 -202
  253. package/dist/src/lib/transferBuilder.js +0 -70
  254. package/dist/src/lib/transferBuilderV2.js +0 -210
  255. package/dist/src/lib/utils.js +0 -589
  256. package/dist/src/lib/walletInitializationBuilder.js +0 -71
  257. package/dist/src/register.js +0 -15
  258. package/dist/src/sol.d.ts.map +0 -1
  259. package/dist/src/sol.js +0 -1285
  260. package/dist/src/solToken.js +0 -69
  261. package/dist/src/tsol.js +0 -24
  262. package/dist/test/fixtures/sol.js +0 -1433
  263. package/dist/test/resources/sol.d.ts.map +0 -1
  264. package/dist/test/resources/sol.js +0 -320
  265. package/dist/test/unit/fixtures/solBackupKey.d.ts.map +0 -1
  266. package/dist/test/unit/fixtures/solBackupKey.js +0 -8
  267. package/dist/test/unit/getBuilderFactory.d.ts.map +0 -1
  268. package/dist/test/unit/getBuilderFactory.js +0 -10
  269. package/dist/test/unit/instructionParamsFactory.d.ts.map +0 -1
  270. package/dist/test/unit/instructionParamsFactory.js +0 -412
  271. package/dist/test/unit/instructionParamsFactory.staking.d.ts.map +0 -1
  272. package/dist/test/unit/instructionParamsFactory.staking.js +0 -1059
  273. package/dist/test/unit/keyPair.js +0 -177
  274. package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +0 -1
  275. package/dist/test/unit/messages/messageBuilderFactory.js +0 -118
  276. package/dist/test/unit/messages/simpleMessageBuilder.d.ts.map +0 -1
  277. package/dist/test/unit/messages/simpleMessageBuilder.js +0 -194
  278. package/dist/test/unit/sol.js +0 -3108
  279. package/dist/test/unit/solInstructionFactory.d.ts.map +0 -1
  280. package/dist/test/unit/solInstructionFactory.js +0 -454
  281. package/dist/test/unit/solToken.d.ts.map +0 -1
  282. package/dist/test/unit/solToken.js +0 -31
  283. package/dist/test/unit/transaction.d.ts.map +0 -1
  284. package/dist/test/unit/transaction.js +0 -983
  285. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +0 -1
  286. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.js +0 -202
  287. package/dist/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +0 -1
  288. package/dist/test/unit/transactionBuilder/ataInitBuilder.js +0 -471
  289. package/dist/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +0 -1
  290. package/dist/test/unit/transactionBuilder/customInstructionBuilder.js +0 -413
  291. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +0 -1
  292. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.js +0 -430
  293. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +0 -1
  294. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +0 -157
  295. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +0 -1
  296. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.js +0 -384
  297. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +0 -1
  298. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.js +0 -224
  299. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -1
  300. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +0 -259
  301. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +0 -1
  302. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +0 -787
  303. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +0 -1
  304. package/dist/test/unit/transactionBuilder/transactionBuilder.js +0 -495
  305. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +0 -1
  306. package/dist/test/unit/transactionBuilder/transferBuilder.js +0 -286
  307. package/dist/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +0 -1
  308. package/dist/test/unit/transactionBuilder/transferBuilderV2.js +0 -862
  309. package/dist/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +0 -1
  310. package/dist/test/unit/transactionBuilder/walletInitBuilder.js +0 -259
  311. package/dist/test/unit/utils.js +0 -517
  312. package/dist/test/unit/versionedTransaction.d.ts.map +0 -1
  313. package/dist/test/unit/versionedTransaction.js +0 -207
  314. package/dist/tsconfig.tsbuildinfo +0 -1
  315. /package/dist/{src → cjs/src}/bigint-buffer-guard.d.ts +0 -0
  316. /package/dist/{src → cjs/src}/config/token2022StaticConfig.d.ts +0 -0
  317. /package/dist/{src → cjs/src}/index.d.ts +0 -0
  318. /package/dist/{src → cjs/src}/lib/ataInitializationBuilder.d.ts +0 -0
  319. /package/dist/{src → cjs/src}/lib/closeAtaBuilder.d.ts +0 -0
  320. /package/dist/{src → cjs/src}/lib/customInstructionBuilder.d.ts +0 -0
  321. /package/dist/{src → cjs/src}/lib/jitoStakePoolOperations.d.ts +0 -0
  322. /package/dist/{src → cjs/src}/lib/keyPair.d.ts +0 -0
  323. /package/dist/{src → cjs/src}/lib/messages/index.d.ts +0 -0
  324. /package/dist/{src → cjs/src}/lib/messages/messageBuilderFactory.d.ts +0 -0
  325. /package/dist/{src → cjs/src}/lib/solInstructionFactory.d.ts +0 -0
  326. /package/dist/{src → cjs/src}/lib/stakingActivateBuilder.d.ts +0 -0
  327. /package/dist/{src → cjs/src}/lib/stakingAuthorizeBuilder.d.ts +0 -0
  328. /package/dist/{src → cjs/src}/lib/stakingDeactivateBuilder.d.ts +0 -0
  329. /package/dist/{src → cjs/src}/lib/stakingDelegateBuilder.d.ts +0 -0
  330. /package/dist/{src → cjs/src}/lib/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
  331. /package/dist/{src → cjs/src}/lib/stakingWithdrawBuilder.d.ts +0 -0
  332. /package/dist/{src → cjs/src}/lib/token2022Config.d.ts +0 -0
  333. /package/dist/{src → cjs/src}/lib/tokenTransferBuilder.d.ts +0 -0
  334. /package/dist/{src → cjs/src}/lib/transaction.d.ts +0 -0
  335. /package/dist/{src → cjs/src}/lib/transactionBuilder.d.ts +0 -0
  336. /package/dist/{src → cjs/src}/lib/transferBuilder.d.ts +0 -0
  337. /package/dist/{src → cjs/src}/lib/transferBuilderV2.d.ts +0 -0
  338. /package/dist/{src → cjs/src}/lib/utils.d.ts +0 -0
  339. /package/dist/{src → cjs/src}/lib/walletInitializationBuilder.d.ts +0 -0
  340. /package/dist/{src → cjs/src}/register.d.ts +0 -0
  341. /package/dist/{src → cjs/src}/solToken.d.ts +0 -0
  342. /package/dist/{src → cjs/src}/tsol.d.ts +0 -0
  343. /package/dist/{test → cjs/test}/fixtures/sol.d.ts +0 -0
  344. /package/dist/{test → cjs/test}/unit/fixtures/solBackupKey.d.ts +0 -0
  345. /package/dist/{test → cjs/test}/unit/getBuilderFactory.d.ts +0 -0
  346. /package/dist/{test → cjs/test}/unit/instructionParamsFactory.d.ts +0 -0
  347. /package/dist/{test → cjs/test}/unit/instructionParamsFactory.staking.d.ts +0 -0
  348. /package/dist/{test → cjs/test}/unit/keyPair.d.ts +0 -0
  349. /package/dist/{test → cjs/test}/unit/messages/messageBuilderFactory.d.ts +0 -0
  350. /package/dist/{test → cjs/test}/unit/messages/simpleMessageBuilder.d.ts +0 -0
  351. /package/dist/{test → cjs/test}/unit/sol.d.ts +0 -0
  352. /package/dist/{test → cjs/test}/unit/solInstructionFactory.d.ts +0 -0
  353. /package/dist/{test → cjs/test}/unit/solToken.d.ts +0 -0
  354. /package/dist/{test → cjs/test}/unit/transaction.d.ts +0 -0
  355. /package/dist/{test → cjs/test}/unit/transactionBuilder/StakingWithdrawBuilder.d.ts +0 -0
  356. /package/dist/{test → cjs/test}/unit/transactionBuilder/ataInitBuilder.d.ts +0 -0
  357. /package/dist/{test → cjs/test}/unit/transactionBuilder/customInstructionBuilder.d.ts +0 -0
  358. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingActivateBuilder.d.ts +0 -0
  359. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts +0 -0
  360. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDeactivateBuilder.d.ts +0 -0
  361. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDelegateBuilder.d.ts +0 -0
  362. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
  363. /package/dist/{test → cjs/test}/unit/transactionBuilder/tokenTransferBuilder.d.ts +0 -0
  364. /package/dist/{test → cjs/test}/unit/transactionBuilder/transactionBuilder.d.ts +0 -0
  365. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilder.d.ts +0 -0
  366. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilderV2.d.ts +0 -0
  367. /package/dist/{test → cjs/test}/unit/transactionBuilder/walletInitBuilder.d.ts +0 -0
  368. /package/dist/{test → cjs/test}/unit/utils.d.ts +0 -0
  369. /package/dist/{test → cjs/test}/unit/versionedTransaction.d.ts +0 -0
  370. /package/dist/{src → esm}/bigint-buffer-guard.d.ts.map +0 -0
  371. /package/dist/{src → esm}/bigint-buffer-guard.js +0 -0
  372. /package/dist/{src → esm}/config/token2022StaticConfig.d.ts.map +0 -0
  373. /package/dist/{src → esm}/index.d.ts.map +0 -0
  374. /package/dist/{src → esm}/lib/ataInitializationBuilder.d.ts.map +0 -0
  375. /package/dist/{src → esm}/lib/closeAtaBuilder.d.ts.map +0 -0
  376. /package/dist/{src → esm}/lib/customInstructionBuilder.d.ts.map +0 -0
  377. /package/dist/{src → esm}/lib/jitoStakePoolOperations.d.ts.map +0 -0
  378. /package/dist/{src → esm}/lib/keyPair.d.ts.map +0 -0
  379. /package/dist/{src → esm}/lib/messages/index.d.ts.map +0 -0
  380. /package/dist/{src → esm}/lib/messages/messageBuilderFactory.d.ts.map +0 -0
  381. /package/dist/{src → esm}/lib/stakingActivateBuilder.d.ts.map +0 -0
  382. /package/dist/{src → esm}/lib/stakingAuthorizeBuilder.d.ts.map +0 -0
  383. /package/dist/{src → esm}/lib/stakingDeactivateBuilder.d.ts.map +0 -0
  384. /package/dist/{src → esm}/lib/stakingDelegateBuilder.d.ts.map +0 -0
  385. /package/dist/{src → esm}/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -0
  386. /package/dist/{src → esm}/lib/stakingWithdrawBuilder.d.ts.map +0 -0
  387. /package/dist/{src → esm}/lib/token2022Config.d.ts.map +0 -0
  388. /package/dist/{src → esm}/lib/tokenTransferBuilder.d.ts.map +0 -0
  389. /package/dist/{src → esm}/lib/transactionBuilder.d.ts.map +0 -0
  390. /package/dist/{src → esm}/lib/transferBuilder.d.ts.map +0 -0
  391. /package/dist/{src → esm}/lib/transferBuilderV2.d.ts.map +0 -0
  392. /package/dist/{src → esm}/lib/walletInitializationBuilder.d.ts.map +0 -0
  393. /package/dist/{src → esm}/register.d.ts.map +0 -0
  394. /package/dist/{src → esm}/solToken.d.ts.map +0 -0
  395. /package/dist/{src → esm}/tsol.d.ts.map +0 -0
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for explainTransactionWasm (WASM-based Solana transaction explanation).
3
+ */
4
+ import 'should';
5
+ //# sourceMappingURL=explainTransactionWasm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explainTransactionWasm.d.ts","sourceRoot":"","sources":["../../../../test/unit/explainTransactionWasm.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,QAAQ,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * Tests for explainTransactionWasm (WASM-based Solana transaction explanation).
5
+ */
6
+ require("should");
7
+ const explainTransactionWasm_1 = require("../../src/lib/explainTransactionWasm");
8
+ describe('explainTransactionWasm', function () {
9
+ describe('deriveTransactionType', function () {
10
+ it('should classify boilerplate-only transaction as CustomTx', function () {
11
+ // Transaction with only NonceAdvance + Memo instructions (no Transfer or TokenTransfer).
12
+ // Previously this would incorrectly fall through to 'Send'.
13
+ const BOILERPLATE_ONLY_TX_BASE64 = 'AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADE3aDK9nmEccOmQJ4crZzPuTnRVa3woFSjKzE2hcsFbNkpvA8Lnj7CVeJ+/UfXwLI5g223D02m4+REUfPc50QCAgEEB8OpoX+Ybq/j8xi80DhFtj8AUVHPrjhK1E3DnT5Bmx346iUtYQKMMBolIAO6PmfJh3w7huFcYcGNOB8sgXN38Wg6ZrWANNJfb64q8B242qfRiT7dffb80H2OoXGQ0aq0lAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUpTWpkpIQZNJOhxYNo4fHw1td28kruB5B+oQEEFRI0Gp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAAan1RcZLFaO4IqEX3PSl4jPA1wxRbIas0TYBi6pQAAAEHPqtGYOjjqVfHgg1S32M4qMe2AQO/kDy1+CEYQwkisDAwMCBgEEBAAAAAQCAAUJSGVsbG8gQVBJBAAnQVBJIEludGVncmF0aW9uIHRlc3QgY3VzdG9tIHRyYW5zYWN0aW9u';
14
+ const explained = (0, explainTransactionWasm_1.explainSolTransaction)({
15
+ txBase64: BOILERPLATE_ONLY_TX_BASE64,
16
+ feeInfo: { fee: '5000' },
17
+ coinName: 'tsol',
18
+ });
19
+ explained.type.should.equal('CustomTx');
20
+ explained.outputAmount.should.equal('0');
21
+ explained.outputs.length.should.equal(0);
22
+ (typeof explained.memo).should.equal('string');
23
+ });
24
+ });
25
+ });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwbGFpblRyYW5zYWN0aW9uV2FzbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9leHBsYWluVHJhbnNhY3Rpb25XYXNtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUE7O0dBRUc7QUFDSCxrQkFBZ0I7QUFDaEIsaUZBQTZFO0FBRTdFLFFBQVEsQ0FBQyx3QkFBd0IsRUFBRTtJQUNqQyxRQUFRLENBQUMsdUJBQXVCLEVBQUU7UUFDaEMsRUFBRSxDQUFDLDBEQUEwRCxFQUFFO1lBQzdELHlGQUF5RjtZQUN6Riw0REFBNEQ7WUFDNUQsTUFBTSwwQkFBMEIsR0FDOUIsa21CQUFrbUIsQ0FBQztZQUVybUIsTUFBTSxTQUFTLEdBQUcsSUFBQSw4Q0FBcUIsRUFBQztnQkFDdEMsUUFBUSxFQUFFLDBCQUEwQjtnQkFDcEMsT0FBTyxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRTtnQkFDeEIsUUFBUSxFQUFFLE1BQU07YUFDakIsQ0FBQyxDQUFDO1lBRUgsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3hDLFNBQVMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6QyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLENBQUMsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRlc3RzIGZvciBleHBsYWluVHJhbnNhY3Rpb25XYXNtIChXQVNNLWJhc2VkIFNvbGFuYSB0cmFuc2FjdGlvbiBleHBsYW5hdGlvbikuXG4gKi9cbmltcG9ydCAnc2hvdWxkJztcbmltcG9ydCB7IGV4cGxhaW5Tb2xUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL3NyYy9saWIvZXhwbGFpblRyYW5zYWN0aW9uV2FzbSc7XG5cbmRlc2NyaWJlKCdleHBsYWluVHJhbnNhY3Rpb25XYXNtJywgZnVuY3Rpb24gKCkge1xuICBkZXNjcmliZSgnZGVyaXZlVHJhbnNhY3Rpb25UeXBlJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgY2xhc3NpZnkgYm9pbGVycGxhdGUtb25seSB0cmFuc2FjdGlvbiBhcyBDdXN0b21UeCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFRyYW5zYWN0aW9uIHdpdGggb25seSBOb25jZUFkdmFuY2UgKyBNZW1vIGluc3RydWN0aW9ucyAobm8gVHJhbnNmZXIgb3IgVG9rZW5UcmFuc2ZlcikuXG4gICAgICAvLyBQcmV2aW91c2x5IHRoaXMgd291bGQgaW5jb3JyZWN0bHkgZmFsbCB0aHJvdWdoIHRvICdTZW5kJy5cbiAgICAgIGNvbnN0IEJPSUxFUlBMQVRFX09OTFlfVFhfQkFTRTY0ID1cbiAgICAgICAgJ0FnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBREUzYURLOW5tRWNjT21RSjRjclp6UHVUblJWYTN3b0ZTakt6RTJoY3NGYk5rcHZBOExuajdDVmVKKy9VZlh3TEk1ZzIyM0QwMm00K1JFVWZQYzUwUUNBZ0VFQjhPcG9YK1licS9qOHhpODBEaEZ0ajhBVVZIUHJqaEsxRTNEblQ1Qm14MzQ2aVV0WVFLTU1Cb2xJQU82UG1mSmgzdzdodUZjWWNHTk9COHNnWE4zOFdnNlpyV0FOTkpmYjY0cThCMjQycWZSaVQ3ZGZmYjgwSDJPb1hHUTBhcTBsQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJVcFRXcGtwSVFaTkpPaHhZTm80Zkh3MXRkMjhrcnVCNUIrb1FFRUZSSTBHcDlVWEdNZDB5U2hXWTVocEhWNjJpMTY0bzV0TGJWeHpWVnNoQUFBQUFBYW4xUmNaTEZhTzRJcUVYM1BTbDRqUEExd3hSYklhczBUWUJpNnBRQUFBRUhQcXRHWU9qanFWZkhnZzFTMzJNNHFNZTJBUU8va0R5MStDRVlRd2tpc0RBd01DQmdFRUJBQUFBQVFDQUFVSlNHVnNiRzhnUVZCSkJBQW5RVkJKSUVsdWRHVm5jbUYwYVc5dUlIUmxjM1FnWTNWemRHOXRJSFJ5WVc1ellXTjBhVzl1JztcblxuICAgICAgY29uc3QgZXhwbGFpbmVkID0gZXhwbGFpblNvbFRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhCYXNlNjQ6IEJPSUxFUlBMQVRFX09OTFlfVFhfQkFTRTY0LFxuICAgICAgICBmZWVJbmZvOiB7IGZlZTogJzUwMDAnIH0sXG4gICAgICAgIGNvaW5OYW1lOiAndHNvbCcsXG4gICAgICB9KTtcblxuICAgICAgZXhwbGFpbmVkLnR5cGUuc2hvdWxkLmVxdWFsKCdDdXN0b21UeCcpO1xuICAgICAgZXhwbGFpbmVkLm91dHB1dEFtb3VudC5zaG91bGQuZXF1YWwoJzAnKTtcbiAgICAgIGV4cGxhaW5lZC5vdXRwdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMCk7XG4gICAgICAodHlwZW9mIGV4cGxhaW5lZC5tZW1vKS5zaG91bGQuZXF1YWwoJ3N0cmluZycpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solBackupKey.d.ts","sourceRoot":"","sources":["../../../../../test/unit/fixtures/solBackupKey.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;;CAIxB,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.solBackupKey = void 0;
4
+ exports.solBackupKey = {
5
+ key: '{"iv":"BeSAuY3ngyRQlvNSRsL52g==","v":1,"iter":10000,"ks":256,"ts":64,"mode"\n:"ccm","adata":"","cipher":"aes","salt":"XACKBRej6Tc=","ct":"u3hPEWb+4pXgGt\nxXAt9EH3K8O2oP0Aptvfl/7jGs5gueSvt1ZVMaeu7JQ/1jCPPdKNrXaJ6WFdIs1JHC2AVHSYN7W\nJnWF7XbfYzNbTIPN4/uR90Nrt+zAQ64iu/zaNMZXRjwlgGS3T8jjGIFngiUKCMC0uqYNptXlV1t\nMKy/m21e+FFhHJombJJ+3ueOQRuJbJq6RF7pf9eSjE+fVXao2OlWKB4W9pVkldP0dsfK5INoQXB\ngbQfqhyd0s3Xkge67dbm8fNZ3r6GcdfpZeDcqOeGGCFGlIs35w6pqr4cFdS/iJ3JaxjGS64VzV7\nlean6ubAiPsj9RHJU4QDI19QsGhh4qLet6YP/UqH6dJL094JcC38/CAZZISN4KY5/m6vlKAJ4ii\n2TxtZSeSCxISUYVFF5JVuDzPGB8hwbTK2B/sjdr8zO/IX5GMulMSXFVO9MrcTo0vNvOTvTc6Dgv\nXXldLfoKexsZeZkj5hqi5DE6jBniiMWYqADxdvMlEVGa4QgDx/iTUC7yoZt6TU6jh13D8uPeOu9\n5ZmMtuKnxWSxuw3IuNY9rXGvKHZH8GYHLdIvK+iRttg9/vKIoyAF5q9kwhwKPvUKf8KqVgp1LSu\nM8irZnKj0IejJ5F1g2FXbGkJ/Yxw6OQtK5+7/Uje3iDTpWDubatJ5vPcGeTa1n75DVia3d7Nn4g\nVlH90HiatCcynPgn8nYOsfS2+QcTpR9LF5pvp36bpvqK6iWqgLXs/RgQQAjx4l8D05cdfhZfh0A\nZjIzQs3z6SdmjyrkrIkeH67YwWNzJ0IFNFMYYJnAuSKajrnyVV/UX7JJk4+d26DW/W4ruph8JUC\no6YFpKFfKyON2Wyh1o4UrmbP0knFX/Yu9EqpEKVJy2sWviwsyflLBbaKZ5I8dyUdC+xEg/z1m33\n7gOoQtj7DIgoHifiDJKmHu0HiSGt17Tsjo5Dyp+0F/YwJN2kINOmXmIt11XPspU0bX9g5a3r52A\nhxNv8rGFDO9l05A2pJ71oUpECm4BCLR6CHX7jiunAvwcyvYCh/SMzGLMrQ9brzHVbN8S/7LRnXT\nTth2K0AFyn6pbcxBNCPT9xFE2St7B5uKp+5eHUKlsEAUpsaw5J5KD4qmAlO6kbP7uLugYWZVNqH\npbxm7Yzs8HnnJ47XiktwgjvIHeLmJ1hKyQVQXEP80MkifOZljLtr/ILMz8R1SHg=="}',
6
+ commonKeychain: 'fea55c1530e851fbea92acf31bcfd3ebd749584e778c3c6e2c70d9259bc1b19e13ef17639217dfb2c79602be32eb9d98d49aa2a39d674b047bef1f3731f42031',
7
+ };
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sQmFja3VwS2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L2ZpeHR1cmVzL3NvbEJhY2t1cEtleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLFlBQVksR0FBRztJQUMxQixHQUFHLEVBQUUsazJDQUFrMkM7SUFDdjJDLGNBQWMsRUFDWixrSUFBa0k7Q0FDckksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBzb2xCYWNrdXBLZXkgPSB7XG4gIGtleTogJ3tcIml2XCI6XCJCZVNBdVkzbmd5UlFsdk5TUnNMNTJnPT1cIixcInZcIjoxLFwiaXRlclwiOjEwMDAwLFwia3NcIjoyNTYsXCJ0c1wiOjY0LFwibW9kZVwiXFxuOlwiY2NtXCIsXCJhZGF0YVwiOlwiXCIsXCJjaXBoZXJcIjpcImFlc1wiLFwic2FsdFwiOlwiWEFDS0JSZWo2VGM9XCIsXCJjdFwiOlwidTNoUEVXYis0cFhnR3RcXG54WEF0OUVIM0s4TzJvUDBBcHR2ZmwvN2pHczVndWVTdnQxWlZNYWV1N0pRLzFqQ1BQZEtOclhhSjZXRmRJczFKSEMyQVZIU1lON1dcXG5KbldGN1hiZll6TmJUSVBONC91UjkwTnJ0K3pBUTY0aXUvemFOTVpYUmp3bGdHUzNUOGpqR0lGbmdpVUtDTUMwdXFZTnB0WGxWMXRcXG5NS3kvbTIxZStGRmhISm9tYkpKKzN1ZU9RUnVKYkpxNlJGN3BmOWVTakUrZlZYYW8yT2xXS0I0VzlwVmtsZFAwZHNmSzVJTm9RWEJcXG5nYlFmcWh5ZDBzM1hrZ2U2N2RibThmTlozcjZHY2RmcFplRGNxT2VHR0NGR2xJczM1dzZwcXI0Y0ZkUy9pSjNKYXhqR1M2NFZ6VjdcXG5sZWFuNnViQWlQc2o5UkhKVTRRREkxOVFzR2hoNHFMZXQ2WVAvVXFINmRKTDA5NEpjQzM4L0NBWlpJU040S1k1L202dmxLQUo0aWlcXG4yVHh0WlNlU0N4SVNVWVZGRjVKVnVEelBHQjhod2JUSzJCL3NqZHI4ek8vSVg1R011bE1TWEZWTzlNcmNUbzB2TnZPVHZUYzZEZ3ZcXG5YWGxkTGZvS2V4c1plWmtqNWhxaTVERTZqQm5paU1XWXFBRHhkdk1sRVZHYTRRZ0R4L2lUVUM3eW9adDZUVTZqaDEzRDh1UGVPdTlcXG41Wm1NdHVLbnhXU3h1dzNJdU5ZOXJYR3ZLSFpIOEdZSExkSXZLK2lSdHRnOS92S0lveUFGNXE5a3dod0tQdlVLZjhLcVZncDFMU3VcXG5NOGlyWm5LajBJZWpKNUYxZzJGWGJHa0ovWXh3Nk9RdEs1KzcvVWplM2lEVHBXRHViYXRKNXZQY0dlVGExbjc1RFZpYTNkN05uNGdcXG5WbEg5MEhpYXRDY3luUGduOG5ZT3NmUzIrUWNUcFI5TEY1cHZwMzZicHZxSzZpV3FnTFhzL1JnUVFBang0bDhEMDVjZGZoWmZoMEFcXG5aakl6UXMzejZTZG1qeXJrcklrZUg2N1l3V056SjBJRk5GTVlZSm5BdVNLYWpybnlWVi9VWDdKSms0K2QyNkRXL1c0cnVwaDhKVUNcXG5vNllGcEtGZkt5T04yV3loMW80VXJtYlAwa25GWC9ZdTlFcXBFS1ZKeTJzV3Zpd3N5ZmxMQmJhS1o1SThkeVVkQyt4RWcvejFtMzNcXG43Z09vUXRqN0RJZ29IaWZpREpLbUh1MEhpU0d0MTdUc2pvNUR5cCswRi9Zd0pOMmtJTk9tWG1JdDExWFBzcFUwYlg5ZzVhM3I1MkFcXG5oeE52OHJHRkRPOWwwNUEycEo3MW9VcEVDbTRCQ0xSNkNIWDdqaXVuQXZ3Y3l2WUNoL1NNekdMTXJROWJyekhWYk44Uy83TFJuWFRcXG5UdGgySzBBRnluNnBiY3hCTkNQVDl4RkUyU3Q3QjV1S3ArNWVIVUtsc0VBVXBzYXc1SjVLRDRxbUFsTzZrYlA3dUx1Z1lXWlZOcUhcXG5wYnhtN1l6czhIbm5KNDdYaWt0d2dqdklIZUxtSjFoS3lRVlFYRVA4ME1raWZPWmxqTHRyL0lMTXo4UjFTSGc9PVwifScsXG4gIGNvbW1vbktleWNoYWluOlxuICAgICdmZWE1NWMxNTMwZTg1MWZiZWE5MmFjZjMxYmNmZDNlYmQ3NDk1ODRlNzc4YzNjNmUyYzcwZDkyNTliYzFiMTllMTNlZjE3NjM5MjE3ZGZiMmM3OTYwMmJlMzJlYjlkOThkNDlhYTJhMzlkNjc0YjA0N2JlZjFmMzczMWY0MjAzMScsXG59O1xuIl19
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getBuilderFactory.d.ts","sourceRoot":"","sources":["../../../../test/unit/getBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAGtD,eAAO,MAAM,iBAAiB,SAAU,MAAM,KAAG,yBAEhD,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getBuilderFactory = void 0;
4
+ const src_1 = require("../../src");
5
+ const statics_1 = require("@bitgo-beta/statics");
6
+ const getBuilderFactory = (coin) => {
7
+ return new src_1.TransactionBuilderFactory(statics_1.coins.get(coin));
8
+ };
9
+ exports.getBuilderFactory = getBuilderFactory;
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0QnVpbGRlckZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvZ2V0QnVpbGRlckZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQXNEO0FBQ3RELGlEQUE0QztBQUVyQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBWSxFQUE2QixFQUFFO0lBQzNFLE9BQU8sSUFBSSwrQkFBeUIsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDeEQsQ0FBQyxDQUFDO0FBRlcsUUFBQSxpQkFBaUIscUJBRTVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuXG5leHBvcnQgY29uc3QgZ2V0QnVpbGRlckZhY3RvcnkgPSAoY29pbjogc3RyaW5nKTogVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSA9PiB7XG4gIHJldHVybiBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoY29pbikpO1xufTtcbiJdfQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instructionParamsFactory.d.ts","sourceRoot":"","sources":["../../../../test/unit/instructionParamsFactory.ts"],"names":[],"mappings":""}
@@ -0,0 +1,412 @@
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 testData = __importStar(require("../resources/sol"));
41
+ const instructionParamsFactory_1 = require("../../src/lib/instructionParamsFactory");
42
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
43
+ const constants_1 = require("../../src/lib/constants");
44
+ const web3_js_1 = require("@solana/web3.js");
45
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
46
+ const spl_token_1 = require("@solana/spl-token");
47
+ describe('Instruction Parser Tests: ', function () {
48
+ describe('Succeed ', function () {
49
+ it('Wallet init tx instructions', () => {
50
+ const fromAddress = testData.authAccount.pub;
51
+ const nonceAddress = testData.nonceAccount.pub;
52
+ const authAddress = testData.authAccount.pub;
53
+ const amount = '100000';
54
+ const instructions = web3_js_1.SystemProgram.createNonceAccount({
55
+ fromPubkey: new web3_js_1.PublicKey(fromAddress),
56
+ noncePubkey: new web3_js_1.PublicKey(nonceAddress),
57
+ authorizedPubkey: new web3_js_1.PublicKey(authAddress),
58
+ lamports: new bignumber_js_1.default(amount).toNumber(),
59
+ }).instructions;
60
+ const createNonceAccount = {
61
+ type: constants_1.InstructionBuilderTypes.CreateNonceAccount,
62
+ params: { fromAddress, nonceAddress, authAddress, amount },
63
+ };
64
+ const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.WalletInitialization, instructions);
65
+ should_1.default.deepEqual(result, [createNonceAccount]);
66
+ });
67
+ it('Send tx instructions', () => {
68
+ const authAccount = testData.authAccount.pub;
69
+ const nonceAccount = testData.nonceAccount.pub;
70
+ const amount = '100000';
71
+ const memo = 'test memo';
72
+ // nonce
73
+ const nonceAdvanceParams = {
74
+ type: constants_1.InstructionBuilderTypes.NonceAdvance,
75
+ params: { walletNonceAddress: nonceAccount, authWalletAddress: authAccount },
76
+ };
77
+ const nonceAdvanceInstruction = web3_js_1.SystemProgram.nonceAdvance({
78
+ noncePubkey: new web3_js_1.PublicKey(nonceAccount),
79
+ authorizedPubkey: new web3_js_1.PublicKey(authAccount),
80
+ });
81
+ // transfer
82
+ const transferParams = {
83
+ type: constants_1.InstructionBuilderTypes.Transfer,
84
+ params: { fromAddress: authAccount, toAddress: nonceAccount, amount },
85
+ };
86
+ const transferInstruction = web3_js_1.SystemProgram.transfer({
87
+ fromPubkey: new web3_js_1.PublicKey(authAccount),
88
+ toPubkey: new web3_js_1.PublicKey(nonceAccount),
89
+ lamports: new bignumber_js_1.default(amount).toNumber(),
90
+ });
91
+ // memo
92
+ const memoParams = {
93
+ type: constants_1.InstructionBuilderTypes.Memo,
94
+ params: { memo },
95
+ };
96
+ const memoInstruction = new web3_js_1.TransactionInstruction({
97
+ keys: [],
98
+ programId: new web3_js_1.PublicKey(constants_1.MEMO_PROGRAM_PK),
99
+ data: Buffer.from(memo),
100
+ });
101
+ const instructions = [nonceAdvanceInstruction, transferInstruction, memoInstruction];
102
+ const instructionsData = [nonceAdvanceParams, transferParams, memoParams];
103
+ const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.Send, instructions);
104
+ should_1.default.deepEqual(result, instructionsData);
105
+ });
106
+ it('Send token tx instructions', () => {
107
+ const authAccount = testData.authAccount.pub;
108
+ const nonceAccount = testData.nonceAccount.pub;
109
+ const amount = testData.tokenTransfers.amount;
110
+ const memo = testData.tokenTransfers.memo;
111
+ const decimals = testData.tokenTransfers.decimals;
112
+ const nameUSDC = testData.tokenTransfers.nameUSDC;
113
+ const mintUSDC = testData.tokenTransfers.mintUSDC;
114
+ const owner = testData.tokenTransfers.owner;
115
+ const sourceUSDC = testData.tokenTransfers.sourceUSDC;
116
+ // nonce
117
+ const nonceAdvanceParams = {
118
+ type: constants_1.InstructionBuilderTypes.NonceAdvance,
119
+ params: { walletNonceAddress: nonceAccount, authWalletAddress: authAccount },
120
+ };
121
+ const nonceAdvanceInstruction = web3_js_1.SystemProgram.nonceAdvance({
122
+ noncePubkey: new web3_js_1.PublicKey(nonceAccount),
123
+ authorizedPubkey: new web3_js_1.PublicKey(authAccount),
124
+ });
125
+ // token transfer
126
+ const transferParams = {
127
+ type: constants_1.InstructionBuilderTypes.TokenTransfer,
128
+ params: {
129
+ fromAddress: owner,
130
+ toAddress: nonceAccount,
131
+ amount: amount.toString(),
132
+ tokenName: nameUSDC,
133
+ sourceAddress: sourceUSDC,
134
+ programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
135
+ tokenAddress: 'F4uLeXJoFz3hw13MposuwaQbMcZbCjqvEGPPeRRB1Byf',
136
+ decimalPlaces: 9,
137
+ },
138
+ };
139
+ const transferInstruction = (0, spl_token_1.createTransferCheckedInstruction)(new web3_js_1.PublicKey(sourceUSDC), new web3_js_1.PublicKey(mintUSDC), new web3_js_1.PublicKey(nonceAccount), new web3_js_1.PublicKey(owner), amount, decimals);
140
+ // memo
141
+ const memoParams = {
142
+ type: constants_1.InstructionBuilderTypes.Memo,
143
+ params: { memo },
144
+ };
145
+ const memoInstruction = new web3_js_1.TransactionInstruction({
146
+ keys: [],
147
+ programId: new web3_js_1.PublicKey(constants_1.MEMO_PROGRAM_PK),
148
+ data: Buffer.from(memo),
149
+ });
150
+ const instructions = [nonceAdvanceInstruction, transferInstruction, memoInstruction];
151
+ const instructionsData = [nonceAdvanceParams, transferParams, memoParams];
152
+ const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.Send, instructions);
153
+ should_1.default.deepEqual(result, instructionsData);
154
+ });
155
+ it('Send sol 2022 token tx instructions', () => {
156
+ const authAccount = testData.authAccount.pub;
157
+ const nonceAccount = testData.nonceAccount.pub;
158
+ const amount = testData.sol2022TokenTransfers.amount;
159
+ const memo = testData.sol2022TokenTransfers.memo;
160
+ const decimals = testData.sol2022TokenTransfers.decimals;
161
+ const name = testData.sol2022TokenTransfers.name;
162
+ const mint = testData.sol2022TokenTransfers.mint;
163
+ const owner = testData.sol2022TokenTransfers.owner;
164
+ const source = testData.sol2022TokenTransfers.source;
165
+ // nonce
166
+ const nonceAdvanceParams = {
167
+ type: constants_1.InstructionBuilderTypes.NonceAdvance,
168
+ params: { walletNonceAddress: nonceAccount, authWalletAddress: authAccount },
169
+ };
170
+ const nonceAdvanceInstruction = web3_js_1.SystemProgram.nonceAdvance({
171
+ noncePubkey: new web3_js_1.PublicKey(nonceAccount),
172
+ authorizedPubkey: new web3_js_1.PublicKey(authAccount),
173
+ });
174
+ // token transfer
175
+ const transferParams = {
176
+ type: constants_1.InstructionBuilderTypes.TokenTransfer,
177
+ params: {
178
+ fromAddress: owner,
179
+ toAddress: nonceAccount,
180
+ amount: amount.toString(),
181
+ tokenName: name,
182
+ sourceAddress: source,
183
+ tokenAddress: '5NR1bQwLWqjbkhbQ1hx72HKJybbuvwkDnUZNoAZ2VhW6',
184
+ programId: 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb',
185
+ decimalPlaces: 9,
186
+ },
187
+ };
188
+ const transferInstruction = (0, spl_token_1.createTransferCheckedInstruction)(new web3_js_1.PublicKey(source), new web3_js_1.PublicKey(mint), new web3_js_1.PublicKey(nonceAccount), new web3_js_1.PublicKey(owner), amount, decimals, [], spl_token_1.TOKEN_2022_PROGRAM_ID);
189
+ // memo
190
+ const memoParams = {
191
+ type: constants_1.InstructionBuilderTypes.Memo,
192
+ params: { memo },
193
+ };
194
+ const memoInstruction = new web3_js_1.TransactionInstruction({
195
+ keys: [],
196
+ programId: new web3_js_1.PublicKey(constants_1.MEMO_PROGRAM_PK),
197
+ data: Buffer.from(memo),
198
+ });
199
+ const instructions = [nonceAdvanceInstruction, transferInstruction, memoInstruction];
200
+ const instructionsData = [nonceAdvanceParams, transferParams, memoParams];
201
+ const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.Send, instructions);
202
+ should_1.default.deepEqual(result, instructionsData);
203
+ });
204
+ it('multi ATA init tx instructions', () => {
205
+ const ataParams = [
206
+ {
207
+ mintAddress: testData.associatedTokenAccounts.mintId,
208
+ ownerAddress: testData.associatedTokenAccounts.accounts[0].pub,
209
+ payerAddress: testData.associatedTokenAccounts.accounts[0].pub,
210
+ ataAddress: testData.associatedTokenAccounts.accounts[0].ata,
211
+ programId: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',
212
+ },
213
+ {
214
+ mintAddress: testData.associatedTokenAccounts.mintId,
215
+ ownerAddress: testData.associatedTokenAccounts.accounts[1].pub,
216
+ payerAddress: testData.associatedTokenAccounts.accounts[0].pub,
217
+ ataAddress: testData.associatedTokenAccounts.accounts[1].ata,
218
+ programId: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',
219
+ },
220
+ ];
221
+ const ataInstructions = [];
222
+ const createATAParams = [];
223
+ ataParams.forEach((param) => {
224
+ ataInstructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(new web3_js_1.PublicKey(param.payerAddress), new web3_js_1.PublicKey(param.ataAddress), new web3_js_1.PublicKey(param.ownerAddress), new web3_js_1.PublicKey(param.mintAddress)));
225
+ createATAParams.push({
226
+ type: constants_1.InstructionBuilderTypes.CreateAssociatedTokenAccount,
227
+ params: { ...param, tokenName: 'sol:usdc' },
228
+ });
229
+ });
230
+ const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.AssociatedTokenAccountInitialization, ataInstructions);
231
+ should_1.default.deepEqual(result, createATAParams);
232
+ });
233
+ it('sol 2022 ATA init tx instructions', () => {
234
+ const ataParams = [
235
+ {
236
+ mintAddress: testData.associatedTokenAccountsForSol2022.mintId,
237
+ ownerAddress: testData.associatedTokenAccountsForSol2022.accounts[0].pub,
238
+ payerAddress: testData.associatedTokenAccountsForSol2022.accounts[0].pub,
239
+ ataAddress: testData.associatedTokenAccountsForSol2022.accounts[0].ata,
240
+ programId: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',
241
+ },
242
+ ];
243
+ const ataInstructions = [];
244
+ const createATAParams = [];
245
+ ataParams.forEach((param) => {
246
+ ataInstructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(new web3_js_1.PublicKey(param.payerAddress), new web3_js_1.PublicKey(param.ataAddress), new web3_js_1.PublicKey(param.ownerAddress), new web3_js_1.PublicKey(param.mintAddress), spl_token_1.TOKEN_2022_PROGRAM_ID));
247
+ createATAParams.push({
248
+ type: constants_1.InstructionBuilderTypes.CreateAssociatedTokenAccount,
249
+ params: { ...param, tokenName: 'tsol:t22mint' },
250
+ });
251
+ });
252
+ const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.AssociatedTokenAccountInitialization, ataInstructions);
253
+ should_1.default.deepEqual(result, createATAParams);
254
+ });
255
+ it('Mint To - Standard SPL Token instruction parsing', () => {
256
+ const mintAddress = testData.tokenTransfers.mintUSDC;
257
+ const destinationAddress = testData.tokenTransfers.sourceUSDC;
258
+ const authorityAddress = testData.authAccount.pub;
259
+ const amount = '1000000';
260
+ const tokenName = testData.tokenTransfers.nameUSDC;
261
+ const mintInstruction = (0, spl_token_1.createMintToInstruction)(new web3_js_1.PublicKey(mintAddress), new web3_js_1.PublicKey(destinationAddress), new web3_js_1.PublicKey(authorityAddress), BigInt(amount));
262
+ const expectedMintParams = {
263
+ type: constants_1.InstructionBuilderTypes.MintTo,
264
+ params: {
265
+ mintAddress,
266
+ destinationAddress,
267
+ authorityAddress,
268
+ amount,
269
+ tokenName,
270
+ decimalPlaces: undefined,
271
+ programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
272
+ },
273
+ };
274
+ const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.Send, [mintInstruction]);
275
+ should_1.default.deepEqual(result, [expectedMintParams]);
276
+ });
277
+ it('Mint To - Token-2022 Program instruction parsing', () => {
278
+ const mintAddress = testData.sol2022TokenTransfers.mint;
279
+ const destinationAddress = testData.sol2022TokenTransfers.source;
280
+ const authorityAddress = testData.authAccount.pub;
281
+ const amount = '2000000';
282
+ const tokenName = testData.sol2022TokenTransfers.name;
283
+ const mintInstruction = (0, spl_token_1.createMintToInstruction)(new web3_js_1.PublicKey(mintAddress), new web3_js_1.PublicKey(destinationAddress), new web3_js_1.PublicKey(authorityAddress), BigInt(amount), undefined, spl_token_1.TOKEN_2022_PROGRAM_ID);
284
+ const expectedMintParams = {
285
+ type: constants_1.InstructionBuilderTypes.MintTo,
286
+ params: {
287
+ mintAddress,
288
+ destinationAddress,
289
+ authorityAddress,
290
+ amount,
291
+ tokenName,
292
+ decimalPlaces: undefined,
293
+ programId: spl_token_1.TOKEN_2022_PROGRAM_ID.toString(),
294
+ },
295
+ };
296
+ const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.Send, [mintInstruction]);
297
+ should_1.default.deepEqual(result, [expectedMintParams]);
298
+ });
299
+ it('Burn - Standard SPL Token instruction parsing', () => {
300
+ const mintAddress = testData.tokenTransfers.mintUSDC;
301
+ const accountAddress = testData.tokenTransfers.sourceUSDC;
302
+ const authorityAddress = testData.authAccount.pub;
303
+ const amount = '500000';
304
+ const tokenName = testData.tokenTransfers.nameUSDC;
305
+ const burnInstruction = (0, spl_token_1.createBurnInstruction)(new web3_js_1.PublicKey(accountAddress), new web3_js_1.PublicKey(mintAddress), new web3_js_1.PublicKey(authorityAddress), BigInt(amount));
306
+ const expectedBurnParams = {
307
+ type: constants_1.InstructionBuilderTypes.Burn,
308
+ params: {
309
+ mintAddress,
310
+ accountAddress,
311
+ authorityAddress,
312
+ amount,
313
+ tokenName,
314
+ decimalPlaces: undefined,
315
+ programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
316
+ },
317
+ };
318
+ const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.Send, [burnInstruction]);
319
+ should_1.default.deepEqual(result, [expectedBurnParams]);
320
+ });
321
+ it('Burn - Token-2022 Program instruction parsing', () => {
322
+ const mintAddress = testData.sol2022TokenTransfers.mint;
323
+ const accountAddress = testData.sol2022TokenTransfers.source;
324
+ const authorityAddress = testData.authAccount.pub;
325
+ const amount = '750000';
326
+ const tokenName = testData.sol2022TokenTransfers.name;
327
+ const burnInstruction = (0, spl_token_1.createBurnInstruction)(new web3_js_1.PublicKey(accountAddress), new web3_js_1.PublicKey(mintAddress), new web3_js_1.PublicKey(authorityAddress), BigInt(amount), undefined, spl_token_1.TOKEN_2022_PROGRAM_ID);
328
+ const expectedBurnParams = {
329
+ type: constants_1.InstructionBuilderTypes.Burn,
330
+ params: {
331
+ mintAddress,
332
+ accountAddress,
333
+ authorityAddress,
334
+ amount,
335
+ tokenName,
336
+ decimalPlaces: undefined,
337
+ programId: spl_token_1.TOKEN_2022_PROGRAM_ID.toString(),
338
+ },
339
+ };
340
+ const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.Send, [burnInstruction]);
341
+ should_1.default.deepEqual(result, [expectedBurnParams]);
342
+ });
343
+ it('Mixed instructions - Mint, Burn, and Transfer', () => {
344
+ const authAccount = testData.authAccount.pub;
345
+ const nonceAccount = testData.nonceAccount.pub;
346
+ const mintAddress = testData.tokenTransfers.mintUSDC;
347
+ const destinationAddress = testData.tokenTransfers.sourceUSDC;
348
+ const accountAddress = testData.tokenTransfers.sourceUSDC;
349
+ const tokenName = testData.tokenTransfers.nameUSDC;
350
+ // Nonce advance
351
+ const nonceAdvanceInstruction = web3_js_1.SystemProgram.nonceAdvance({
352
+ noncePubkey: new web3_js_1.PublicKey(nonceAccount),
353
+ authorizedPubkey: new web3_js_1.PublicKey(authAccount),
354
+ });
355
+ const nonceAdvanceParams = {
356
+ type: constants_1.InstructionBuilderTypes.NonceAdvance,
357
+ params: { walletNonceAddress: nonceAccount, authWalletAddress: authAccount },
358
+ };
359
+ // Mint instruction
360
+ const mintInstruction = (0, spl_token_1.createMintToInstruction)(new web3_js_1.PublicKey(mintAddress), new web3_js_1.PublicKey(destinationAddress), new web3_js_1.PublicKey(authAccount), BigInt('1000000'));
361
+ const expectedMintParams = {
362
+ type: constants_1.InstructionBuilderTypes.MintTo,
363
+ params: {
364
+ mintAddress,
365
+ destinationAddress,
366
+ authorityAddress: authAccount,
367
+ amount: '1000000',
368
+ tokenName,
369
+ decimalPlaces: undefined,
370
+ programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
371
+ },
372
+ };
373
+ // Burn instruction
374
+ const burnInstruction = (0, spl_token_1.createBurnInstruction)(new web3_js_1.PublicKey(accountAddress), new web3_js_1.PublicKey(mintAddress), new web3_js_1.PublicKey(authAccount), BigInt('500000'));
375
+ const expectedBurnParams = {
376
+ type: constants_1.InstructionBuilderTypes.Burn,
377
+ params: {
378
+ mintAddress,
379
+ accountAddress,
380
+ authorityAddress: authAccount,
381
+ amount: '500000',
382
+ tokenName,
383
+ decimalPlaces: undefined,
384
+ programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
385
+ },
386
+ };
387
+ const instructions = [nonceAdvanceInstruction, mintInstruction, burnInstruction];
388
+ const expectedParams = [nonceAdvanceParams, expectedMintParams, expectedBurnParams];
389
+ const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.Send, instructions);
390
+ should_1.default.deepEqual(result, expectedParams);
391
+ });
392
+ });
393
+ describe('Fail ', function () {
394
+ it('Invalid type', () => {
395
+ (0, should_1.default)(() => (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.ContractCall, [])).throwError('Invalid transaction, transaction type not supported: ' + sdk_core_1.TransactionType.ContractCall);
396
+ });
397
+ it('Invalid Instruction for Send Type', () => {
398
+ const fromAddress = testData.authAccount.pub;
399
+ const nonceAddress = testData.nonceAccount.pub;
400
+ const authAddress = testData.authAccount.pub;
401
+ const amount = '100000';
402
+ const instructions = web3_js_1.SystemProgram.createNonceAccount({
403
+ fromPubkey: new web3_js_1.PublicKey(fromAddress),
404
+ noncePubkey: new web3_js_1.PublicKey(nonceAddress),
405
+ authorizedPubkey: new web3_js_1.PublicKey(authAddress),
406
+ lamports: new bignumber_js_1.default(amount).toNumber(),
407
+ }).instructions;
408
+ (0, should_1.default)(() => (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.Send, instructions)).throwError('Invalid transaction, instruction type not supported: Create');
409
+ });
410
+ });
411
+ });
412
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L2luc3RydWN0aW9uUGFyYW1zRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QiwyREFBNkM7QUFDN0MscUZBQWtGO0FBQ2xGLG1EQUF1RDtBQUV2RCx1REFBbUY7QUFDbkYsNkNBQW1GO0FBQ25GLGdFQUFxQztBQUNyQyxpREFNMkI7QUFFM0IsUUFBUSxDQUFDLDRCQUE0QixFQUFFO0lBQ3JDLFFBQVEsQ0FBQyxVQUFVLEVBQUU7UUFDbkIsRUFBRSxDQUFDLDZCQUE2QixFQUFFLEdBQUcsRUFBRTtZQUNyQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQztZQUM3QyxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQztZQUMvQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQztZQUM3QyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7WUFDeEIsTUFBTSxZQUFZLEdBQUcsdUJBQWEsQ0FBQyxrQkFBa0IsQ0FBQztnQkFDcEQsVUFBVSxFQUFFLElBQUksbUJBQVMsQ0FBQyxXQUFXLENBQUM7Z0JBQ3RDLFdBQVcsRUFBRSxJQUFJLG1CQUFTLENBQUMsWUFBWSxDQUFDO2dCQUN4QyxnQkFBZ0IsRUFBRSxJQUFJLG1CQUFTLENBQUMsV0FBVyxDQUFDO2dCQUM1QyxRQUFRLEVBQUUsSUFBSSxzQkFBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRTthQUMzQyxDQUFDLENBQUMsWUFBWSxDQUFDO1lBRWhCLE1BQU0sa0JBQWtCLEdBQXNCO2dCQUM1QyxJQUFJLEVBQUUsbUNBQXVCLENBQUMsa0JBQWtCO2dCQUNoRCxNQUFN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QUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgKiBhcyB0ZXN0RGF0YSBmcm9tICcuLi9yZXNvdXJjZXMvc29sJztcbmltcG9ydCB7IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeSB9IGZyb20gJy4uLy4uL3NyYy9saWIvaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5JztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEluc3RydWN0aW9uUGFyYW1zIH0gZnJvbSAnLi4vLi4vc3JjL2xpYi9pZmFjZSc7XG5pbXBvcnQgeyBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcywgTUVNT19QUk9HUkFNX1BLIH0gZnJvbSAnLi4vLi4vc3JjL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgUHVibGljS2V5LCBTeXN0ZW1Qcm9ncmFtLCBUcmFuc2FjdGlvbkluc3RydWN0aW9uIH0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7XG4gIGNyZWF0ZUFzc29jaWF0ZWRUb2tlbkFjY291bnRJbnN0cnVjdGlvbixcbiAgY3JlYXRlVHJhbnNmZXJDaGVja2VkSW5zdHJ1Y3Rpb24sXG4gIGNyZWF0ZU1pbnRUb0luc3RydWN0aW9uLFxuICBjcmVhdGVCdXJuSW5zdHJ1Y3Rpb24sXG4gIFRPS0VOXzIwMjJfUFJPR1JBTV9JRCxcbn0gZnJvbSAnQHNvbGFuYS9zcGwtdG9rZW4nO1xuXG5kZXNjcmliZSgnSW5zdHJ1Y3Rpb24gUGFyc2VyIFRlc3RzOiAnLCBmdW5jdGlvbiAoKSB7XG4gIGRlc2NyaWJlKCdTdWNjZWVkICcsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnV2FsbGV0IGluaXQgdHggaW5zdHJ1Y3Rpb25zJywgKCkgPT4ge1xuICAgICAgY29uc3QgZnJvbUFkZHJlc3MgPSB0ZXN0RGF0YS5hdXRoQWNjb3VudC5wdWI7XG4gICAgICBjb25zdCBub25jZUFkZHJlc3MgPSB0ZXN0RGF0YS5ub25jZUFjY291bnQucHViO1xuICAgICAgY29uc3QgYXV0aEFkZHJlc3MgPSB0ZXN0RGF0YS5hdXRoQWNjb3VudC5wdWI7XG4gICAgICBjb25zdCBhbW91bnQgPSAnMTAwMDAwJztcbiAgICAgIGNvbnN0IGluc3RydWN0aW9ucyA9IFN5c3RlbVByb2dyYW0uY3JlYXRlTm9uY2VBY2NvdW50KHtcbiAgICAgICAgZnJvbVB1YmtleTogbmV3IFB1YmxpY0tleShmcm9tQWRkcmVzcyksXG4gICAgICAgIG5vbmNlUHVia2V5OiBuZXcgUHVibGljS2V5KG5vbmNlQWRkcmVzcyksXG4gICAgICAgIGF1dGhvcml6ZWRQdWJrZXk6IG5ldyBQdWJsaWNLZXkoYXV0aEFkZHJlc3MpLFxuICAgICAgICBsYW1wb3J0czogbmV3IEJpZ051bWJlcihhbW91bnQpLnRvTnVtYmVyKCksXG4gICAgICB9KS5pbnN0cnVjdGlvbnM7XG5cbiAgICAgIGNvbnN0IGNyZWF0ZU5vbmNlQWNjb3VudDogSW5zdHJ1Y3Rpb25QYXJhbXMgPSB7XG4gICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkNyZWF0ZU5vbmNlQWNjb3VudCxcbiAgICAgICAgcGFyYW1zOiB7IGZyb21BZGRyZXNzLCBub25jZUFkZHJlc3MsIGF1dGhBZGRyZXNzLCBhbW91bnQgfSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeShUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24sIGluc3RydWN0aW9ucyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHJlc3VsdCwgW2NyZWF0ZU5vbmNlQWNjb3VudF0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ1NlbmQgdHggaW5zdHJ1Y3Rpb25zJywgKCkgPT4ge1xuICAgICAgY29uc3QgYXV0aEFjY291bnQgPSB0ZXN0RGF0YS5hdXRoQWNjb3VudC5wdWI7XG4gICAgICBjb25zdCBub25jZUFjY291bnQgPSB0ZXN0RGF0YS5ub25jZUFjY291bnQucHViO1xuICAgICAgY29uc3QgYW1vdW50ID0gJzEwMDAwMCc7XG4gICAgICBjb25zdCBtZW1vID0gJ3Rlc3QgbWVtbyc7XG5cbiAgICAgIC8vIG5vbmNlXG4gICAgICBjb25zdCBub25jZUFkdmFuY2VQYXJhbXM6IEluc3RydWN0aW9uUGFyYW1zID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ob25jZUFkdmFuY2UsXG4gICAgICAgIHBhcmFtczogeyB3YWxsZXROb25jZUFkZHJlc3M6IG5vbmNlQWNjb3VudCwgYXV0aFdhbGxldEFkZHJlc3M6IGF1dGhBY2NvdW50IH0sXG4gICAgICB9O1xuICAgICAgY29uc3Qgbm9uY2VBZHZhbmNlSW5zdHJ1Y3Rpb24gPSBTeXN0ZW1Qcm9ncmFtLm5vbmNlQWR2YW5jZSh7XG4gICAgICAgIG5vbmNlUHVia2V5OiBuZXcgUHVibGljS2V5KG5vbmNlQWNjb3VudCksXG4gICAgICAgIGF1dGhvcml6ZWRQdWJrZXk6IG5ldyBQdWJsaWNLZXkoYXV0aEFjY291bnQpLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIHRyYW5zZmVyXG4gICAgICBjb25zdCB0cmFuc2ZlclBhcmFtczogSW5zdHJ1Y3Rpb25QYXJhbXMgPSB7XG4gICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlRyYW5zZmVyLFxuICAgICAgICBwYXJhbXM6IHsgZnJvbUFkZHJlc3M6IGF1dGhBY2NvdW50LCB0b0FkZHJlc3M6IG5vbmNlQWNjb3VudCwgYW1vdW50IH0sXG4gICAgICB9O1xuICAgICAgY29uc3QgdHJhbnNmZXJJbnN0cnVjdGlvbiA9IFN5c3RlbVByb2dyYW0udHJhbnNmZXIoe1xuICAgICAgICBmcm9tUHVia2V5OiBuZXcgUHVibGljS2V5KGF1dGhBY2NvdW50KSxcbiAgICAgICAgdG9QdWJrZXk6IG5ldyBQdWJsaWNLZXkobm9uY2VBY2NvdW50KSxcbiAgICAgICAgbGFtcG9ydHM6IG5ldyBCaWdOdW1iZXIoYW1vdW50KS50b051bWJlcigpLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIG1lbW9cbiAgICAgIGNvbnN0IG1lbW9QYXJhbXM6IEluc3RydWN0aW9uUGFyYW1zID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5NZW1vLFxuICAgICAgICBwYXJhbXM6IHsgbWVtbyB9LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbWVtb0luc3RydWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb24oe1xuICAgICAgICBrZXlzOiBbXSxcbiAgICAgICAgcHJvZ3JhbUlkOiBuZXcgUHVibGljS2V5KE1FTU9fUFJPR1JBTV9QSyksXG4gICAgICAgIGRhdGE6IEJ1ZmZlci5mcm9tKG1lbW8pLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGluc3RydWN0aW9ucyA9IFtub25jZUFkdmFuY2VJbnN0cnVjdGlvbiwgdHJhbnNmZXJJbnN0cnVjdGlvbiwgbWVtb0luc3RydWN0aW9uXTtcbiAgICAgIGNvbnN0IGluc3RydWN0aW9uc0RhdGEgPSBbbm9uY2VBZHZhbmNlUGFyYW1zLCB0cmFuc2ZlclBhcmFtcywgbWVtb1BhcmFtc107XG4gICAgICBjb25zdCByZXN1bHQgPSBpbnN0cnVjdGlvblBhcmFtc0ZhY3RvcnkoVHJhbnNhY3Rpb25UeXBlLlNlbmQsIGluc3RydWN0aW9ucyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHJlc3VsdCwgaW5zdHJ1Y3Rpb25zRGF0YSk7XG4gICAgfSk7XG5cbiAgICBpdCgnU2VuZCB0b2tlbiB0eCBpbnN0cnVjdGlvbnMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBhdXRoQWNjb3VudCA9IHRlc3REYXRhLmF1dGhBY2NvdW50LnB1YjtcbiAgICAgIGNvbnN0IG5vbmNlQWNjb3VudCA9IHRlc3REYXRhLm5vbmNlQWNjb3VudC5wdWI7XG4gICAgICBjb25zdCBhbW91bnQgPSB0ZXN0RGF0YS50b2tlblRyYW5zZmVycy5hbW91bnQ7XG4gICAgICBjb25zdCBtZW1vID0gdGVzdERhdGEudG9rZW5UcmFuc2ZlcnMubWVtbztcbiAgICAgIGNvbnN0IGRlY2ltYWxzID0gdGVzdERhdGEudG9rZW5UcmFuc2ZlcnMuZGVjaW1hbHM7XG4gICAgICBjb25zdCBuYW1lVVNEQyA9IHRlc3REYXRhLnRva2VuVHJhbnNmZXJzLm5hbWVVU0RDO1xuICAgICAgY29uc3QgbWludFVTREMgPSB0ZXN0RGF0YS50b2tlblRyYW5zZmVycy5taW50VVNEQztcbiAgICAgIGNvbnN0IG93bmVyID0gdGVzdERhdGEudG9rZW5UcmFuc2ZlcnMub3duZXI7XG4gICAgICBjb25zdCBzb3VyY2VVU0RDID0gdGVzdERhdGEudG9rZW5UcmFuc2ZlcnMuc291cmNlVVNEQztcblxuICAgICAgLy8gbm9uY2VcbiAgICAgIGNvbnN0IG5vbmNlQWR2YW5jZVBhcmFtczogSW5zdHJ1Y3Rpb25QYXJhbXMgPSB7XG4gICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk5vbmNlQWR2YW5jZSxcbiAgICAgICAgcGFyYW1zOiB7IHdhbGxldE5vbmNlQWRkcmVzczogbm9uY2VBY2NvdW50LCBhdXRoV2FsbGV0QWRkcmVzczogYXV0aEFjY291bnQgfSxcbiAgICAgIH07XG4gICAgICBjb25zdCBub25jZUFkdmFuY2VJbnN0cnVjdGlvbiA9IFN5c3RlbVByb2dyYW0ubm9uY2VBZHZhbmNlKHtcbiAgICAgICAgbm9uY2VQdWJrZXk6IG5ldyBQdWJsaWNLZXkobm9uY2VBY2NvdW50KSxcbiAgICAgICAgYXV0aG9yaXplZFB1YmtleTogbmV3IFB1YmxpY0tleShhdXRoQWNjb3VudCksXG4gICAgICB9KTtcblxuICAgICAgLy8gdG9rZW4gdHJhbnNmZXJcbiAgICAgIGNvbnN0IHRyYW5zZmVyUGFyYW1zID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ub2tlblRyYW5zZmVyLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBmcm9tQWRkcmVzczogb3duZXIsXG4gICAgICAgICAgdG9BZGRyZXNzOiBub25jZUFjY291bnQsXG4gICAgICAgICAgYW1vdW50OiBhbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICB0b2tlbk5hbWU6IG5hbWVVU0RDLFxuICAgICAgICAgIHNvdXJjZUFkZHJlc3M6IHNvdXJjZVVTREMsXG4gICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgICAgdG9rZW5BZGRyZXNzOiAnRjR1TGVYSm9GejNodzEzTXBvc3V3YVFiTWNaYkNqcXZFR1BQZVJSQjFCeWYnLFxuICAgICAgICAgIGRlY2ltYWxQbGFjZXM6IDksXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgY29uc3QgdHJhbnNmZXJJbnN0cnVjdGlvbiA9IGNyZWF0ZVRyYW5zZmVyQ2hlY2tlZEluc3RydWN0aW9uKFxuICAgICAgICBuZXcgUHVibGljS2V5KHNvdXJjZVVTREMpLFxuICAgICAgICBuZXcgUHVibGljS2V5KG1pbnRVU0RDKSxcbiAgICAgICAgbmV3IFB1YmxpY0tleShub25jZUFjY291bnQpLFxuICAgICAgICBuZXcgUHVibGljS2V5KG93bmVyKSxcbiAgICAgICAgYW1vdW50LFxuICAgICAgICBkZWNpbWFsc1xuICAgICAgKTtcblxuICAgICAgLy8gbWVtb1xuICAgICAgY29uc3QgbWVtb1BhcmFtczogSW5zdHJ1Y3Rpb25QYXJhbXMgPSB7XG4gICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk1lbW8sXG4gICAgICAgIHBhcmFtczogeyBtZW1vIH0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtZW1vSW5zdHJ1Y3Rpb24gPSBuZXcgVHJhbnNhY3Rpb25JbnN0cnVjdGlvbih7XG4gICAgICAgIGtleXM6IFtdLFxuICAgICAgICBwcm9ncmFtSWQ6IG5ldyBQdWJsaWNLZXkoTUVNT19QUk9HUkFNX1BLKSxcbiAgICAgICAgZGF0YTogQnVmZmVyLmZyb20obWVtbyksXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgaW5zdHJ1Y3Rpb25zID0gW25vbmNlQWR2YW5jZUluc3RydWN0aW9uLCB0cmFuc2Zlckluc3RydWN0aW9uLCBtZW1vSW5zdHJ1Y3Rpb25dO1xuICAgICAgY29uc3QgaW5zdHJ1Y3Rpb25zRGF0YSA9IFtub25jZUFkdmFuY2VQYXJhbXMsIHRyYW5zZmVyUGFyYW1zLCBtZW1vUGFyYW1zXTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeShUcmFuc2FjdGlvblR5cGUuU2VuZCwgaW5zdHJ1Y3Rpb25zKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwocmVzdWx0LCBpbnN0cnVjdGlvbnNEYXRhKTtcbiAgICB9KTtcblxuICAgIGl0KCdTZW5kIHNvbCAyMDIyIHRva2VuIHR4IGluc3RydWN0aW9ucycsICgpID0+IHtcbiAgICAgIGNvbnN0IGF1dGhBY2NvdW50ID0gdGVzdERhdGEuYXV0aEFjY291bnQucHViO1xuICAgICAgY29uc3Qgbm9uY2VBY2NvdW50ID0gdGVzdERhdGEubm9uY2VBY2NvdW50LnB1YjtcbiAgICAgIGNvbnN0IGFtb3VudCA9IHRlc3REYXRhLnNvbDIwMjJUb2tlblRyYW5zZmVycy5hbW91bnQ7XG4gICAgICBjb25zdCBtZW1vID0gdGVzdERhdGEuc29sMjAyMlRva2VuVHJhbnNmZXJzLm1lbW87XG4gICAgICBjb25zdCBkZWNpbWFscyA9IHRlc3REYXRhLnNvbDIwMjJUb2tlblRyYW5zZmVycy5kZWNpbWFscztcbiAgICAgIGNvbnN0IG5hbWUgPSB0ZXN0RGF0YS5zb2wyMDIyVG9rZW5UcmFuc2ZlcnMubmFtZTtcbiAgICAgIGNvbnN0IG1pbnQgPSB0ZXN0RGF0YS5zb2wyMDIyVG9rZW5UcmFuc2ZlcnMubWludDtcbiAgICAgIGNvbnN0IG93bmVyID0gdGVzdERhdGEuc29sMjAyMlRva2VuVHJhbnNmZXJzLm93bmVyO1xuICAgICAgY29uc3Qgc291cmNlID0gdGVzdERhdGEuc29sMjAyMlRva2VuVHJhbnNmZXJzLnNvdXJjZTtcblxuICAgICAgLy8gbm9uY2VcbiAgICAgIGNvbnN0IG5vbmNlQWR2YW5jZVBhcmFtczogSW5zdHJ1Y3Rpb25QYXJhbXMgPSB7XG4gICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk5vbmNlQWR2YW5jZSxcbiAgICAgICAgcGFyYW1zOiB7IHdhbGxldE5vbmNlQWRkcmVzczogbm9uY2VBY2NvdW50LCBhdXRoV2FsbGV0QWRkcmVzczogYXV0aEFjY291bnQgfSxcbiAgICAgIH07XG4gICAgICBjb25zdCBub25jZUFkdmFuY2VJbnN0cnVjdGlvbiA9IFN5c3RlbVByb2dyYW0ubm9uY2VBZHZhbmNlKHtcbiAgICAgICAgbm9uY2VQdWJrZXk6IG5ldyBQdWJsaWNLZXkobm9uY2VBY2NvdW50KSxcbiAgICAgICAgYXV0aG9yaXplZFB1YmtleTogbmV3IFB1YmxpY0tleShhdXRoQWNjb3VudCksXG4gICAgICB9KTtcblxuICAgICAgLy8gdG9rZW4gdHJhbnNmZXJcbiAgICAgIGNvbnN0IHRyYW5zZmVyUGFyYW1zID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ub2tlblRyYW5zZmVyLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBmcm9tQWRkcmVzczogb3duZXIsXG4gICAgICAgICAgdG9BZGRyZXNzOiBub25jZUFjY291bnQsXG4gICAgICAgICAgYW1vdW50OiBhbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICB0b2tlbk5hbWU6IG5hbWUsXG4gICAgICAgICAgc291cmNlQWRkcmVzczogc291cmNlLFxuICAgICAgICAgIHRva2VuQWRkcmVzczogJzVOUjFiUXdMV3FqYmtoYlExaHg3MkhLSnliYnV2d2tEblVaTm9BWjJWaFc2JyxcbiAgICAgICAgICBwcm9ncmFtSWQ6ICdUb2tlbnpRZEJOYkxxUDVWRWhka0FTNkVQRkxDMVBIbkJxQ1hFcFB4dUViJyxcbiAgICAgICAgICBkZWNpbWFsUGxhY2VzOiA5LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHRyYW5zZmVySW5zdHJ1Y3Rpb24gPSBjcmVhdGVUcmFuc2ZlckNoZWNrZWRJbnN0cnVjdGlvbihcbiAgICAgICAgbmV3IFB1YmxpY0tleShzb3VyY2UpLFxuICAgICAgICBuZXcgUHVibGljS2V5KG1pbnQpLFxuICAgICAgICBuZXcgUHVibGljS2V5KG5vbmNlQWNjb3VudCksXG4gICAgICAgIG5ldyBQdWJsaWNLZXkob3duZXIpLFxuICAgICAgICBhbW91bnQsXG4gICAgICAgIGRlY2ltYWxzLFxuICAgICAgICBbXSxcbiAgICAgICAgVE9LRU5fMjAyMl9QUk9HUkFNX0lEXG4gICAgICApO1xuXG4gICAgICAvLyBtZW1vXG4gICAgICBjb25zdCBtZW1vUGFyYW1zOiBJbnN0cnVjdGlvblBhcmFtcyA9IHtcbiAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTWVtbyxcbiAgICAgICAgcGFyYW1zOiB7IG1lbW8gfSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1lbW9JbnN0cnVjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbkluc3RydWN0aW9uKHtcbiAgICAgICAga2V5czogW10sXG4gICAgICAgIHByb2dyYW1JZDogbmV3IFB1YmxpY0tleShNRU1PX1BST0dSQU1fUEspLFxuICAgICAgICBkYXRhOiBCdWZmZXIuZnJvbShtZW1vKSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBpbnN0cnVjdGlvbnMgPSBbbm9uY2VBZHZhbmNlSW5zdHJ1Y3Rpb24sIHRyYW5zZmVySW5zdHJ1Y3Rpb24sIG1lbW9JbnN0cnVjdGlvbl07XG4gICAgICBjb25zdCBpbnN0cnVjdGlvbnNEYXRhID0gW25vbmNlQWR2YW5jZVBhcmFtcywgdHJhbnNmZXJQYXJhbXMsIG1lbW9QYXJhbXNdO1xuICAgICAgY29uc3QgcmVzdWx0ID0gaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5KFRyYW5zYWN0aW9uVHlwZS5TZW5kLCBpbnN0cnVjdGlvbnMpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChyZXN1bHQsIGluc3RydWN0aW9uc0RhdGEpO1xuICAgIH0pO1xuXG4gICAgaXQoJ211bHRpIEFUQSBpbml0IHR4IGluc3RydWN0aW9ucycsICgpID0+IHtcbiAgICAgIGNvbnN0IGF0YVBhcmFtcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIG1pbnRBZGRyZXNzOiB0ZXN0RGF0YS5hc3NvY2lhdGVkVG9rZW5BY2NvdW50cy5taW50SWQsXG4gICAgICAgICAgb3duZXJBZGRyZXNzOiB0ZXN0RGF0YS5hc3NvY2lhdGVkVG9rZW5BY2NvdW50cy5hY2NvdW50c1swXS5wdWIsXG4gICAgICAgICAgcGF5ZXJBZGRyZXNzOiB0ZXN0RGF0YS5hc3NvY2lhdGVkVG9rZW5BY2NvdW50cy5hY2NvdW50c1swXS5wdWIsXG4gICAgICAgICAgYXRhQWRkcmVzczogdGVzdERhdGEuYXNzb2NpYXRlZFRva2VuQWNjb3VudHMuYWNjb3VudHNbMF0uYXRhLFxuICAgICAgICAgIHByb2dyYW1JZDogJ0FUb2tlbkdQdmJkR1Z4cjFiMmh2WmJzaXFXNXhXSDI1ZWZUTnNMSkE4a25MJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG1pbnRBZGRyZXNzOiB0ZXN0RGF0YS5hc3NvY2lhdGVkVG9rZW5BY2NvdW50cy5taW50SWQsXG4gICAgICAgICAgb3duZXJBZGRyZXNzOiB0ZXN0RGF0YS5hc3NvY2lhdGVkVG9rZW5BY2NvdW50cy5hY2NvdW50c1sxXS5wdWIsXG4gICAgICAgICAgcGF5ZXJBZGRyZXNzOiB0ZXN0RGF0YS5hc3NvY2lhdGVkVG9rZW5BY2NvdW50cy5hY2NvdW50c1swXS5wdWIsXG4gICAgICAgICAgYXRhQWRkcmVzczogdGVzdERhdGEuYXNzb2NpYXRlZFRva2VuQWNjb3VudHMuYWNjb3VudHNbMV0uYXRhLFxuICAgICAgICAgIHByb2dyYW1JZDogJ0FUb2tlbkdQdmJkR1Z4cjFiMmh2WmJzaXFXNXhXSDI1ZWZUTnNMSkE4a25MJyxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIGNvbnN0IGF0YUluc3RydWN0aW9uczogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdID0gW107XG4gICAgICBjb25zdCBjcmVhdGVBVEFQYXJhbXM6IEluc3RydWN0aW9uUGFyYW1zW10gPSBbXTtcblxuICAgICAgYXRhUGFyYW1zLmZvckVhY2goKHBhcmFtKSA9PiB7XG4gICAgICAgIGF0YUluc3RydWN0aW9ucy5wdXNoKFxuICAgICAgICAgIGNyZWF0ZUFzc29jaWF0ZWRUb2tlbkFjY291bnRJbnN0cnVjdGlvbihcbiAgICAgICAgICAgIG5ldyBQdWJsaWNLZXkocGFyYW0ucGF5ZXJBZGRyZXNzKSxcbiAgICAgICAgICAgIG5ldyBQdWJsaWNLZXkocGFyYW0uYXRhQWRkcmVzcyksXG4gICAgICAgICAgICBuZXcgUHVibGljS2V5KHBhcmFtLm93bmVyQWRkcmVzcyksXG4gICAgICAgICAgICBuZXcgUHVibGljS2V5KHBhcmFtLm1pbnRBZGRyZXNzKVxuICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICBjcmVhdGVBVEFQYXJhbXMucHVzaCh7XG4gICAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQ3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudCxcbiAgICAgICAgICBwYXJhbXM6IHsgLi4ucGFyYW0sIHRva2VuTmFtZTogJ3NvbDp1c2RjJyB9LFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcmVzdWx0ID0gaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5KFRyYW5zYWN0aW9uVHlwZS5Bc3NvY2lhdGVkVG9rZW5BY2NvdW50SW5pdGlhbGl6YXRpb24sIGF0YUluc3RydWN0aW9ucyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHJlc3VsdCwgY3JlYXRlQVRBUGFyYW1zKTtcbiAgICB9KTtcbiAgICBpdCgnc29sIDIwMjIgQVRBIGluaXQgdHggaW5zdHJ1Y3Rpb25zJywgKCkgPT4ge1xuICAgICAgY29uc3QgYXRhUGFyYW1zID0gW1xuICAgICAgICB7XG4gICAgICAgICAgbWludEFkZHJlc3M6IHRlc3REYXRhLmFzc29jaWF0ZWRUb2tlbkFjY291bnRzRm9yU29sMjAyMi5taW50SWQsXG4gICAgICAgICAgb3duZXJBZGRyZXNzOiB0ZXN0RGF0YS5hc3NvY2lhdGVkVG9rZW5BY2NvdW50c0ZvclNvbDIwMjIuYWNjb3VudHNbMF0ucHViLFxuICAgICAgICAgIHBheWVyQWRkcmVzczogdGVzdERhdGEuYXNzb2NpYXRlZFRva2VuQWNjb3VudHNGb3JTb2wyMDIyLmFjY291bnRzWzBdLnB1YixcbiAgICAgICAgICBhdGFBZGRyZXNzOiB0ZXN0RGF0YS5hc3NvY2lhdGVkVG9rZW5BY2NvdW50c0ZvclNvbDIwMjIuYWNjb3VudHNbMF0uYXRhLFxuICAgICAgICAgIHByb2dyYW1JZDogJ0FUb2tlbkdQdmJkR1Z4cjFiMmh2WmJzaXFXNXhXSDI1ZWZUTnNMSkE4a25MJyxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIGNvbnN0IGF0YUluc3RydWN0aW9uczogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdID0gW107XG4gICAgICBjb25zdCBjcmVhdGVBVEFQYXJhbXM6IEluc3RydWN0aW9uUGFyYW1zW10gPSBbXTtcblxuICAgICAgYXRhUGFyYW1zLmZvckVhY2goKHBhcmFtKSA9PiB7XG4gICAgICAgIGF0YUluc3RydWN0aW9ucy5wdXNoKFxuICAgICAgICAgIGNyZWF0ZUFzc29jaWF0ZWRUb2tlbkFjY291bnRJbnN0cnVjdGlvbihcbiAgICAgICAgICAgIG5ldyBQdWJsaWNLZXkocGFyYW0ucGF5ZXJBZGRyZXNzKSxcbiAgICAgICAgICAgIG5ldyBQdWJsaWNLZXkocGFyYW0uYXRhQWRkcmVzcyksXG4gICAgICAgICAgICBuZXcgUHVibGljS2V5KHBhcmFtLm93bmVyQWRkcmVzcyksXG4gICAgICAgICAgICBuZXcgUHVibGljS2V5KHBhcmFtLm1pbnRBZGRyZXNzKSxcbiAgICAgICAgICAgIFRPS0VOXzIwMjJfUFJPR1JBTV9JRFxuICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICBjcmVhdGVBVEFQYXJhbXMucHVzaCh7XG4gICAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQ3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudCxcbiAgICAgICAgICBwYXJhbXM6IHsgLi4ucGFyYW0sIHRva2VuTmFtZTogJ3Rzb2w6dDIybWludCcgfSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeShUcmFuc2FjdGlvblR5cGUuQXNzb2NpYXRlZFRva2VuQWNjb3VudEluaXRpYWxpemF0aW9uLCBhdGFJbnN0cnVjdGlvbnMpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChyZXN1bHQsIGNyZWF0ZUFUQVBhcmFtcyk7XG4gICAgfSk7XG5cbiAgICBpdCgnTWludCBUbyAtIFN0YW5kYXJkIFNQTCBUb2tlbiBpbnN0cnVjdGlvbiBwYXJzaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgbWludEFkZHJlc3MgPSB0ZXN0RGF0YS50b2tlblRyYW5zZmVycy5taW50VVNEQztcbiAgICAgIGNvbnN0IGRlc3RpbmF0aW9uQWRkcmVzcyA9IHRlc3REYXRhLnRva2VuVHJhbnNmZXJzLnNvdXJjZVVTREM7XG4gICAgICBjb25zdCBhdXRob3JpdHlBZGRyZXNzID0gdGVzdERhdGEuYXV0aEFjY291bnQucHViO1xuICAgICAgY29uc3QgYW1vdW50ID0gJzEwMDAwMDAnO1xuICAgICAgY29uc3QgdG9rZW5OYW1lID0gdGVzdERhdGEudG9rZW5UcmFuc2ZlcnMubmFtZVVTREM7XG5cbiAgICAgIGNvbnN0IG1pbnRJbnN0cnVjdGlvbiA9IGNyZWF0ZU1pbnRUb0luc3RydWN0aW9uKFxuICAgICAgICBuZXcgUHVibGljS2V5KG1pbnRBZGRyZXNzKSxcbiAgICAgICAgbmV3IFB1YmxpY0tleShkZXN0aW5hdGlvbkFkZHJlc3MpLFxuICAgICAgICBuZXcgUHVibGljS2V5KGF1dGhvcml0eUFkZHJlc3MpLFxuICAgICAgICBCaWdJbnQoYW1vdW50KVxuICAgICAgKTtcblxuICAgICAgY29uc3QgZXhwZWN0ZWRNaW50UGFyYW1zOiBJbnN0cnVjdGlvblBhcmFtcyA9IHtcbiAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTWludFRvLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBtaW50QWRkcmVzcyxcbiAgICAgICAgICBkZXN0aW5hdGlvbkFkZHJlc3MsXG4gICAgICAgICAgYXV0aG9yaXR5QWRkcmVzcyxcbiAgICAgICAgICBhbW91bnQsXG4gICAgICAgICAgdG9rZW5OYW1lLFxuICAgICAgICAgIGRlY2ltYWxQbGFjZXM6IHVuZGVmaW5lZCxcbiAgICAgICAgICBwcm9ncmFtSWQ6ICdUb2tlbmtlZ1FmZVp5aU53QUpiTmJHS1BGWENXdUJ2ZjlTczYyM1ZRNURBJyxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeShUcmFuc2FjdGlvblR5cGUuU2VuZCwgW21pbnRJbnN0cnVjdGlvbl0pO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChyZXN1bHQsIFtleHBlY3RlZE1pbnRQYXJhbXNdKTtcbiAgICB9KTtcblxuICAgIGl0KCdNaW50IFRvIC0gVG9rZW4tMjAyMiBQcm9ncmFtIGluc3RydWN0aW9uIHBhcnNpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtaW50QWRkcmVzcyA9IHRlc3REYXRhLnNvbDIwMjJUb2tlblRyYW5zZmVycy5taW50O1xuICAgICAgY29uc3QgZGVzdGluYXRpb25BZGRyZXNzID0gdGVzdERhdGEuc29sMjAyMlRva2VuVHJhbnNmZXJzLnNvdXJjZTtcbiAgICAgIGNvbnN0IGF1dGhvcml0eUFkZHJlc3MgPSB0ZXN0RGF0YS5hdXRoQWNjb3VudC5wdWI7XG4gICAgICBjb25zdCBhbW91bnQgPSAnMjAwMDAwMCc7XG4gICAgICBjb25zdCB0b2tlbk5hbWUgPSB0ZXN0RGF0YS5zb2wyMDIyVG9rZW5UcmFuc2ZlcnMubmFtZTtcblxuICAgICAgY29uc3QgbWludEluc3RydWN0aW9uID0gY3JlYXRlTWludFRvSW5zdHJ1Y3Rpb24oXG4gICAgICAgIG5ldyBQdWJsaWNLZXkobWludEFkZHJlc3MpLFxuICAgICAgICBuZXcgUHVibGljS2V5KGRlc3RpbmF0aW9uQWRkcmVzcyksXG4gICAgICAgIG5ldyBQdWJsaWNLZXkoYXV0aG9yaXR5QWRkcmVzcyksXG4gICAgICAgIEJpZ0ludChhbW91bnQpLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIFRPS0VOXzIwMjJfUFJPR1JBTV9JRFxuICAgICAgKTtcblxuICAgICAgY29uc3QgZXhwZWN0ZWRNaW50UGFyYW1zOiBJbnN0cnVjdGlvblBhcmFtcyA9IHtcbiAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTWludFRvLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBtaW50QWRkcmVzcyxcbiAgICAgICAgICBkZXN0aW5hdGlvbkFkZHJlc3MsXG4gICAgICAgICAgYXV0aG9yaXR5QWRkcmVzcyxcbiAgICAgICAgICBhbW91bnQsXG4gICAgICAgICAgdG9rZW5OYW1lLFxuICAgICAgICAgIGRlY2ltYWxQbGFjZXM6IHVuZGVmaW5lZCxcbiAgICAgICAgICBwcm9ncmFtSWQ6IFRPS0VOXzIwMjJfUFJPR1JBTV9JRC50b1N0cmluZygpLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5KFRyYW5zYWN0aW9uVHlwZS5TZW5kLCBbbWludEluc3RydWN0aW9uXSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHJlc3VsdCwgW2V4cGVjdGVkTWludFBhcmFtc10pO1xuICAgIH0pO1xuXG4gICAgaXQoJ0J1cm4gLSBTdGFuZGFyZCBTUEwgVG9rZW4gaW5zdHJ1Y3Rpb24gcGFyc2luZycsICgpID0+IHtcbiAgICAgIGNvbnN0IG1pbnRBZGRyZXNzID0gdGVzdERhdGEudG9rZW5UcmFuc2ZlcnMubWludFVTREM7XG4gICAgICBjb25zdCBhY2NvdW50QWRkcmVzcyA9IHRlc3REYXRhLnRva2VuVHJhbnNmZXJzLnNvdXJjZVVTREM7XG4gICAgICBjb25zdCBhdXRob3JpdHlBZGRyZXNzID0gdGVzdERhdGEuYXV0aEFjY291bnQucHViO1xuICAgICAgY29uc3QgYW1vdW50ID0gJzUwMDAwMCc7XG4gICAgICBjb25zdCB0b2tlbk5hbWUgPSB0ZXN0RGF0YS50b2tlblRyYW5zZmVycy5uYW1lVVNEQztcblxuICAgICAgY29uc3QgYnVybkluc3RydWN0aW9uID0gY3JlYXRlQnVybkluc3RydWN0aW9uKFxuICAgICAgICBuZXcgUHVibGljS2V5KGFjY291bnRBZGRyZXNzKSxcbiAgICAgICAgbmV3IFB1YmxpY0tleShtaW50QWRkcmVzcyksXG4gICAgICAgIG5ldyBQdWJsaWNLZXkoYXV0aG9yaXR5QWRkcmVzcyksXG4gICAgICAgIEJpZ0ludChhbW91bnQpXG4gICAgICApO1xuXG4gICAgICBjb25zdCBleHBlY3RlZEJ1cm5QYXJhbXM6IEluc3RydWN0aW9uUGFyYW1zID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5CdXJuLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBtaW50QWRkcmVzcyxcbiAgICAgICAgICBhY2NvdW50QWRkcmVzcyxcbiAgICAgICAgICBhdXRob3JpdHlBZGRyZXNzLFxuICAgICAgICAgIGFtb3VudCxcbiAgICAgICAgICB0b2tlbk5hbWUsXG4gICAgICAgICAgZGVjaW1hbFBsYWNlczogdW5kZWZpbmVkLFxuICAgICAgICAgIHByb2dyYW1JZDogJ1Rva2Vua2VnUWZlWnlpTndBSmJOYkdLUEZYQ1d1QnZmOVNzNjIzVlE1REEnLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5KFRyYW5zYWN0aW9uVHlwZS5TZW5kLCBbYnVybkluc3RydWN0aW9uXSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHJlc3VsdCwgW2V4cGVjdGVkQnVyblBhcmFtc10pO1xuICAgIH0pO1xuXG4gICAgaXQoJ0J1cm4gLSBUb2tlbi0yMDIyIFByb2dyYW0gaW5zdHJ1Y3Rpb24gcGFyc2luZycsICgpID0+IHtcbiAgICAgIGNvbnN0IG1pbnRBZGRyZXNzID0gdGVzdERhdGEuc29sMjAyMlRva2VuVHJhbnNmZXJzLm1pbnQ7XG4gICAgICBjb25zdCBhY2NvdW50QWRkcmVzcyA9IHRlc3REYXRhLnNvbDIwMjJUb2tlblRyYW5zZmVycy5zb3VyY2U7XG4gICAgICBjb25zdCBhdXRob3JpdHlBZGRyZXNzID0gdGVzdERhdGEuYXV0aEFjY291bnQucHViO1xuICAgICAgY29uc3QgYW1vdW50ID0gJzc1MDAwMCc7XG4gICAgICBjb25zdCB0b2tlbk5hbWUgPSB0ZXN0RGF0YS5zb2wyMDIyVG9rZW5UcmFuc2ZlcnMubmFtZTtcblxuICAgICAgY29uc3QgYnVybkluc3RydWN0aW9uID0gY3JlYXRlQnVybkluc3RydWN0aW9uKFxuICAgICAgICBuZXcgUHVibGljS2V5KGFjY291bnRBZGRyZXNzKSxcbiAgICAgICAgbmV3IFB1YmxpY0tleShtaW50QWRkcmVzcyksXG4gICAgICAgIG5ldyBQdWJsaWNLZXkoYXV0aG9yaXR5QWRkcmVzcyksXG4gICAgICAgIEJpZ0ludChhbW91bnQpLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIFRPS0VOXzIwMjJfUFJPR1JBTV9JRFxuICAgICAgKTtcblxuICAgICAgY29uc3QgZXhwZWN0ZWRCdXJuUGFyYW1zOiBJbnN0cnVjdGlvblBhcmFtcyA9IHtcbiAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQnVybixcbiAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgbWludEFkZHJlc3MsXG4gICAgICAgICAgYWNjb3VudEFkZHJlc3MsXG4gICAgICAgICAgYXV0aG9yaXR5QWRkcmVzcyxcbiAgICAgICAgICBhbW91bnQsXG4gICAgICAgICAgdG9rZW5OYW1lLFxuICAgICAgICAgIGRlY2ltYWxQbGFjZXM6IHVuZGVmaW5lZCxcbiAgICAgICAgICBwcm9ncmFtSWQ6IFRPS0VOXzIwMjJfUFJPR1JBTV9JRC50b1N0cmluZygpLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5KFRyYW5zYWN0aW9uVHlwZS5TZW5kLCBbYnVybkluc3RydWN0aW9uXSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHJlc3VsdCwgW2V4cGVjdGVkQnVyblBhcmFtc10pO1xuICAgIH0pO1xuXG4gICAgaXQoJ01peGVkIGluc3RydWN0aW9ucyAtIE1pbnQsIEJ1cm4sIGFuZCBUcmFuc2ZlcicsICgpID0+IHtcbiAgICAgIGNvbnN0IGF1dGhBY2NvdW50ID0gdGVzdERhdGEuYXV0aEFjY291bnQucHViO1xuICAgICAgY29uc3Qgbm9uY2VBY2NvdW50ID0gdGVzdERhdGEubm9uY2VBY2NvdW50LnB1YjtcbiAgICAgIGNvbnN0IG1pbnRBZGRyZXNzID0gdGVzdERhdGEudG9rZW5UcmFuc2ZlcnMubWludFVTREM7XG4gICAgICBjb25zdCBkZXN0aW5hdGlvbkFkZHJlc3MgPSB0ZXN0RGF0YS50b2tlblRyYW5zZmVycy5zb3VyY2VVU0RDO1xuICAgICAgY29uc3QgYWNjb3VudEFkZHJlc3MgPSB0ZXN0RGF0YS50b2tlblRyYW5zZmVycy5zb3VyY2VVU0RDO1xuICAgICAgY29uc3QgdG9rZW5OYW1lID0gdGVzdERhdGEudG9rZW5UcmFuc2ZlcnMubmFtZVVTREM7XG5cbiAgICAgIC8vIE5vbmNlIGFkdmFuY2VcbiAgICAgIGNvbnN0IG5vbmNlQWR2YW5jZUluc3RydWN0aW9uID0gU3lzdGVtUHJvZ3JhbS5ub25jZUFkdmFuY2Uoe1xuICAgICAgICBub25jZVB1YmtleTogbmV3IFB1YmxpY0tleShub25jZUFjY291bnQpLFxuICAgICAgICBhdXRob3JpemVkUHVia2V5OiBuZXcgUHVibGljS2V5KGF1dGhBY2NvdW50KSxcbiAgICAgIH0pO1xuICAgICAgY29uc3Qgbm9uY2VBZHZhbmNlUGFyYW1zOiBJbnN0cnVjdGlvblBhcmFtcyA9IHtcbiAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTm9uY2VBZHZhbmNlLFxuICAgICAgICBwYXJhbXM6IHsgd2FsbGV0Tm9uY2VBZGRyZXNzOiBub25jZUFjY291bnQsIGF1dGhXYWxsZXRBZGRyZXNzOiBhdXRoQWNjb3VudCB9LFxuICAgICAgfTtcblxuICAgICAgLy8gTWludCBpbnN0cnVjdGlvblxuICAgICAgY29uc3QgbWludEluc3RydWN0aW9uID0gY3JlYXRlTWludFRvSW5zdHJ1Y3Rpb24oXG4gICAgICAgIG5ldyBQdWJsaWNLZXkobWludEFkZHJlc3MpLFxuICAgICAgICBuZXcgUHVibGljS2V5KGRlc3RpbmF0aW9uQWRkcmVzcyksXG4gICAgICAgIG5ldyBQdWJsaWNLZXkoYXV0aEFjY291bnQpLFxuICAgICAgICBCaWdJbnQoJzEwMDAwMDAnKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkTWludFBhcmFtczogSW5zdHJ1Y3Rpb25QYXJhbXMgPSB7XG4gICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk1pbnRUbyxcbiAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgbWludEFkZHJlc3MsXG4gICAgICAgICAgZGVzdGluYXRpb25BZGRyZXNzLFxuICAgICAgICAgIGF1dGhvcml0eUFkZHJlc3M6IGF1dGhBY2NvdW50LFxuICAgICAgICAgIGFtb3VudDogJzEwMDAwMDAnLFxuICAgICAgICAgIHRva2VuTmFtZSxcbiAgICAgICAgICBkZWNpbWFsUGxhY2VzOiB1bmRlZmluZWQsXG4gICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICAvLyBCdXJuIGluc3RydWN0aW9uXG4gICAgICBjb25zdCBidXJuSW5zdHJ1Y3Rpb24gPSBjcmVhdGVCdXJuSW5zdHJ1Y3Rpb24oXG4gICAgICAgIG5ldyBQdWJsaWNLZXkoYWNjb3VudEFkZHJlc3MpLFxuICAgICAgICBuZXcgUHVibGljS2V5KG1pbnRBZGRyZXNzKSxcbiAgICAgICAgbmV3IFB1YmxpY0tleShhdXRoQWNjb3VudCksXG4gICAgICAgIEJpZ0ludCgnNTAwMDAwJylcbiAgICAgICk7XG4gICAgICBjb25zdCBleHBlY3RlZEJ1cm5QYXJhbXM6IEluc3RydWN0aW9uUGFyYW1zID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5CdXJuLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBtaW50QWRkcmVzcyxcbiAgICAgICAgICBhY2NvdW50QWRkcmVzcyxcbiAgICAgICAgICBhdXRob3JpdHlBZGRyZXNzOiBhdXRoQWNjb3VudCxcbiAgICAgICAgICBhbW91bnQ6ICc1MDAwMDAnLFxuICAgICAgICAgIHRva2VuTmFtZSxcbiAgICAgICAgICBkZWNpbWFsUGxhY2VzOiB1bmRlZmluZWQsXG4gICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBpbnN0cnVjdGlvbnMgPSBbbm9uY2VBZHZhbmNlSW5zdHJ1Y3Rpb24sIG1pbnRJbnN0cnVjdGlvbiwgYnVybkluc3RydWN0aW9uXTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkUGFyYW1zID0gW25vbmNlQWR2YW5jZVBhcmFtcywgZXhwZWN0ZWRNaW50UGFyYW1zLCBleHBlY3RlZEJ1cm5QYXJhbXNdO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBpbnN0cnVjdGlvblBhcmFtc0ZhY3RvcnkoVHJhbnNhY3Rpb25UeXBlLlNlbmQsIGluc3RydWN0aW9ucyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHJlc3VsdCwgZXhwZWN0ZWRQYXJhbXMpO1xuICAgIH0pO1xuICB9KTtcbiAgZGVzY3JpYmUoJ0ZhaWwgJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdJbnZhbGlkIHR5cGUnLCAoKSA9PiB7XG4gICAgICBzaG91bGQoKCkgPT4gaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5KFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGwsIFtdKSkudGhyb3dFcnJvcihcbiAgICAgICAgJ0ludmFsaWQgdHJhbnNhY3Rpb24sIHRyYW5zYWN0aW9uIHR5cGUgbm90IHN1cHBvcnRlZDogJyArIFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGxcbiAgICAgICk7XG4gICAgfSk7XG4gICAgaXQoJ0ludmFsaWQgSW5zdHJ1Y3Rpb24gZm9yIFNlbmQgVHlwZScsICgpID0+IHtcbiAgICAgIGNvbnN0IGZyb21BZGRyZXNzID0gdGVzdERhdGEuYXV0aEFjY291bnQucHViO1xuICAgICAgY29uc3Qgbm9uY2VBZGRyZXNzID0gdGVzdERhdGEubm9uY2VBY2NvdW50LnB1YjtcbiAgICAgIGNvbnN0IGF1dGhBZGRyZXNzID0gdGVzdERhdGEuYXV0aEFjY291bnQucHViO1xuICAgICAgY29uc3QgYW1vdW50ID0gJzEwMDAwMCc7XG4gICAgICBjb25zdCBpbnN0cnVjdGlvbnMgPSBTeXN0ZW1Qcm9ncmFtLmNyZWF0ZU5vbmNlQWNjb3VudCh7XG4gICAgICAgIGZyb21QdWJrZXk6IG5ldyBQdWJsaWNLZXkoZnJvbUFkZHJlc3MpLFxuICAgICAgICBub25jZVB1YmtleTogbmV3IFB1YmxpY0tleShub25jZUFkZHJlc3MpLFxuICAgICAgICBhdXRob3JpemVkUHVia2V5OiBuZXcgUHVibGljS2V5KGF1dGhBZGRyZXNzKSxcbiAgICAgICAgbGFtcG9ydHM6IG5ldyBCaWdOdW1iZXIoYW1vdW50KS50b051bWJlcigpLFxuICAgICAgfSkuaW5zdHJ1Y3Rpb25zO1xuXG4gICAgICBzaG91bGQoKCkgPT4gaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5KFRyYW5zYWN0aW9uVHlwZS5TZW5kLCBpbnN0cnVjdGlvbnMpKS50aHJvd0Vycm9yKFxuICAgICAgICAnSW52YWxpZCB0cmFuc2FjdGlvbiwgaW5zdHJ1Y3Rpb24gdHlwZSBub3Qgc3VwcG9ydGVkOiBDcmVhdGUnXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instructionParamsFactory.staking.d.ts","sourceRoot":"","sources":["../../../../test/unit/instructionParamsFactory.staking.ts"],"names":[],"mappings":""}