@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
@@ -1,413 +0,0 @@
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 web3_js_1 = require("@solana/web3.js");
41
- const getBuilderFactory_1 = require("../getBuilderFactory");
42
- const src_1 = require("../../../src");
43
- const testData = __importStar(require("../../resources/sol"));
44
- const bs58_1 = __importDefault(require("bs58"));
45
- describe('Sol Custom Instruction Builder', () => {
46
- const factory = (0, getBuilderFactory_1.getBuilderFactory)('tsol');
47
- const customInstructionBuilder = () => {
48
- const txBuilder = factory.getCustomInstructionBuilder();
49
- txBuilder.nonce(recentBlockHash);
50
- txBuilder.sender(authAccount.pub);
51
- return txBuilder;
52
- };
53
- const authAccount = new src_1.KeyPair(testData.authAccount).getKeys();
54
- const otherAccount = new src_1.KeyPair({ prv: testData.prvKeys.prvKey1.base58 }).getKeys();
55
- const recentBlockHash = 'GHtXQBsoZHVnNFa9YevAzFr17DJjgHXk3ycTKD5xD3Zi';
56
- const memo = 'test memo';
57
- // Helper function to convert TransactionInstruction to the expected format
58
- const convertInstructionToParams = (instruction) => ({
59
- programId: instruction.programId.toString(),
60
- keys: instruction.keys.map((key) => ({
61
- pubkey: key.pubkey.toString(),
62
- isSigner: key.isSigner,
63
- isWritable: key.isWritable,
64
- })),
65
- data: instruction.data.toString('hex'),
66
- });
67
- describe('Succeed', () => {
68
- it('build a transaction with a single custom instruction', async () => {
69
- const transferInstruction = web3_js_1.SystemProgram.transfer({
70
- fromPubkey: new web3_js_1.PublicKey(authAccount.pub),
71
- toPubkey: new web3_js_1.PublicKey(otherAccount.pub),
72
- lamports: 1000000,
73
- });
74
- const txBuilder = customInstructionBuilder();
75
- txBuilder.addCustomInstruction(convertInstructionToParams(transferInstruction));
76
- const tx = await txBuilder.build();
77
- tx.inputs.length.should.equal(0);
78
- const rawTx = tx.toBroadcastFormat();
79
- should_1.default.equal(src_1.Utils.isValidRawTransaction(rawTx), true);
80
- });
81
- it('build a transaction with multiple custom instructions', async () => {
82
- const transferInstruction = web3_js_1.SystemProgram.transfer({
83
- fromPubkey: new web3_js_1.PublicKey(authAccount.pub),
84
- toPubkey: new web3_js_1.PublicKey(otherAccount.pub),
85
- lamports: 1000000,
86
- });
87
- const priorityFeeInstruction = web3_js_1.ComputeBudgetProgram.setComputeUnitPrice({
88
- microLamports: 1000,
89
- });
90
- const txBuilder = customInstructionBuilder();
91
- txBuilder.addCustomInstructions([
92
- convertInstructionToParams(transferInstruction),
93
- convertInstructionToParams(priorityFeeInstruction),
94
- ]);
95
- const tx = await txBuilder.build();
96
- tx.inputs.length.should.equal(0);
97
- tx.outputs.length.should.equal(0);
98
- const rawTx = tx.toBroadcastFormat();
99
- should_1.default.equal(src_1.Utils.isValidRawTransaction(rawTx), true);
100
- // Should have 2 instructions
101
- tx.solTransaction.instructions.should.have.length(2);
102
- });
103
- it('build a transaction with custom instruction and memo', async () => {
104
- const transferInstruction = web3_js_1.SystemProgram.transfer({
105
- fromPubkey: new web3_js_1.PublicKey(authAccount.pub),
106
- toPubkey: new web3_js_1.PublicKey(otherAccount.pub),
107
- lamports: 1000000,
108
- });
109
- const txBuilder = customInstructionBuilder();
110
- txBuilder.addCustomInstruction(convertInstructionToParams(transferInstruction));
111
- txBuilder.memo(memo);
112
- const tx = await txBuilder.build();
113
- const rawTx = tx.toBroadcastFormat();
114
- should_1.default.equal(src_1.Utils.isValidRawTransaction(rawTx), true);
115
- // Should have instruction + memo
116
- tx.solTransaction.instructions.should.have.length(2);
117
- });
118
- it('build a signed transaction with custom instruction', async () => {
119
- const transferInstruction = web3_js_1.SystemProgram.transfer({
120
- fromPubkey: new web3_js_1.PublicKey(authAccount.pub),
121
- toPubkey: new web3_js_1.PublicKey(otherAccount.pub),
122
- lamports: 1000000,
123
- });
124
- const txBuilder = customInstructionBuilder();
125
- txBuilder.addCustomInstruction(convertInstructionToParams(transferInstruction));
126
- txBuilder.sign({ key: authAccount.prv });
127
- const tx = await txBuilder.build();
128
- const rawTx = tx.toBroadcastFormat();
129
- should_1.default.equal(src_1.Utils.isValidRawTransaction(rawTx), true);
130
- // Should be signed
131
- tx.solTransaction.signatures.should.not.be.empty();
132
- });
133
- it('clear instructions from builder', async () => {
134
- const transferInstruction = web3_js_1.SystemProgram.transfer({
135
- fromPubkey: new web3_js_1.PublicKey(authAccount.pub),
136
- toPubkey: new web3_js_1.PublicKey(otherAccount.pub),
137
- lamports: 1000000,
138
- });
139
- const txBuilder = customInstructionBuilder();
140
- txBuilder.addCustomInstruction(convertInstructionToParams(transferInstruction));
141
- txBuilder.getInstructions().should.have.length(1);
142
- txBuilder.clearInstructions();
143
- txBuilder.getInstructions().should.have.length(0);
144
- });
145
- });
146
- describe('Fail', () => {
147
- it('for null instruction', () => {
148
- const txBuilder = customInstructionBuilder();
149
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
150
- (0, should_1.default)(() => txBuilder.addCustomInstruction(null)).throwError('Instruction cannot be null or undefined');
151
- });
152
- it('for undefined instruction', () => {
153
- const txBuilder = customInstructionBuilder();
154
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
155
- (0, should_1.default)(() => txBuilder.addCustomInstruction(undefined)).throwError('Instruction cannot be null or undefined');
156
- });
157
- it('for instruction without programId', () => {
158
- const txBuilder = customInstructionBuilder();
159
- const invalidInstruction = {
160
- keys: [],
161
- data: '',
162
- };
163
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
164
- (0, should_1.default)(() => txBuilder.addCustomInstruction(invalidInstruction)).throwError('Versioned instruction must have a valid programIdIndex number');
165
- });
166
- it('for instruction without keys', () => {
167
- const txBuilder = customInstructionBuilder();
168
- const invalidInstruction = {
169
- programId: '11111111111111111111111111111112',
170
- data: '',
171
- };
172
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
173
- (0, should_1.default)(() => txBuilder.addCustomInstruction(invalidInstruction)).throwError('Instruction must have valid keys array');
174
- });
175
- it('for instruction without data', () => {
176
- const txBuilder = customInstructionBuilder();
177
- const invalidInstruction = {
178
- programId: '11111111111111111111111111111112',
179
- keys: [],
180
- };
181
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
182
- (0, should_1.default)(() => txBuilder.addCustomInstruction(invalidInstruction)).throwError('Instruction must have valid data string');
183
- });
184
- it('for non-array in addCustomInstructions', () => {
185
- const txBuilder = customInstructionBuilder();
186
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
187
- (0, should_1.default)(() => txBuilder.addCustomInstructions('invalid')).throwError('Instructions must be an array');
188
- });
189
- it('when building without instructions', async () => {
190
- const txBuilder = customInstructionBuilder();
191
- await txBuilder.build().should.be.rejectedWith('At least one custom instruction must be specified');
192
- });
193
- it('when building without sender', async () => {
194
- const transferInstruction = web3_js_1.SystemProgram.transfer({
195
- fromPubkey: new web3_js_1.PublicKey(authAccount.pub),
196
- toPubkey: new web3_js_1.PublicKey(otherAccount.pub),
197
- lamports: 1000000,
198
- });
199
- const txBuilder = factory.getCustomInstructionBuilder();
200
- txBuilder.nonce(recentBlockHash);
201
- txBuilder.addCustomInstruction(convertInstructionToParams(transferInstruction));
202
- await txBuilder.build().should.be.rejectedWith('Invalid transaction: missing sender');
203
- });
204
- it('when building without nonce', async () => {
205
- const transferInstruction = web3_js_1.SystemProgram.transfer({
206
- fromPubkey: new web3_js_1.PublicKey(authAccount.pub),
207
- toPubkey: new web3_js_1.PublicKey(otherAccount.pub),
208
- lamports: 1000000,
209
- });
210
- const txBuilder = factory.getCustomInstructionBuilder();
211
- txBuilder.sender(authAccount.pub);
212
- txBuilder.addCustomInstruction(convertInstructionToParams(transferInstruction));
213
- await txBuilder.build().should.be.rejectedWith('Invalid transaction: missing nonce blockhash');
214
- });
215
- });
216
- describe('SolVersionedInstruction Support', () => {
217
- it('should accept and validate SolVersionedInstruction format', () => {
218
- const compiledInstruction = {
219
- programIdIndex: 1,
220
- accountKeyIndexes: [0, 2, 3],
221
- data: '3Bxs43ZMjSRQLs6o', // base58 encoded instruction data
222
- };
223
- const txBuilder = customInstructionBuilder();
224
- (0, should_1.default)(() => txBuilder.addCustomInstruction(compiledInstruction)).not.throwError();
225
- txBuilder.getInstructions().should.have.length(1);
226
- const addedInstruction = txBuilder.getInstructions()[0];
227
- addedInstruction.params.should.deepEqual(compiledInstruction);
228
- });
229
- it('should validate versioned instruction format', () => {
230
- const txBuilder = customInstructionBuilder();
231
- // Invalid programIdIndex
232
- (0, should_1.default)(() => txBuilder.addCustomInstruction({
233
- programIdIndex: -1,
234
- accountKeyIndexes: [0],
235
- data: '1', // base58 for 0x00
236
- })).throwError('Versioned instruction must have a valid programIdIndex number');
237
- // Invalid accountKeyIndexes
238
- (0, should_1.default)(() => txBuilder.addCustomInstruction({
239
- programIdIndex: 0,
240
- accountKeyIndexes: [-1],
241
- data: '1', // base58 for 0x00
242
- })).throwError('Each accountKeyIndex must be a non-negative number');
243
- // Missing data
244
- (0, should_1.default)(() => txBuilder.addCustomInstruction({
245
- programIdIndex: 0,
246
- accountKeyIndexes: [0],
247
- })).throwError('Versioned instruction must have valid data string');
248
- });
249
- it('should handle mixed SolInstruction and SolVersionedInstruction', () => {
250
- const traditionalInstruction = convertInstructionToParams(web3_js_1.SystemProgram.transfer({
251
- fromPubkey: new web3_js_1.PublicKey(authAccount.pub),
252
- toPubkey: new web3_js_1.PublicKey(otherAccount.pub),
253
- lamports: 1000000,
254
- }));
255
- const compiledInstruction = {
256
- programIdIndex: 1,
257
- accountKeyIndexes: [0, 2],
258
- data: '4HSo5YVBrgChTZX5',
259
- };
260
- const txBuilder = customInstructionBuilder();
261
- txBuilder.addCustomInstruction(traditionalInstruction);
262
- txBuilder.addCustomInstruction(compiledInstruction);
263
- txBuilder.getInstructions().should.have.length(2);
264
- });
265
- });
266
- describe('fromVersionedTransactionData', () => {
267
- function extractVersionedTransactionData(base64Bytes) {
268
- const buffer = Buffer.from(base64Bytes, 'base64');
269
- const versionedTx = web3_js_1.VersionedTransaction.deserialize(buffer);
270
- return {
271
- versionedInstructions: versionedTx.message.compiledInstructions.map((ci) => ({
272
- programIdIndex: ci.programIdIndex,
273
- accountKeyIndexes: ci.accountKeyIndexes,
274
- data: bs58_1.default.encode(ci.data),
275
- })),
276
- addressLookupTables: versionedTx.message.addressTableLookups.map((alt) => ({
277
- accountKey: alt.accountKey.toString(),
278
- writableIndexes: alt.writableIndexes,
279
- readonlyIndexes: alt.readonlyIndexes,
280
- })),
281
- staticAccountKeys: versionedTx.message.staticAccountKeys.map((key) => key.toString()),
282
- messageHeader: {
283
- numRequiredSignatures: versionedTx.message.header.numRequiredSignatures,
284
- numReadonlySignedAccounts: versionedTx.message.header.numReadonlySignedAccounts,
285
- numReadonlyUnsignedAccounts: versionedTx.message.header.numReadonlyUnsignedAccounts,
286
- },
287
- };
288
- }
289
- it('should process VersionedTransactionData and extract instructions', () => {
290
- const txBuilder = customInstructionBuilder();
291
- const versionedTxData = extractVersionedTransactionData(testData.JUPITER_VERSIONED_TX_BYTES);
292
- // Should parse without throwing errors
293
- (0, should_1.default)(() => txBuilder.fromVersionedTransactionData(versionedTxData)).not.throwError();
294
- // Should have extracted instructions
295
- const instructions = txBuilder.getInstructions();
296
- instructions.length.should.be.greaterThan(0);
297
- for (const instruction of instructions) {
298
- instruction.type.should.equal('VersionedCustomInstruction');
299
- instruction.params.should.have.property('programIdIndex');
300
- instruction.params.should.have.property('accountKeyIndexes');
301
- instruction.params.should.have.property('data');
302
- }
303
- });
304
- it('should store VersionedTransactionData in underlying transaction', async () => {
305
- const txBuilder = customInstructionBuilder();
306
- const versionedTxData = extractVersionedTransactionData(testData.JUPITER_VERSIONED_TX_BYTES);
307
- txBuilder.fromVersionedTransactionData(versionedTxData);
308
- const tx = txBuilder['_transaction'];
309
- const storedData = tx.getVersionedTransactionData();
310
- should_1.default.exist(storedData);
311
- storedData.versionedInstructions.length.should.equal(versionedTxData.versionedInstructions.length);
312
- storedData.addressLookupTables.length.should.equal(versionedTxData.addressLookupTables.length);
313
- storedData.staticAccountKeys.length.should.equal(versionedTxData.staticAccountKeys.length);
314
- });
315
- it('should validate input data', () => {
316
- const txBuilder = customInstructionBuilder();
317
- // Invalid: null/undefined
318
- (0, should_1.default)(() => txBuilder.fromVersionedTransactionData(null)).throwError(/must be a valid object/);
319
- (0, should_1.default)(() => txBuilder.fromVersionedTransactionData(undefined)).throwError(/must be a valid object/);
320
- // Invalid: empty instructions
321
- (0, should_1.default)(() => txBuilder.fromVersionedTransactionData({
322
- versionedInstructions: [],
323
- addressLookupTables: [],
324
- staticAccountKeys: ['test'],
325
- messageHeader: { numRequiredSignatures: 1, numReadonlySignedAccounts: 0, numReadonlyUnsignedAccounts: 0 },
326
- })).throwError(/non-empty array/);
327
- // Invalid: missing addressLookupTables
328
- (0, should_1.default)(() => txBuilder.fromVersionedTransactionData({
329
- versionedInstructions: [{ programIdIndex: 0, accountKeyIndexes: [0], data: '1' }], // base58 for 0x00
330
- staticAccountKeys: ['test'],
331
- })).throwError(/must be an array/);
332
- // Invalid: empty staticAccountKeys
333
- (0, should_1.default)(() => txBuilder.fromVersionedTransactionData({
334
- versionedInstructions: [{ programIdIndex: 0, accountKeyIndexes: [0], data: '1' }], // base58 for 0x00
335
- addressLookupTables: [],
336
- staticAccountKeys: [],
337
- messageHeader: { numRequiredSignatures: 1, numReadonlySignedAccounts: 0, numReadonlyUnsignedAccounts: 0 },
338
- })).throwError(/non-empty array/);
339
- });
340
- it('should work with the complete transaction building flow', async () => {
341
- const txBuilder = customInstructionBuilder();
342
- const versionedTxData = extractVersionedTransactionData(testData.JUPITER_VERSIONED_TX_BYTES);
343
- // Process the VersionedTransactionData
344
- txBuilder.fromVersionedTransactionData(versionedTxData);
345
- txBuilder.sender(versionedTxData.staticAccountKeys[0]); // Fee payer
346
- txBuilder.nonce(testData.blockHashes.validBlockHashes[0]);
347
- const tx = await txBuilder.build();
348
- // Verify transaction properties
349
- tx.should.be.ok();
350
- tx.type.should.equal(31); // TransactionType.CustomTx enum value
351
- // Verify signable payload
352
- const payload = tx.signablePayload;
353
- payload.should.be.instanceOf(Buffer);
354
- payload.length.should.be.greaterThan(0);
355
- // Verify payload is deterministic - rebuilding with same params produces same payload
356
- const txBuilder2 = customInstructionBuilder();
357
- txBuilder2.fromVersionedTransactionData(versionedTxData);
358
- txBuilder2.sender(versionedTxData.staticAccountKeys[0]);
359
- txBuilder2.nonce(testData.blockHashes.validBlockHashes[0]);
360
- const tx2 = await txBuilder2.build();
361
- should_1.default.equal(tx2.signablePayload.toString('hex'), payload.toString('hex'));
362
- });
363
- it('should extract the correct number of instructions from Jupiter transaction', () => {
364
- const txBuilder = customInstructionBuilder();
365
- const versionedTxData = extractVersionedTransactionData(testData.JUPITER_VERSIONED_TX_BYTES);
366
- txBuilder.fromVersionedTransactionData(versionedTxData);
367
- const instructions = txBuilder.getInstructions();
368
- // Verify we extracted instructions
369
- instructions.length.should.be.greaterThan(0);
370
- instructions.length.should.equal(versionedTxData.versionedInstructions.length);
371
- // Verify each instruction has valid compiled format
372
- for (const instruction of instructions) {
373
- const params = instruction.params;
374
- (typeof params.programIdIndex).should.equal('number');
375
- params.programIdIndex.should.be.greaterThanOrEqual(0);
376
- Array.isArray(params.accountKeyIndexes).should.equal(true);
377
- (typeof params.data).should.equal('string');
378
- // Data should be valid base58 string (non-empty)
379
- params.data.length.should.be.greaterThan(0);
380
- // Verify it can be decoded
381
- should_1.default.doesNotThrow(() => bs58_1.default.decode(params.data));
382
- }
383
- });
384
- it('should clear instructions properly after using fromVersionedTransactionData', () => {
385
- const txBuilder = customInstructionBuilder();
386
- const versionedTxData = extractVersionedTransactionData(testData.JUPITER_VERSIONED_TX_BYTES);
387
- txBuilder.fromVersionedTransactionData(versionedTxData);
388
- txBuilder.getInstructions().length.should.be.greaterThan(0);
389
- // Clear should work
390
- txBuilder.clearInstructions();
391
- txBuilder.getInstructions().should.have.length(0);
392
- });
393
- it('should extract fee payer from staticAccountKeys', () => {
394
- const txBuilder = factory.getCustomInstructionBuilder();
395
- txBuilder.nonce(recentBlockHash);
396
- const versionedTxData = extractVersionedTransactionData(testData.JUPITER_VERSIONED_TX_BYTES);
397
- txBuilder.fromVersionedTransactionData(versionedTxData);
398
- const sender = txBuilder['_sender'];
399
- should_1.default.exist(sender);
400
- sender.should.equal(versionedTxData.staticAccountKeys[0]);
401
- });
402
- it('should not override existing sender', () => {
403
- const txBuilder = customInstructionBuilder();
404
- const versionedTxData = extractVersionedTransactionData(testData.JUPITER_VERSIONED_TX_BYTES);
405
- const originalSender = txBuilder['_sender'];
406
- txBuilder.fromVersionedTransactionData(versionedTxData);
407
- const sender = txBuilder['_sender'];
408
- sender.should.equal(originalSender);
409
- sender.should.equal(authAccount.pub);
410
- });
411
- });
412
- });
413
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tSW5zdHJ1Y3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci9jdXN0b21JbnN0cnVjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsNkNBTXlCO0FBQ3pCLDREQUF5RDtBQUN6RCxzQ0FBMkQ7QUFDM0QsOERBQWdEO0FBRWhELGdEQUEwQjtBQUUxQixRQUFRLENBQUMsZ0NBQWdDLEVBQUUsR0FBRyxFQUFFO0lBQzlDLE1BQU0sT0FBTyxHQUFHLElBQUEscUNBQWlCLEVBQUMsTUFBTSxDQUFDLENBQUM7SUFFMUMsTUFBTSx3QkFBd0IsR0FBRyxHQUFHLEVBQUU7UUFDcEMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDeEQsU0FBUyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqQyxTQUFTLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNsQyxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDLENBQUM7SUFFRixNQUFNLFdBQVcsR0FBRyxJQUFJLGFBQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxhQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNyRixNQUFNLGVBQWUsR0FBRyw4Q0FBOEMsQ0FBQztJQUN2RSxNQUFNLElBQUksR0FBRyxXQUFXLENBQUM7SUFFekIsMkVBQTJFO0lBQzNFLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxXQUFtQyxFQUFFLEVBQUUs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QyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNwQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHtcbiAgU3lzdGVtUHJvZ3JhbSxcbiAgUHVibGljS2V5LFxuICBUcmFuc2FjdGlvbkluc3RydWN0aW9uLFxuICBDb21wdXRlQnVkZ2V0UHJvZ3JhbSxcbiAgVmVyc2lvbmVkVHJhbnNhY3Rpb24sXG59IGZyb20gJ0Bzb2xhbmEvd2ViMy5qcyc7XG5pbXBvcnQgeyBnZXRCdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4uL2dldEJ1aWxkZXJGYWN0b3J5JztcbmltcG9ydCB7IEtleVBhaXIsIFV0aWxzLCBUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgKiBhcyB0ZXN0RGF0YSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvc29sJztcbmltcG9ydCB7IFNvbFZlcnNpb25lZEluc3RydWN0aW9uIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IGJhc2U1OCBmcm9tICdiczU4JztcblxuZGVzY3JpYmUoJ1NvbCBDdXN0b20gSW5zdHJ1Y3Rpb24gQnVpbGRlcicsICgpID0+IHtcbiAgY29uc3QgZmFjdG9yeSA9IGdldEJ1aWxkZXJGYWN0b3J5KCd0c29sJyk7XG5cbiAgY29uc3QgY3VzdG9tSW5zdHJ1Y3Rpb25CdWlsZGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0Q3VzdG9tSW5zdHJ1Y3Rpb25CdWlsZGVyKCk7XG4gICAgdHhCdWlsZGVyLm5vbmNlKHJlY2VudEJsb2NrSGFzaCk7XG4gICAgdHhCdWlsZGVyLnNlbmRlcihhdXRoQWNjb3VudC5wdWIpO1xuICAgIHJldHVybiB0eEJ1aWxkZXI7XG4gIH07XG5cbiAgY29uc3QgYXV0aEFjY291bnQgPSBuZXcgS2V5UGFpcih0ZXN0RGF0YS5hdXRoQWNjb3VudCkuZ2V0S2V5cygpO1xuICBjb25zdCBvdGhlckFjY291bnQgPSBuZXcgS2V5UGFpcih7IHBydjogdGVzdERhdGEucHJ2S2V5cy5wcnZLZXkxLmJhc2U1OCB9KS5nZXRLZXlzKCk7XG4gIGNvbnN0IHJlY2VudEJsb2NrSGFzaCA9ICdHSHRYUUJzb1pIVm5ORmE5WWV2QXpGcjE3REpqZ0hYazN5Y1RLRDV4RDNaaSc7XG4gIGNvbnN0IG1lbW8gPSAndGVzdCBtZW1vJztcblxuICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gY29udmVydCBUcmFuc2FjdGlvbkluc3RydWN0aW9uIHRvIHRoZSBleHBlY3RlZCBmb3JtYXRcbiAgY29uc3QgY29udmVydEluc3RydWN0aW9uVG9QYXJhbXMgPSAoaW5zdHJ1Y3Rpb246IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb24pID0+ICh7XG4gICAgcHJvZ3JhbUlkOiBpbnN0cnVjdGlvbi5wcm9ncmFtSWQudG9TdHJpbmcoKSxcbiAgICBrZXlzOiBpbnN0cnVjdGlvbi5rZXlzLm1hcCgoa2V5KSA9PiAoe1xuICAgICAgcHVia2V5OiBrZXkucHVia2V5LnRvU3RyaW5nKCksXG4gICAgICBpc1NpZ25lcjoga2V5LmlzU2lnbmVyLFxuICAgICAgaXNXcml0YWJsZToga2V5LmlzV3JpdGFibGUsXG4gICAgfSkpLFxuICAgIGRhdGE6IGluc3RydWN0aW9uLmRhdGEudG9TdHJpbmcoJ2hleCcpLFxuICB9KTtcblxuICBkZXNjcmliZSgnU3VjY2VlZCcsICgpID0+IHtcbiAgICBpdCgnYnVpbGQgYSB0cmFuc2FjdGlvbiB3aXRoIGEgc2luZ2xlIGN1c3RvbSBpbnN0cnVjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRyYW5zZmVySW5zdHJ1Y3Rpb24gPSBTeXN0ZW1Qcm9ncmFtLnRyYW5zZmVyKHtcbiAgICAgICAgZnJvbVB1YmtleTogbmV3IFB1YmxpY0tleShhdXRoQWNjb3VudC5wdWIpLFxuICAgICAgICB0b1B1YmtleTogbmV3IFB1YmxpY0tleShvdGhlckFjY291bnQucHViKSxcbiAgICAgICAgbGFtcG9ydHM6IDEwMDAwMDAsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY3VzdG9tSW5zdHJ1Y3Rpb25CdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuYWRkQ3VzdG9tSW5zdHJ1Y3Rpb24oY29udmVydEluc3RydWN0aW9uVG9QYXJhbXModHJhbnNmZXJJbnN0cnVjdGlvbikpO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgdHguaW5wdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMCk7XG5cbiAgICAgIGNvbnN0IHJhd1R4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIHNob3VsZC5lcXVhbChVdGlscy5pc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHgpLCB0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdidWlsZCBhIHRyYW5zYWN0aW9uIHdpdGggbXVsdGlwbGUgY3VzdG9tIGluc3RydWN0aW9ucycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRyYW5zZmVySW5zdHJ1Y3Rpb24gPSBTeXN0ZW1Qcm9ncmFtLnRyYW5zZmVyKHtcbiAgICAgICAgZnJvbVB1YmtleTogbmV3IFB1YmxpY0tleShhdXRoQWNjb3VudC5wdWIpLFxuICAgICAgICB0b1B1YmtleTogbmV3IFB1YmxpY0tleShvdGhlckFjY291bnQucHViKSxcbiAgICAgICAgbGFtcG9ydHM6IDEwMDAwMDAsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgcHJpb3JpdHlGZWVJbnN0cnVjdGlvbiA9IENvbXB1dGVCdWRnZXRQcm9ncmFtLnNldENvbXB1dGVVbml0UHJpY2Uoe1xuICAgICAgICBtaWNyb0xhbXBvcnRzOiAxMDAwLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGN1c3RvbUluc3RydWN0aW9uQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLmFkZEN1c3RvbUluc3RydWN0aW9ucyhbXG4gICAgICAgIGNvbnZlcnRJbnN0cnVjdGlvblRvUGFyYW1zKHRyYW5zZmVySW5zdHJ1Y3Rpb24pLFxuICAgICAgICBjb252ZXJ0SW5zdHJ1Y3Rpb25Ub1BhcmFtcyhwcmlvcml0eUZlZUluc3RydWN0aW9uKSxcbiAgICAgIF0pO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgICAgdHguaW5wdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMCk7XG4gICAgICB0eC5vdXRwdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMCk7XG5cbiAgICAgIGNvbnN0IHJhd1R4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIHNob3VsZC5lcXVhbChVdGlscy5pc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHgpLCB0cnVlKTtcblxuICAgICAgLy8gU2hvdWxkIGhhdmUgMiBpbnN0cnVjdGlvbnNcbiAgICAgICh0eCBhcyBUcmFuc2FjdGlvbikuc29sVHJhbnNhY3Rpb24uaW5zdHJ1Y3Rpb25zLnNob3VsZC5oYXZlLmxlbmd0aCgyKTtcbiAgICB9KTtcblxuICAgIGl0KCdidWlsZCBhIHRyYW5zYWN0aW9uIHdpdGggY3VzdG9tIGluc3RydWN0aW9uIGFuZCBtZW1vJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHJhbnNmZXJJbnN0cnVjdGlvbiA9IFN5c3RlbVByb2dyYW0udHJhbnNmZXIoe1xuICAgICAgICBmcm9tUHVia2V5OiBuZXcgUHVibGljS2V5KGF1dGhBY2NvdW50LnB1YiksXG4gICAgICAgIHRvUHVia2V5OiBuZXcgUHVibGljS2V5KG90aGVyQWNjb3VudC5wdWIpLFxuICAgICAgICBsYW1wb3J0czogMTAwMDAwMCxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjdXN0b21JbnN0cnVjdGlvbkJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5hZGRDdXN0b21JbnN0cnVjdGlvbihjb252ZXJ0SW5zdHJ1Y3Rpb25Ub1BhcmFtcyh0cmFuc2Zlckluc3RydWN0aW9uKSk7XG4gICAgICB0eEJ1aWxkZXIubWVtbyhtZW1vKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIGNvbnN0IHJhd1R4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgIHNob3VsZC5lcXVhbChVdGlscy5pc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHgpLCB0cnVlKTtcblxuICAgICAgLy8gU2hvdWxkIGhhdmUgaW5zdHJ1Y3Rpb24gKyBtZW1vXG4gICAgICAodHggYXMgVHJhbnNhY3Rpb24pLnNvbFRyYW5zYWN0aW9uLmluc3RydWN0aW9ucy5zaG91bGQuaGF2ZS5sZW5ndGgoMik7XG4gICAgfSk7XG5cbiAgICBpdCgnYnVpbGQgYSBzaWduZWQgdHJhbnNhY3Rpb24gd2l0aCBjdXN0b20gaW5zdHJ1Y3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0cmFuc2Zlckluc3RydWN0aW9uID0gU3lzdGVtUHJvZ3JhbS50cmFuc2Zlcih7XG4gICAgICAgIGZyb21QdWJrZXk6IG5ldyBQdWJsaWNLZXkoYXV0aEFjY291bnQucHViKSxcbiAgICAgICAgdG9QdWJrZXk6IG5ldyBQdWJsaWNLZXkob3RoZXJBY2NvdW50LnB1YiksXG4gICAgICAgIGxhbXBvcnRzOiAxMDAwMDAwLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGN1c3RvbUluc3RydWN0aW9uQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLmFkZEN1c3RvbUluc3RydWN0aW9uKGNvbnZlcnRJbnN0cnVjdGlvblRvUGFyYW1zKHRyYW5zZmVySW5zdHJ1Y3Rpb24pKTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBhdXRoQWNjb3VudC5wcnYgfSk7XG4gICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuXG4gICAgICBjb25zdCByYXdUeCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICBzaG91bGQuZXF1YWwoVXRpbHMuaXNWYWxpZFJhd1RyYW5zYWN0aW9uKHJhd1R4KSwgdHJ1ZSk7XG5cbiAgICAgIC8vIFNob3VsZCBiZSBzaWduZWRcbiAgICAgICh0eCBhcyBUcmFuc2FjdGlvbikuc29sVHJhbnNhY3Rpb24uc2lnbmF0dXJlcy5zaG91bGQubm90LmJlLmVtcHR5KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnY2xlYXIgaW5zdHJ1Y3Rpb25zIGZyb20gYnVpbGRlcicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRyYW5zZmVySW5zdHJ1Y3Rpb24gPSBTeXN0ZW1Qcm9ncmFtLnRyYW5zZmVyKHtcbiAgICAgICAgZnJvbVB1YmtleTogbmV3IFB1YmxpY0tleShhdXRoQWNjb3VudC5wdWIpLFxuICAgICAgICB0b1B1YmtleTogbmV3IFB1YmxpY0tleShvdGhlckFjY291bnQucHViKSxcbiAgICAgICAgbGFtcG9ydHM6IDEwMDAwMDAsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY3VzdG9tSW5zdHJ1Y3Rpb25CdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuYWRkQ3VzdG9tSW5zdHJ1Y3Rpb24oY29udmVydEluc3RydWN0aW9uVG9QYXJhbXModHJhbnNmZXJJbnN0cnVjdGlvbikpO1xuICAgICAgdHhCdWlsZGVyLmdldEluc3RydWN0aW9ucygpLnNob3VsZC5oYXZlLmxlbmd0aCgxKTtcblxuICAgICAgdHhCdWlsZGVyLmNsZWFySW5zdHJ1Y3Rpb25zKCk7XG4gICAgICB0eEJ1aWxkZXIuZ2V0SW5zdHJ1Y3Rpb25zKCkuc2hvdWxkLmhhdmUubGVuZ3RoKDApO1xuICAgIH0pO1xuICB9KTtcblxuICAvLyBUeXBlIGZvciB0ZXN0aW5nIGludmFsaWQgaW5zdHJ1Y3Rpb24gZm9ybWF0c1xuICBpbnRlcmZhY2UgSW52YWxpZEluc3RydWN0aW9uIHtcbiAgICBwcm9ncmFtSWQ/OiBzdHJpbmc7XG4gICAga2V5cz86IHVua25vd247XG4gICAgZGF0YT86IHVua25vd247XG4gIH1cblxuICBkZXNjcmliZSgnRmFpbCcsICgpID0+IHtcbiAgICBpdCgnZm9yIG51bGwgaW5zdHJ1Y3Rpb24nLCAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjdXN0b21JbnN0cnVjdGlvbkJ1aWxkZXIoKTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICBzaG91bGQoKCkgPT4gdHhCdWlsZGVyLmFkZEN1c3RvbUluc3RydWN0aW9uKG51bGwgYXMgYW55KSkudGhyb3dFcnJvcignSW5zdHJ1Y3Rpb24gY2Fubm90IGJlIG51bGwgb3IgdW5kZWZpbmVkJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnZm9yIHVuZGVmaW5lZCBpbnN0cnVjdGlvbicsICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGN1c3RvbUluc3RydWN0aW9uQnVpbGRlcigpO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgIHNob3VsZCgoKSA9PiB0eEJ1aWxkZXIuYWRkQ3VzdG9tSW5zdHJ1Y3Rpb24odW5kZWZpbmVkIGFzIGFueSkpLnRocm93RXJyb3IoXG4gICAgICAgICdJbnN0cnVjdGlvbiBjYW5ub3QgYmUgbnVsbCBvciB1bmRlZmluZWQnXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2ZvciBpbnN0cnVjdGlvbiB3aXRob3V0IHByb2dyYW1JZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGN1c3RvbUluc3RydWN0aW9uQnVpbGRlcigpO1xuICAgICAgY29uc3QgaW52YWxpZEluc3RydWN0aW9uOiBJbnZhbGlkSW5zdHJ1Y3Rpb24gPSB7XG4gICAgICAgIGtleXM6IFtdLFxuICAgICAgICBkYXRhOiAnJyxcbiAgICAgIH07XG5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICBzaG91bGQoKCkgPT4gdHhCdWlsZGVyLmFkZEN1c3RvbUluc3RydWN0aW9uKGludmFsaWRJbnN0cnVjdGlvbiBhcyBhbnkpKS50aHJvd0Vycm9yKFxuICAgICAgICAnVmVyc2lvbmVkIGluc3RydWN0aW9uIG11c3QgaGF2ZSBhIHZhbGlkIHByb2dyYW1JZEluZGV4IG51bWJlcidcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnZm9yIGluc3RydWN0aW9uIHdpdGhvdXQga2V5cycsICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGN1c3RvbUluc3RydWN0aW9uQnVpbGRlcigpO1xuICAgICAgY29uc3QgaW52YWxpZEluc3RydWN0aW9uOiBJbnZhbGlkSW5zdHJ1Y3Rpb24gPSB7XG4gICAgICAgIHByb2dyYW1JZDogJzExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEyJyxcbiAgICAgICAgZGF0YTogJycsXG4gICAgICB9O1xuXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgc2hvdWxkKCgpID0+IHR4QnVpbGRlci5hZGRDdXN0b21JbnN0cnVjdGlvbihpbnZhbGlkSW5zdHJ1Y3Rpb24gYXMgYW55KSkudGhyb3dFcnJvcihcbiAgICAgICAgJ0luc3RydWN0aW9uIG11c3QgaGF2ZSB2YWxpZCBrZXlzIGFycmF5J1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdmb3IgaW5zdHJ1Y3Rpb24gd2l0aG91dCBkYXRhJywgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY3VzdG9tSW5zdHJ1Y3Rpb25CdWlsZGVyKCk7XG4gICAgICBjb25zdCBpbnZhbGlkSW5zdHJ1Y3Rpb246IEludmFsaWRJbnN0cnVjdGlvbiA9IHtcbiAgICAgICAgcHJvZ3JhbUlkOiAnMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTInLFxuICAgICAgICBrZXlzOiBbXSxcbiAgICAgIH07XG5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICBzaG91bGQoKCkgPT4gdHhCdWlsZGVyLmFkZEN1c3RvbUluc3RydWN0aW9uKGludmFsaWRJbnN0cnVjdGlvbiBhcyBhbnkpKS50aHJvd0Vycm9yKFxuICAgICAgICAnSW5zdHJ1Y3Rpb24gbXVzdCBoYXZlIHZhbGlkIGRhdGEgc3RyaW5nJ1xuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdmb3Igbm9uLWFycmF5IGluIGFkZEN1c3RvbUluc3RydWN0aW9ucycsICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGN1c3RvbUluc3RydWN0aW9uQnVpbGRlcigpO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgIHNob3VsZCgoKSA9PiB0eEJ1aWxkZXIuYWRkQ3VzdG9tSW5zdHJ1Y3Rpb25zKCdpbnZhbGlkJyBhcyBhbnkpKS50aHJvd0Vycm9yKCdJbnN0cnVjdGlvbnMgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3doZW4gYnVpbGRpbmcgd2l0aG91dCBpbnN0cnVjdGlvbnMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjdXN0b21JbnN0cnVjdGlvbkJ1aWxkZXIoKTtcbiAgICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0F0IGxlYXN0IG9uZSBjdXN0b20gaW5zdHJ1Y3Rpb24gbXVzdCBiZSBzcGVjaWZpZWQnKTtcbiAgICB9KTtcblxuICAgIGl0KCd3aGVuIGJ1aWxkaW5nIHdpdGhvdXQgc2VuZGVyJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHJhbnNmZXJJbnN0cnVjdGlvbiA9IFN5c3RlbVByb2dyYW0udHJhbnNmZXIoe1xuICAgICAgICBmcm9tUHVia2V5OiBuZXcgUHVibGljS2V5KGF1dGhBY2NvdW50LnB1YiksXG4gICAgICAgIHRvUHVia2V5OiBuZXcgUHVibGljS2V5KG90aGVyQWNjb3VudC5wdWIpLFxuICAgICAgICBsYW1wb3J0czogMTAwMDAwMCxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldEN1c3RvbUluc3RydWN0aW9uQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLm5vbmNlKHJlY2VudEJsb2NrSGFzaCk7XG4gICAgICB0eEJ1aWxkZXIuYWRkQ3VzdG9tSW5zdHJ1Y3Rpb24oY29udmVydEluc3RydWN0aW9uVG9QYXJhbXModHJhbnNmZXJJbnN0cnVjdGlvbikpO1xuXG4gICAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIHNlbmRlcicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3doZW4gYnVpbGRpbmcgd2l0aG91dCBub25jZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRyYW5zZmVySW5zdHJ1Y3Rpb24gPSBTeXN0ZW1Qcm9ncmFtLnRyYW5zZmVyKHtcbiAgICAgICAgZnJvbVB1YmtleTogbmV3IFB1YmxpY0tleShhdXRoQWNjb3VudC5wdWIpLFxuICAgICAgICB0b1B1YmtleTogbmV3IFB1YmxpY0tleShvdGhlckFjY291bnQucHViKSxcbiAgICAgICAgbGFtcG9ydHM6IDEwMDAwMDAsXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRDdXN0b21JbnN0cnVjdGlvbkJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zZW5kZXIoYXV0aEFjY291bnQucHViKTtcbiAgICAgIHR4QnVpbGRlci5hZGRDdXN0b21JbnN0cnVjdGlvbihjb252ZXJ0SW5zdHJ1Y3Rpb25Ub1BhcmFtcyh0cmFuc2Zlckluc3RydWN0aW9uKSk7XG5cbiAgICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3Npbmcgbm9uY2UgYmxvY2toYXNoJyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdTb2xWZXJzaW9uZWRJbnN0cnVjdGlvbiBTdXBwb3J0JywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgYWNjZXB0IGFuZCB2YWxpZGF0ZSBTb2xWZXJzaW9uZWRJbnN0cnVjdGlvbiBmb3JtYXQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBjb21waWxlZEluc3RydWN0aW9uOiBTb2xWZXJzaW9uZWRJbnN0cnVjdGlvbiA9IHtcbiAgICAgICAgcHJvZ3JhbUlkSW5kZXg6IDEsXG4gICAgICAgIGFjY291bnRLZXlJbmRleGVzOiBbMCwgMiwgM10sXG4gICAgICAgIGRhdGE6ICczQnhzNDNaTWpTUlFMczZvJywgLy8gYmFzZTU4IGVuY29kZWQgaW5zdHJ1Y3Rpb24gZGF0YVxuICAgICAgfTtcblxuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY3VzdG9tSW5zdHJ1Y3Rpb25CdWlsZGVyKCk7XG4gICAgICBzaG91bGQoKCkgPT4gdHhCdWlsZGVyLmFkZEN1c3RvbUluc3RydWN0aW9uKGNvbXBpbGVkSW5zdHJ1Y3Rpb24pKS5ub3QudGhyb3dFcnJvcigpO1xuXG4gICAgICB0eEJ1aWxkZXIuZ2V0SW5zdHJ1Y3Rpb25zKCkuc2hvdWxkLmhhdmUubGVuZ3RoKDEpO1xuICAgICAgY29uc3QgYWRkZWRJbnN0cnVjdGlvbiA9IHR4QnVpbGRlci5nZXRJbnN0cnVjdGlvbnMoKVswXTtcbiAgICAgIGFkZGVkSW5zdHJ1Y3Rpb24ucGFyYW1zLnNob3VsZC5kZWVwRXF1YWwoY29tcGlsZWRJbnN0cnVjdGlvbik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIHZlcnNpb25lZCBpbnN0cnVjdGlvbiBmb3JtYXQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjdXN0b21JbnN0cnVjdGlvbkJ1aWxkZXIoKTtcblxuICAgICAgLy8gSW52YWxpZCBwcm9ncmFtSWRJbmRleFxuICAgICAgc2hvdWxkKCgpID0+XG4gICAgICAgIHR4QnVpbGRlci5hZGRDdXN0b21JbnN0cnVjdGlvbih7XG4gICAgICAgICAgcHJvZ3JhbUlkSW5kZXg6IC0xLFxuICAgICAgICAgIGFjY291bnRLZXlJbmRleGVzOiBbMF0sXG4gICAgICAgICAgZGF0YTogJzEnLCAvLyBiYXNlNTggZm9yIDB4MDBcbiAgICAgICAgfSBhcyBTb2xWZXJzaW9uZWRJbnN0cnVjdGlvbilcbiAgICAgICkudGhyb3dFcnJvcignVmVyc2lvbmVkIGluc3RydWN0aW9uIG11c3QgaGF2ZSBhIHZhbGlkIHByb2dyYW1JZEluZGV4IG51bWJlcicpO1xuXG4gICAgICAvLyBJbnZhbGlkIGFjY291bnRLZXlJbmRleGVzXG4gICAgICBzaG91bGQoKCkgPT5cbiAgICAgICAgdHhCdWlsZGVyLmFkZEN1c3RvbUluc3RydWN0aW9uKHtcbiAgICAgICAgICBwcm9ncmFtSWRJbmRleDogMCxcbiAgICAgICAgICBhY2NvdW50S2V5SW5kZXhlczogWy0xXSxcbiAgICAgICAgICBkYXRhOiAnMScsIC8vIGJhc2U1OCBmb3IgMHgwMFxuICAgICAgICB9IGFzIFNvbFZlcnNpb25lZEluc3RydWN0aW9uKVxuICAgICAgKS50aHJvd0Vycm9yKCdFYWNoIGFjY291bnRLZXlJbmRleCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlcicpO1xuXG4gICAgICAvLyBNaXNzaW5nIGRhdGFcbiAgICAgIHNob3VsZCgoKSA9PlxuICAgICAgICB0eEJ1aWxkZXIuYWRkQ3VzdG9tSW5zdHJ1Y3Rpb24oe1xuICAgICAgICAgIHByb2dyYW1JZEluZGV4OiAwLFxuICAgICAgICAgIGFjY291bnRLZXlJbmRleGVzOiBbMF0sXG4gICAgICAgIH0gYXMgU29sVmVyc2lvbmVkSW5zdHJ1Y3Rpb24pXG4gICAgICApLnRocm93RXJyb3IoJ1ZlcnNpb25lZCBpbnN0cnVjdGlvbiBtdXN0IGhhdmUgdmFsaWQgZGF0YSBzdHJpbmcnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIG1peGVkIFNvbEluc3RydWN0aW9uIGFuZCBTb2xWZXJzaW9uZWRJbnN0cnVjdGlvbicsICgpID0+IHtcbiAgICAgIGNvbnN0IHRyYWRpdGlvbmFsSW5zdHJ1Y3Rpb24gPSBjb252ZXJ0SW5zdHJ1Y3Rpb25Ub1BhcmFtcyhcbiAgICAgICAgU3lzdGVtUHJvZ3JhbS50cmFuc2Zlcih7XG4gICAgICAgICAgZnJvbVB1YmtleTogbmV3IFB1YmxpY0tleShhdXRoQWNjb3VudC5wdWIpLFxuICAgICAgICAgIHRvUHVia2V5OiBuZXcgUHVibGljS2V5KG90aGVyQWNjb3VudC5wdWIpLFxuICAgICAgICAgIGxhbXBvcnRzOiAxMDAwMDAwLFxuICAgICAgICB9KVxuICAgICAgKTtcblxuICAgICAgY29uc3QgY29tcGlsZWRJbnN0cnVjdGlvbjogU29sVmVyc2lvbmVkSW5zdHJ1Y3Rpb24gPSB7XG4gICAgICAgIHByb2dyYW1JZEluZGV4OiAxLFxuICAgICAgICBhY2NvdW50S2V5SW5kZXhlczogWzAsIDJdLFxuICAgICAgICBkYXRhOiAnNEhTbzVZVkJyZ0NoVFpYNScsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjdXN0b21JbnN0cnVjdGlvbkJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5hZGRDdXN0b21JbnN0cnVjdGlvbih0cmFkaXRpb25hbEluc3RydWN0aW9uKTtcbiAgICAgIHR4QnVpbGRlci5hZGRDdXN0b21JbnN0cnVjdGlvbihjb21waWxlZEluc3RydWN0aW9uKTtcblxuICAgICAgdHhCdWlsZGVyLmdldEluc3RydWN0aW9ucygpLnNob3VsZC5oYXZlLmxlbmd0aCgyKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2Zyb21WZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEnLCAoKSA9PiB7XG4gICAgZnVuY3Rpb24gZXh0cmFjdFZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YShiYXNlNjRCeXRlczogc3RyaW5nKSB7XG4gICAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbShiYXNlNjRCeXRlcywgJ2Jhc2U2NCcpO1xuICAgICAgY29uc3QgdmVyc2lvbmVkVHggPSBWZXJzaW9uZWRUcmFuc2FjdGlvbi5kZXNlcmlhbGl6ZShidWZmZXIpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB2ZXJzaW9uZWRJbnN0cnVjdGlvbnM6IHZlcnNpb25lZFR4Lm1lc3NhZ2UuY29tcGlsZWRJbnN0cnVjdGlvbnMubWFwKChjaSkgPT4gKHtcbiAgICAgICAgICBwcm9ncmFtSWRJbmRleDogY2kucHJvZ3JhbUlkSW5kZXgsXG4gICAgICAgICAgYWNjb3VudEtleUluZGV4ZXM6IGNpLmFjY291bnRLZXlJbmRleGVzLFxuICAgICAgICAgIGRhdGE6IGJhc2U1OC5lbmNvZGUoY2kuZGF0YSksXG4gICAgICAgIH0pKSxcbiAgICAgICAgYWRkcmVzc0xvb2t1cFRhYmxlczogdmVyc2lvbmVkVHgubWVzc2FnZS5hZGRyZXNzVGFibGVMb29rdXBzLm1hcCgoYWx0KSA9PiAoe1xuICAgICAgICAgIGFjY291bnRLZXk6IGFsdC5hY2NvdW50S2V5LnRvU3RyaW5nKCksXG4gICAgICAgICAgd3JpdGFibGVJbmRleGVzOiBhbHQud3JpdGFibGVJbmRleGVzLFxuICAgICAgICAgIHJlYWRvbmx5SW5kZXhlczogYWx0LnJlYWRvbmx5SW5kZXhlcyxcbiAgICAgICAgfSkpLFxuICAgICAgICBzdGF0aWNBY2NvdW50S2V5czogdmVyc2lvbmVkVHgubWVzc2FnZS5zdGF0aWNBY2NvdW50S2V5cy5tYXAoKGtleSkgPT4ga2V5LnRvU3RyaW5nKCkpLFxuICAgICAgICBtZXNzYWdlSGVhZGVyOiB7XG4gICAgICAgICAgbnVtUmVxdWlyZWRTaWduYXR1cmVzOiB2ZXJzaW9uZWRUeC5tZXNzYWdlLmhlYWRlci5udW1SZXF1aXJlZFNpZ25hdHVyZXMsXG4gICAgICAgICAgbnVtUmVhZG9ubHlTaWduZWRBY2NvdW50czogdmVyc2lvbmVkVHgubWVzc2FnZS5oZWFkZXIubnVtUmVhZG9ubHlTaWduZWRBY2NvdW50cyxcbiAgICAgICAgICBudW1SZWFkb25seVVuc2lnbmVkQWNjb3VudHM6IHZlcnNpb25lZFR4Lm1lc3NhZ2UuaGVhZGVyLm51bVJlYWRvbmx5VW5zaWduZWRBY2NvdW50cyxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaXQoJ3Nob3VsZCBwcm9jZXNzIFZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YSBhbmQgZXh0cmFjdCBpbnN0cnVjdGlvbnMnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjdXN0b21JbnN0cnVjdGlvbkJ1aWxkZXIoKTtcbiAgICAgIGNvbnN0IHZlcnNpb25lZFR4RGF0YSA9IGV4dHJhY3RWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEodGVzdERhdGEuSlVQSVRFUl9WRVJTSU9ORURfVFhfQllURVMpO1xuXG4gICAgICAvLyBTaG91bGQgcGFyc2Ugd2l0aG91dCB0aHJvd2luZyBlcnJvcnNcbiAgICAgIHNob3VsZCgoKSA9PiB0eEJ1aWxkZXIuZnJvbVZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YSh2ZXJzaW9uZWRUeERhdGEpKS5ub3QudGhyb3dFcnJvcigpO1xuXG4gICAgICAvLyBTaG91bGQgaGF2ZSBleHRyYWN0ZWQgaW5zdHJ1Y3Rpb25zXG4gICAgICBjb25zdCBpbnN0cnVjdGlvbnMgPSB0eEJ1aWxkZXIuZ2V0SW5zdHJ1Y3Rpb25zKCk7XG4gICAgICBpbnN0cnVjdGlvbnMubGVuZ3RoLnNob3VsZC5iZS5ncmVhdGVyVGhhbigwKTtcblxuICAgICAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiBpbnN0cnVjdGlvbnMpIHtcbiAgICAgICAgaW5zdHJ1Y3Rpb24udHlwZS5zaG91bGQuZXF1YWwoJ1ZlcnNpb25lZEN1c3RvbUluc3RydWN0aW9uJyk7XG4gICAgICAgIGluc3RydWN0aW9uLnBhcmFtcy5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgncHJvZ3JhbUlkSW5kZXgnKTtcbiAgICAgICAgaW5zdHJ1Y3Rpb24ucGFyYW1zLnNob3VsZC5oYXZlLnByb3BlcnR5KCdhY2NvdW50S2V5SW5kZXhlcycpO1xuICAgICAgICBpbnN0cnVjdGlvbi5wYXJhbXMuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2RhdGEnKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc3RvcmUgVmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhIGluIHVuZGVybHlpbmcgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjdXN0b21JbnN0cnVjdGlvbkJ1aWxkZXIoKTtcbiAgICAgIGNvbnN0IHZlcnNpb25lZFR4RGF0YSA9IGV4dHJhY3RWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEodGVzdERhdGEuSlVQSVRFUl9WRVJTSU9ORURfVFhfQllURVMpO1xuXG4gICAgICB0eEJ1aWxkZXIuZnJvbVZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YSh2ZXJzaW9uZWRUeERhdGEpO1xuXG4gICAgICBjb25zdCB0eCA9IHR4QnVpbGRlclsnX3RyYW5zYWN0aW9uJ107XG4gICAgICBjb25zdCBzdG9yZWREYXRhID0gdHguZ2V0VmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhKCk7XG4gICAgICBzaG91bGQuZXhpc3Qoc3RvcmVkRGF0YSk7XG4gICAgICBzdG9yZWREYXRhIS52ZXJzaW9uZWRJbnN0cnVjdGlvbnMubGVuZ3RoLnNob3VsZC5lcXVhbCh2ZXJzaW9uZWRUeERhdGEudmVyc2lvbmVkSW5zdHJ1Y3Rpb25zLmxlbmd0aCk7XG4gICAgICBzdG9yZWREYXRhIS5hZGRyZXNzTG9va3VwVGFibGVzLmxlbmd0aC5zaG91bGQuZXF1YWwodmVyc2lvbmVkVHhEYXRhLmFkZHJlc3NMb29rdXBUYWJsZXMubGVuZ3RoKTtcbiAgICAgIHN0b3JlZERhdGEhLnN0YXRpY0FjY291bnRLZXlzLmxlbmd0aC5zaG91bGQuZXF1YWwodmVyc2lvbmVkVHhEYXRhLnN0YXRpY0FjY291bnRLZXlzLmxlbmd0aCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGlucHV0IGRhdGEnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjdXN0b21JbnN0cnVjdGlvbkJ1aWxkZXIoKTtcblxuICAgICAgLy8gSW52YWxpZDogbnVsbC91bmRlZmluZWRcbiAgICAgIHNob3VsZCgoKSA9PiB0eEJ1aWxkZXIuZnJvbVZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YShudWxsIGFzIGFueSkpLnRocm93RXJyb3IoL211c3QgYmUgYSB2YWxpZCBvYmplY3QvKTtcbiAgICAgIHNob3VsZCgoKSA9PiB0eEJ1aWxkZXIuZnJvbVZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YSh1bmRlZmluZWQgYXMgYW55KSkudGhyb3dFcnJvcigvbXVzdCBiZSBhIHZhbGlkIG9iamVjdC8pO1xuXG4gICAgICAvLyBJbnZhbGlkOiBlbXB0eSBpbnN0cnVjdGlvbnNcbiAgICAgIHNob3VsZCgoKSA9PlxuICAgICAgICB0eEJ1aWxkZXIuZnJvbVZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YSh7XG4gICAgICAgICAgdmVyc2lvbmVkSW5zdHJ1Y3Rpb25zOiBbXSxcbiAgICAgICAgICBhZGRyZXNzTG9va3VwVGFibGVzOiBbXSxcbiAgICAgICAgICBzdGF0aWNBY2NvdW50S2V5czogWyd0ZXN0J10sXG4gICAgICAgICAgbWVzc2FnZUhlYWRlcjogeyBudW1SZXF1aXJlZFNpZ25hdHVyZXM6IDEsIG51bVJlYWRvbmx5U2lnbmVkQWNjb3VudHM6IDAsIG51bVJlYWRvbmx5VW5zaWduZWRBY2NvdW50czogMCB9LFxuICAgICAgICB9KVxuICAgICAgKS50aHJvd0Vycm9yKC9ub24tZW1wdHkgYXJyYXkvKTtcblxuICAgICAgLy8gSW52YWxpZDogbWlzc2luZyBhZGRyZXNzTG9va3VwVGFibGVzXG4gICAgICBzaG91bGQoKCkgPT5cbiAgICAgICAgdHhCdWlsZGVyLmZyb21WZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEoe1xuICAgICAgICAgIHZlcnNpb25lZEluc3RydWN0aW9uczogW3sgcHJvZ3JhbUlkSW5kZXg6IDAsIGFjY291bnRLZXlJbmRleGVzOiBbMF0sIGRhdGE6ICcxJyB9XSwgLy8gYmFzZTU4IGZvciAweDAwXG4gICAgICAgICAgc3RhdGljQWNjb3VudEtleXM6IFsndGVzdCddLFxuICAgICAgICB9IGFzIGFueSlcbiAgICAgICkudGhyb3dFcnJvcigvbXVzdCBiZSBhbiBhcnJheS8pO1xuXG4gICAgICAvLyBJbnZhbGlkOiBlbXB0eSBzdGF0aWNBY2NvdW50S2V5c1xuICAgICAgc2hvdWxkKCgpID0+XG4gICAgICAgIHR4QnVpbGRlci5mcm9tVmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhKHtcbiAgICAgICAgICB2ZXJzaW9uZWRJbnN0cnVjdGlvbnM6IFt7IHByb2dyYW1JZEluZGV4OiAwLCBhY2NvdW50S2V5SW5kZXhlczogWzBdLCBkYXRhOiAnMScgfV0sIC8vIGJhc2U1OCBmb3IgMHgwMFxuICAgICAgICAgIGFkZHJlc3NMb29rdXBUYWJsZXM6IFtdLFxuICAgICAgICAgIHN0YXRpY0FjY291bnRLZXlzOiBbXSxcbiAgICAgICAgICBtZXNzYWdlSGVhZGVyOiB7IG51bVJlcXVpcmVkU2lnbmF0dXJlczogMSwgbnVtUmVhZG9ubHlTaWduZWRBY2NvdW50czogMCwgbnVtUmVhZG9ubHlVbnNpZ25lZEFjY291bnRzOiAwIH0sXG4gICAgICAgIH0pXG4gICAgICApLnRocm93RXJyb3IoL25vbi1lbXB0eSBhcnJheS8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB3b3JrIHdpdGggdGhlIGNvbXBsZXRlIHRyYW5zYWN0aW9uIGJ1aWxkaW5nIGZsb3cnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjdXN0b21JbnN0cnVjdGlvbkJ1aWxkZXIoKTtcbiAgICAgIGNvbnN0IHZlcnNpb25lZFR4RGF0YSA9IGV4dHJhY3RWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEodGVzdERhdGEuSlVQSVRFUl9WRVJTSU9ORURfVFhfQllURVMpO1xuXG4gICAgICAvLyBQcm9jZXNzIHRoZSBWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGFcbiAgICAgIHR4QnVpbGRlci5mcm9tVmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhKHZlcnNpb25lZFR4RGF0YSk7XG5cbiAgICAgIHR4QnVpbGRlci5zZW5kZXIodmVyc2lvbmVkVHhEYXRhLnN0YXRpY0FjY291bnRLZXlzWzBdKTsgLy8gRmVlIHBheWVyXG4gICAgICB0eEJ1aWxkZXIubm9uY2UodGVzdERhdGEuYmxvY2tIYXNoZXMudmFsaWRCbG9ja0hhc2hlc1swXSk7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIC8vIFZlcmlmeSB0cmFuc2FjdGlvbiBwcm9wZXJ0aWVzXG4gICAgICB0eC5zaG91bGQuYmUub2soKTtcbiAgICAgIHR4LnR5cGUuc2hvdWxkLmVxdWFsKDMxKTsgLy8gVHJhbnNhY3Rpb25UeXBlLkN1c3RvbVR4IGVudW0gdmFsdWVcblxuICAgICAgLy8gVmVyaWZ5IHNpZ25hYmxlIHBheWxvYWRcbiAgICAgIGNvbnN0IHBheWxvYWQgPSB0eC5zaWduYWJsZVBheWxvYWQ7XG4gICAgICBwYXlsb2FkLnNob3VsZC5iZS5pbnN0YW5jZU9mKEJ1ZmZlcik7XG4gICAgICBwYXlsb2FkLmxlbmd0aC5zaG91bGQuYmUuZ3JlYXRlclRoYW4oMCk7XG5cbiAgICAgIC8vIFZlcmlmeSBwYXlsb2FkIGlzIGRldGVybWluaXN0aWMgLSByZWJ1aWxkaW5nIHdpdGggc2FtZSBwYXJhbXMgcHJvZHVjZXMgc2FtZSBwYXlsb2FkXG4gICAgICBjb25zdCB0eEJ1aWxkZXIyID0gY3VzdG9tSW5zdHJ1Y3Rpb25CdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIyLmZyb21WZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEodmVyc2lvbmVkVHhEYXRhKTtcbiAgICAgIHR4QnVpbGRlcjIuc2VuZGVyKHZlcnNpb25lZFR4RGF0YS5zdGF0aWNBY2NvdW50S2V5c1swXSk7XG4gICAgICB0eEJ1aWxkZXIyLm5vbmNlKHRlc3REYXRhLmJsb2NrSGFzaGVzLnZhbGlkQmxvY2tIYXNoZXNbMF0pO1xuICAgICAgY29uc3QgdHgyID0gYXdhaXQgdHhCdWlsZGVyMi5idWlsZCgpO1xuICAgICAgc2hvdWxkLmVxdWFsKHR4Mi5zaWduYWJsZVBheWxvYWQudG9TdHJpbmcoJ2hleCcpLCBwYXlsb2FkLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGV4dHJhY3QgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGluc3RydWN0aW9ucyBmcm9tIEp1cGl0ZXIgdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjdXN0b21JbnN0cnVjdGlvbkJ1aWxkZXIoKTtcbiAgICAgIGNvbnN0IHZlcnNpb25lZFR4RGF0YSA9IGV4dHJhY3RWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEodGVzdERhdGEuSlVQSVRFUl9WRVJTSU9ORURfVFhfQllURVMpO1xuXG4gICAgICB0eEJ1aWxkZXIuZnJvbVZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YSh2ZXJzaW9uZWRUeERhdGEpO1xuXG4gICAgICBjb25zdCBpbnN0cnVjdGlvbnMgPSB0eEJ1aWxkZXIuZ2V0SW5zdHJ1Y3Rpb25zKCk7XG5cbiAgICAgIC8vIFZlcmlmeSB3ZSBleHRyYWN0ZWQgaW5zdHJ1Y3Rpb25zXG4gICAgICBpbnN0cnVjdGlvbnMubGVuZ3RoLnNob3VsZC5iZS5ncmVhdGVyVGhhbigwKTtcbiAgICAgIGluc3RydWN0aW9ucy5sZW5ndGguc2hvdWxkLmVxdWFsKHZlcnNpb25lZFR4RGF0YS52ZXJzaW9uZWRJbnN0cnVjdGlvbnMubGVuZ3RoKTtcblxuICAgICAgLy8gVmVyaWZ5IGVhY2ggaW5zdHJ1Y3Rpb24gaGFzIHZhbGlkIGNvbXBpbGVkIGZvcm1hdFxuICAgICAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiBpbnN0cnVjdGlvbnMpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gaW5zdHJ1Y3Rpb24ucGFyYW1zIGFzIFNvbFZlcnNpb25lZEluc3RydWN0aW9uO1xuICAgICAgICAodHlwZW9mIHBhcmFtcy5wcm9ncmFtSWRJbmRleCkuc2hvdWxkLmVxdWFsKCdudW1iZXInKTtcbiAgICAgICAgcGFyYW1zLnByb2dyYW1JZEluZGV4LnNob3VsZC5iZS5ncmVhdGVyVGhhbk9yRXF1YWwoMCk7XG4gICAgICAgIEFycmF5LmlzQXJyYXkocGFyYW1zLmFjY291bnRLZXlJbmRleGVzKS5zaG91bGQuZXF1YWwodHJ1ZSk7XG4gICAgICAgICh0eXBlb2YgcGFyYW1zLmRhdGEpLnNob3VsZC5lcXVhbCgnc3RyaW5nJyk7XG4gICAgICAgIC8vIERhdGEgc2hvdWxkIGJlIHZhbGlkIGJhc2U1OCBzdHJpbmcgKG5vbi1lbXB0eSlcbiAgICAgICAgcGFyYW1zLmRhdGEubGVuZ3RoLnNob3VsZC5iZS5ncmVhdGVyVGhhbigwKTtcbiAgICAgICAgLy8gVmVyaWZ5IGl0IGNhbiBiZSBkZWNvZGVkXG4gICAgICAgIHNob3VsZC5kb2VzTm90VGhyb3coKCkgPT4gYmFzZTU4LmRlY29kZShwYXJhbXMuZGF0YSkpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjbGVhciBpbnN0cnVjdGlvbnMgcHJvcGVybHkgYWZ0ZXIgdXNpbmcgZnJvbVZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YScsICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGN1c3RvbUluc3RydWN0aW9uQnVpbGRlcigpO1xuICAgICAgY29uc3QgdmVyc2lvbmVkVHhEYXRhID0gZXh0cmFjdFZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YSh0ZXN0RGF0YS5KVVBJVEVSX1ZFUlNJT05FRF9UWF9CWVRFUyk7XG5cbiAgICAgIHR4QnVpbGRlci5mcm9tVmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhKHZlcnNpb25lZFR4RGF0YSk7XG4gICAgICB0eEJ1aWxkZXIuZ2V0SW5zdHJ1Y3Rpb25zKCkubGVuZ3RoLnNob3VsZC5iZS5ncmVhdGVyVGhhbigwKTtcblxuICAgICAgLy8gQ2xlYXIgc2hvdWxkIHdvcmtcbiAgICAgIHR4QnVpbGRlci5jbGVhckluc3RydWN0aW9ucygpO1xuICAgICAgdHhCdWlsZGVyLmdldEluc3RydWN0aW9ucygpLnNob3VsZC5oYXZlLmxlbmd0aCgwKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZXh0cmFjdCBmZWUgcGF5ZXIgZnJvbSBzdGF0aWNBY2NvdW50S2V5cycsICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0Q3VzdG9tSW5zdHJ1Y3Rpb25CdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIubm9uY2UocmVjZW50QmxvY2tIYXNoKTtcblxuICAgICAgY29uc3QgdmVyc2lvbmVkVHhEYXRhID0gZXh0cmFjdFZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YSh0ZXN0RGF0YS5KVVBJVEVSX1ZFUlNJT05FRF9UWF9CWVRFUyk7XG5cbiAgICAgIHR4QnVpbGRlci5mcm9tVmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhKHZlcnNpb25lZFR4RGF0YSk7XG5cbiAgICAgIGNvbnN0IHNlbmRlciA9IHR4QnVpbGRlclsnX3NlbmRlciddO1xuICAgICAgc2hvdWxkLmV4aXN0KHNlbmRlcik7XG4gICAgICBzZW5kZXIuc2hvdWxkLmVxdWFsKHZlcnNpb25lZFR4RGF0YS5zdGF0aWNBY2NvdW50S2V5c1swXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIG5vdCBvdmVycmlkZSBleGlzdGluZyBzZW5kZXInLCAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjdXN0b21JbnN0cnVjdGlvbkJ1aWxkZXIoKTtcbiAgICAgIGNvbnN0IHZlcnNpb25lZFR4RGF0YSA9IGV4dHJhY3RWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEodGVzdERhdGEuSlVQSVRFUl9WRVJTSU9ORURfVFhfQllURVMpO1xuXG4gICAgICBjb25zdCBvcmlnaW5hbFNlbmRlciA9IHR4QnVpbGRlclsnX3NlbmRlciddO1xuICAgICAgdHhCdWlsZGVyLmZyb21WZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEodmVyc2lvbmVkVHhEYXRhKTtcblxuICAgICAgY29uc3Qgc2VuZGVyID0gdHhCdWlsZGVyWydfc2VuZGVyJ107XG4gICAgICBzZW5kZXIuc2hvdWxkLmVxdWFsKG9yaWdpbmFsU2VuZGVyKTtcbiAgICAgIHNlbmRlci5zaG91bGQuZXF1YWwoYXV0aEFjY291bnQucHViKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"stakingActivateBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/stakingActivateBuilder.ts"],"names":[],"mappings":""}