@bitgo-beta/sdk-coin-sol 7.6.4-beta.44 → 7.6.4-beta.441

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 (400) 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 +51 -0
  10. package/dist/cjs/src/lib/closeAtaBuilder.d.ts.map +1 -0
  11. package/dist/cjs/src/lib/closeAtaBuilder.js +147 -0
  12. package/dist/{src → cjs/src}/lib/constants.d.ts +24 -0
  13. package/dist/cjs/src/lib/constants.d.ts.map +1 -0
  14. package/dist/cjs/src/lib/constants.js +196 -0
  15. package/dist/cjs/src/lib/customInstructionBuilder.d.ts.map +1 -0
  16. package/dist/cjs/src/lib/customInstructionBuilder.js +289 -0
  17. package/dist/cjs/src/lib/explainTransactionWasm.d.ts +21 -0
  18. package/dist/cjs/src/lib/explainTransactionWasm.d.ts.map +1 -0
  19. package/dist/cjs/src/lib/explainTransactionWasm.js +264 -0
  20. package/dist/{src → cjs/src}/lib/iface.d.ts +20 -2
  21. package/dist/cjs/src/lib/iface.d.ts.map +1 -0
  22. package/dist/cjs/src/lib/iface.js +7 -0
  23. package/dist/{src → cjs/src}/lib/index.d.ts +1 -0
  24. package/dist/cjs/src/lib/index.d.ts.map +1 -0
  25. package/dist/{src → cjs/src}/lib/index.js +4 -2
  26. package/dist/{src → cjs/src}/lib/instructionParamsFactory.d.ts +1 -0
  27. package/dist/cjs/src/lib/instructionParamsFactory.d.ts.map +1 -0
  28. package/dist/cjs/src/lib/instructionParamsFactory.js +1059 -0
  29. package/dist/cjs/src/lib/jitoStakePoolOperations.d.ts.map +1 -0
  30. package/dist/cjs/src/lib/jitoStakePoolOperations.js +200 -0
  31. package/dist/cjs/src/lib/keyPair.d.ts.map +1 -0
  32. package/dist/cjs/src/lib/keyPair.js +63 -0
  33. package/dist/cjs/src/lib/messages/index.d.ts.map +1 -0
  34. package/dist/{src → cjs/src}/lib/messages/index.js +1 -1
  35. package/dist/cjs/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
  36. package/dist/cjs/src/lib/messages/messageBuilderFactory.js +19 -0
  37. package/dist/cjs/src/lib/recoverNestedAtaBuilder.d.ts +25 -0
  38. package/dist/cjs/src/lib/recoverNestedAtaBuilder.d.ts.map +1 -0
  39. package/dist/cjs/src/lib/recoverNestedAtaBuilder.js +90 -0
  40. package/dist/cjs/src/lib/solInstructionFactory.d.ts.map +1 -0
  41. package/dist/cjs/src/lib/solInstructionFactory.js +595 -0
  42. package/dist/cjs/src/lib/stakingActivateBuilder.d.ts.map +1 -0
  43. package/dist/cjs/src/lib/stakingActivateBuilder.js +120 -0
  44. package/dist/cjs/src/lib/stakingAuthorizeBuilder.d.ts.map +1 -0
  45. package/dist/cjs/src/lib/stakingAuthorizeBuilder.js +89 -0
  46. package/dist/cjs/src/lib/stakingDeactivateBuilder.d.ts.map +1 -0
  47. package/dist/cjs/src/lib/stakingDeactivateBuilder.js +208 -0
  48. package/dist/cjs/src/lib/stakingDelegateBuilder.d.ts.map +1 -0
  49. package/dist/cjs/src/lib/stakingDelegateBuilder.js +120 -0
  50. package/dist/cjs/src/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
  51. package/dist/cjs/src/lib/stakingRawMsgAuthorizeBuilder.js +110 -0
  52. package/dist/cjs/src/lib/stakingWithdrawBuilder.d.ts.map +1 -0
  53. package/dist/cjs/src/lib/stakingWithdrawBuilder.js +78 -0
  54. package/dist/cjs/src/lib/token2022Config.d.ts.map +1 -0
  55. package/dist/cjs/src/lib/token2022Config.js +27 -0
  56. package/dist/cjs/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  57. package/dist/cjs/src/lib/tokenTransferBuilder.js +188 -0
  58. package/dist/cjs/src/lib/transaction.d.ts.map +1 -0
  59. package/dist/cjs/src/lib/transaction.js +612 -0
  60. package/dist/cjs/src/lib/transactionBuilder.d.ts.map +1 -0
  61. package/dist/cjs/src/lib/transactionBuilder.js +380 -0
  62. package/dist/{src → cjs/src}/lib/transactionBuilderFactory.d.ts +5 -0
  63. package/dist/cjs/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  64. package/dist/cjs/src/lib/transactionBuilderFactory.js +209 -0
  65. package/dist/cjs/src/lib/transferBuilder.d.ts.map +1 -0
  66. package/dist/cjs/src/lib/transferBuilder.js +70 -0
  67. package/dist/cjs/src/lib/transferBuilderV2.d.ts.map +1 -0
  68. package/dist/cjs/src/lib/transferBuilderV2.js +210 -0
  69. package/dist/cjs/src/lib/utils.d.ts.map +1 -0
  70. package/dist/cjs/src/lib/utils.js +604 -0
  71. package/dist/cjs/src/lib/walletInitializationBuilder.d.ts.map +1 -0
  72. package/dist/cjs/src/lib/walletInitializationBuilder.js +71 -0
  73. package/dist/cjs/src/register.d.ts.map +1 -0
  74. package/dist/cjs/src/register.js +15 -0
  75. package/dist/{src → cjs/src}/sol.d.ts +53 -0
  76. package/dist/cjs/src/sol.d.ts.map +1 -0
  77. package/dist/cjs/src/sol.js +1464 -0
  78. package/dist/{src → cjs/src}/solToken.d.ts +5 -0
  79. package/dist/cjs/src/solToken.d.ts.map +1 -0
  80. package/dist/cjs/src/solToken.js +76 -0
  81. package/dist/cjs/src/tsol.d.ts.map +1 -0
  82. package/dist/cjs/src/tsol.js +24 -0
  83. package/dist/{test → cjs/test}/fixtures/sol.d.ts.map +1 -1
  84. package/dist/cjs/test/fixtures/sol.js +1433 -0
  85. package/dist/{test → cjs/test}/resources/sol.d.ts +27 -27
  86. package/dist/cjs/test/resources/sol.d.ts.map +1 -0
  87. package/dist/cjs/test/resources/sol.js +320 -0
  88. package/dist/cjs/test/unit/explainTransactionWasm.d.ts +5 -0
  89. package/dist/cjs/test/unit/explainTransactionWasm.d.ts.map +1 -0
  90. package/dist/cjs/test/unit/explainTransactionWasm.js +26 -0
  91. package/dist/cjs/test/unit/fixtures/solBackupKey.d.ts.map +1 -0
  92. package/dist/cjs/test/unit/fixtures/solBackupKey.js +8 -0
  93. package/dist/cjs/test/unit/getBuilderFactory.d.ts.map +1 -0
  94. package/dist/cjs/test/unit/getBuilderFactory.js +10 -0
  95. package/dist/cjs/test/unit/instructionParamsFactory.d.ts.map +1 -0
  96. package/dist/cjs/test/unit/instructionParamsFactory.js +412 -0
  97. package/dist/cjs/test/unit/instructionParamsFactory.staking.d.ts.map +1 -0
  98. package/dist/cjs/test/unit/instructionParamsFactory.staking.js +1059 -0
  99. package/dist/cjs/test/unit/jitoWasmVerification.d.ts +2 -0
  100. package/dist/cjs/test/unit/jitoWasmVerification.d.ts.map +1 -0
  101. package/dist/cjs/test/unit/jitoWasmVerification.js +78 -0
  102. package/dist/{test → cjs/test}/unit/keyPair.d.ts.map +1 -1
  103. package/dist/cjs/test/unit/keyPair.js +177 -0
  104. package/dist/cjs/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
  105. package/dist/cjs/test/unit/messages/messageBuilderFactory.js +118 -0
  106. package/dist/cjs/test/unit/messages/simpleMessageBuilder.d.ts.map +1 -0
  107. package/dist/cjs/test/unit/messages/simpleMessageBuilder.js +194 -0
  108. package/dist/{test → cjs/test}/unit/sol.d.ts.map +1 -1
  109. package/dist/cjs/test/unit/sol.js +3504 -0
  110. package/dist/cjs/test/unit/solInstructionFactory.d.ts.map +1 -0
  111. package/dist/cjs/test/unit/solInstructionFactory.js +454 -0
  112. package/dist/cjs/test/unit/solToken.d.ts.map +1 -0
  113. package/dist/cjs/test/unit/solToken.js +37 -0
  114. package/dist/cjs/test/unit/transaction.d.ts.map +1 -0
  115. package/dist/cjs/test/unit/transaction.js +1108 -0
  116. package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +1 -0
  117. package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.js +202 -0
  118. package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +1 -0
  119. package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.js +471 -0
  120. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.d.ts +2 -0
  121. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.d.ts.map +1 -0
  122. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.js +333 -0
  123. package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +1 -0
  124. package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.js +413 -0
  125. package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +1 -0
  126. package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.js +430 -0
  127. package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +1 -0
  128. package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +157 -0
  129. package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +1 -0
  130. package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.js +384 -0
  131. package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +1 -0
  132. package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.js +224 -0
  133. package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
  134. package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +259 -0
  135. package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  136. package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.js +787 -0
  137. package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  138. package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.js +495 -0
  139. package/dist/cjs/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  140. package/dist/cjs/test/unit/transactionBuilder/transferBuilder.js +286 -0
  141. package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +1 -0
  142. package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.js +862 -0
  143. package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +1 -0
  144. package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.js +259 -0
  145. package/dist/{test → cjs/test}/unit/utils.d.ts.map +1 -1
  146. package/dist/cjs/test/unit/utils.js +517 -0
  147. package/dist/cjs/test/unit/versionedTransaction.d.ts.map +1 -0
  148. package/dist/cjs/test/unit/versionedTransaction.js +207 -0
  149. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  150. package/dist/esm/bigint-buffer-guard.d.ts +1 -0
  151. package/dist/esm/config/token2022StaticConfig.d.ts +3 -0
  152. package/dist/esm/config/token2022StaticConfig.js +47 -0
  153. package/dist/esm/index.d.ts +7 -0
  154. package/dist/esm/index.js +7 -0
  155. package/dist/esm/lib/ataInitializationBuilder.d.ts +47 -0
  156. package/dist/esm/lib/ataInitializationBuilder.js +156 -0
  157. package/dist/esm/lib/closeAtaBuilder.d.ts +51 -0
  158. package/dist/esm/lib/closeAtaBuilder.d.ts.map +1 -0
  159. package/dist/esm/lib/closeAtaBuilder.js +140 -0
  160. package/dist/esm/lib/constants.d.ts +164 -0
  161. package/dist/esm/lib/constants.d.ts.map +1 -0
  162. package/dist/esm/lib/constants.js +193 -0
  163. package/dist/esm/lib/customInstructionBuilder.d.ts +72 -0
  164. package/dist/esm/lib/customInstructionBuilder.js +282 -0
  165. package/dist/esm/lib/explainTransactionWasm.d.ts +21 -0
  166. package/dist/esm/lib/explainTransactionWasm.d.ts.map +1 -0
  167. package/dist/esm/lib/explainTransactionWasm.js +261 -0
  168. package/dist/esm/lib/iface.d.ts +262 -0
  169. package/dist/esm/lib/iface.d.ts.map +1 -0
  170. package/dist/esm/lib/iface.js +3 -0
  171. package/dist/esm/lib/index.d.ts +23 -0
  172. package/dist/{src → esm}/lib/index.d.ts.map +1 -1
  173. package/dist/esm/lib/index.js +23 -0
  174. package/dist/esm/lib/instructionParamsFactory.d.ts +13 -0
  175. package/dist/{src → esm}/lib/instructionParamsFactory.d.ts.map +1 -1
  176. package/dist/esm/lib/instructionParamsFactory.js +1052 -0
  177. package/dist/esm/lib/jitoStakePoolOperations.d.ts +113 -0
  178. package/dist/esm/lib/jitoStakePoolOperations.js +189 -0
  179. package/dist/esm/lib/keyPair.d.ts +26 -0
  180. package/dist/esm/lib/keyPair.js +59 -0
  181. package/dist/esm/lib/messages/index.d.ts +2 -0
  182. package/dist/esm/lib/messages/index.js +2 -0
  183. package/dist/esm/lib/messages/messageBuilderFactory.d.ts +7 -0
  184. package/dist/{src → esm}/lib/messages/messageBuilderFactory.js +5 -9
  185. package/dist/esm/lib/recoverNestedAtaBuilder.d.ts +25 -0
  186. package/dist/esm/lib/recoverNestedAtaBuilder.d.ts.map +1 -0
  187. package/dist/esm/lib/recoverNestedAtaBuilder.js +83 -0
  188. package/dist/esm/lib/solInstructionFactory.d.ts +10 -0
  189. package/dist/esm/lib/solInstructionFactory.d.ts.map +1 -0
  190. package/dist/esm/lib/solInstructionFactory.js +589 -0
  191. package/dist/esm/lib/stakingActivateBuilder.d.ts +59 -0
  192. package/dist/esm/lib/stakingActivateBuilder.js +113 -0
  193. package/dist/esm/lib/stakingAuthorizeBuilder.d.ts +43 -0
  194. package/dist/esm/lib/stakingAuthorizeBuilder.js +82 -0
  195. package/dist/esm/lib/stakingDeactivateBuilder.d.ts +81 -0
  196. package/dist/{src → esm}/lib/stakingDeactivateBuilder.js +31 -38
  197. package/dist/esm/lib/stakingDelegateBuilder.d.ts +42 -0
  198. package/dist/esm/lib/stakingDelegateBuilder.js +113 -0
  199. package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.d.ts +33 -0
  200. package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.js +103 -0
  201. package/dist/esm/lib/stakingWithdrawBuilder.d.ts +31 -0
  202. package/dist/esm/lib/stakingWithdrawBuilder.js +71 -0
  203. package/dist/esm/lib/token2022Config.d.ts +44 -0
  204. package/dist/esm/lib/token2022Config.js +23 -0
  205. package/dist/esm/lib/tokenTransferBuilder.d.ts +41 -0
  206. package/dist/esm/lib/tokenTransferBuilder.js +181 -0
  207. package/dist/esm/lib/transaction.d.ts +103 -0
  208. package/dist/esm/lib/transaction.d.ts.map +1 -0
  209. package/dist/esm/lib/transaction.js +605 -0
  210. package/dist/esm/lib/transactionBuilder.d.ts +128 -0
  211. package/dist/esm/lib/transactionBuilder.js +373 -0
  212. package/dist/esm/lib/transactionBuilderFactory.d.ts +120 -0
  213. package/dist/esm/lib/transactionBuilderFactory.d.ts.map +1 -0
  214. package/dist/esm/lib/transactionBuilderFactory.js +205 -0
  215. package/dist/esm/lib/transferBuilder.d.ts +26 -0
  216. package/dist/esm/lib/transferBuilder.js +63 -0
  217. package/dist/esm/lib/transferBuilderV2.d.ts +43 -0
  218. package/dist/esm/lib/transferBuilderV2.js +203 -0
  219. package/dist/esm/lib/utils.d.ts +200 -0
  220. package/dist/{src → esm}/lib/utils.d.ts.map +1 -1
  221. package/dist/esm/lib/utils.js +567 -0
  222. package/dist/esm/lib/walletInitializationBuilder.d.ts +26 -0
  223. package/dist/esm/lib/walletInitializationBuilder.js +64 -0
  224. package/dist/esm/register.d.ts +3 -0
  225. package/dist/esm/register.js +11 -0
  226. package/dist/esm/sol.d.ts +280 -0
  227. package/dist/esm/sol.d.ts.map +1 -0
  228. package/dist/esm/sol.js +1423 -0
  229. package/dist/esm/solToken.d.ts +42 -0
  230. package/dist/{src → esm}/solToken.d.ts.map +1 -1
  231. package/dist/esm/solToken.js +72 -0
  232. package/dist/esm/tsol.d.ts +11 -0
  233. package/dist/esm/tsol.js +20 -0
  234. package/package.json +35 -16
  235. package/dist/src/config/token2022StaticConfig.js +0 -50
  236. package/dist/src/lib/ataInitializationBuilder.js +0 -196
  237. package/dist/src/lib/closeAtaBuilder.d.ts +0 -19
  238. package/dist/src/lib/closeAtaBuilder.d.ts.map +0 -1
  239. package/dist/src/lib/closeAtaBuilder.js +0 -69
  240. package/dist/src/lib/constants.d.ts.map +0 -1
  241. package/dist/src/lib/constants.js +0 -171
  242. package/dist/src/lib/customInstructionBuilder.js +0 -289
  243. package/dist/src/lib/iface.d.ts.map +0 -1
  244. package/dist/src/lib/iface.js +0 -7
  245. package/dist/src/lib/instructionParamsFactory.js +0 -1036
  246. package/dist/src/lib/jitoStakePoolOperations.js +0 -200
  247. package/dist/src/lib/keyPair.js +0 -63
  248. package/dist/src/lib/solInstructionFactory.d.ts.map +0 -1
  249. package/dist/src/lib/solInstructionFactory.js +0 -572
  250. package/dist/src/lib/stakingActivateBuilder.js +0 -120
  251. package/dist/src/lib/stakingAuthorizeBuilder.js +0 -89
  252. package/dist/src/lib/stakingDelegateBuilder.js +0 -120
  253. package/dist/src/lib/stakingRawMsgAuthorizeBuilder.js +0 -110
  254. package/dist/src/lib/stakingWithdrawBuilder.js +0 -78
  255. package/dist/src/lib/token2022Config.js +0 -27
  256. package/dist/src/lib/tokenTransferBuilder.js +0 -188
  257. package/dist/src/lib/transaction.d.ts.map +0 -1
  258. package/dist/src/lib/transaction.js +0 -595
  259. package/dist/src/lib/transactionBuilder.js +0 -380
  260. package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
  261. package/dist/src/lib/transactionBuilderFactory.js +0 -202
  262. package/dist/src/lib/transferBuilder.js +0 -70
  263. package/dist/src/lib/transferBuilderV2.js +0 -210
  264. package/dist/src/lib/utils.js +0 -589
  265. package/dist/src/lib/walletInitializationBuilder.js +0 -71
  266. package/dist/src/register.js +0 -15
  267. package/dist/src/sol.d.ts.map +0 -1
  268. package/dist/src/sol.js +0 -1285
  269. package/dist/src/solToken.js +0 -69
  270. package/dist/src/tsol.js +0 -24
  271. package/dist/test/fixtures/sol.js +0 -1433
  272. package/dist/test/resources/sol.d.ts.map +0 -1
  273. package/dist/test/resources/sol.js +0 -320
  274. package/dist/test/unit/fixtures/solBackupKey.d.ts.map +0 -1
  275. package/dist/test/unit/fixtures/solBackupKey.js +0 -8
  276. package/dist/test/unit/getBuilderFactory.d.ts.map +0 -1
  277. package/dist/test/unit/getBuilderFactory.js +0 -10
  278. package/dist/test/unit/instructionParamsFactory.d.ts.map +0 -1
  279. package/dist/test/unit/instructionParamsFactory.js +0 -412
  280. package/dist/test/unit/instructionParamsFactory.staking.d.ts.map +0 -1
  281. package/dist/test/unit/instructionParamsFactory.staking.js +0 -1059
  282. package/dist/test/unit/keyPair.js +0 -177
  283. package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +0 -1
  284. package/dist/test/unit/messages/messageBuilderFactory.js +0 -118
  285. package/dist/test/unit/messages/simpleMessageBuilder.d.ts.map +0 -1
  286. package/dist/test/unit/messages/simpleMessageBuilder.js +0 -194
  287. package/dist/test/unit/sol.js +0 -3108
  288. package/dist/test/unit/solInstructionFactory.d.ts.map +0 -1
  289. package/dist/test/unit/solInstructionFactory.js +0 -454
  290. package/dist/test/unit/solToken.d.ts.map +0 -1
  291. package/dist/test/unit/solToken.js +0 -31
  292. package/dist/test/unit/transaction.d.ts.map +0 -1
  293. package/dist/test/unit/transaction.js +0 -983
  294. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +0 -1
  295. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.js +0 -202
  296. package/dist/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +0 -1
  297. package/dist/test/unit/transactionBuilder/ataInitBuilder.js +0 -471
  298. package/dist/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +0 -1
  299. package/dist/test/unit/transactionBuilder/customInstructionBuilder.js +0 -413
  300. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +0 -1
  301. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.js +0 -430
  302. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +0 -1
  303. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +0 -157
  304. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +0 -1
  305. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.js +0 -384
  306. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +0 -1
  307. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.js +0 -224
  308. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -1
  309. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +0 -259
  310. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +0 -1
  311. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +0 -787
  312. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +0 -1
  313. package/dist/test/unit/transactionBuilder/transactionBuilder.js +0 -495
  314. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +0 -1
  315. package/dist/test/unit/transactionBuilder/transferBuilder.js +0 -286
  316. package/dist/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +0 -1
  317. package/dist/test/unit/transactionBuilder/transferBuilderV2.js +0 -862
  318. package/dist/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +0 -1
  319. package/dist/test/unit/transactionBuilder/walletInitBuilder.js +0 -259
  320. package/dist/test/unit/utils.js +0 -517
  321. package/dist/test/unit/versionedTransaction.d.ts.map +0 -1
  322. package/dist/test/unit/versionedTransaction.js +0 -207
  323. package/dist/tsconfig.tsbuildinfo +0 -1
  324. /package/dist/{src → cjs/src}/bigint-buffer-guard.d.ts +0 -0
  325. /package/dist/{src → cjs/src}/config/token2022StaticConfig.d.ts +0 -0
  326. /package/dist/{src → cjs/src}/index.d.ts +0 -0
  327. /package/dist/{src → cjs/src}/lib/ataInitializationBuilder.d.ts +0 -0
  328. /package/dist/{src → cjs/src}/lib/customInstructionBuilder.d.ts +0 -0
  329. /package/dist/{src → cjs/src}/lib/jitoStakePoolOperations.d.ts +0 -0
  330. /package/dist/{src → cjs/src}/lib/keyPair.d.ts +0 -0
  331. /package/dist/{src → cjs/src}/lib/messages/index.d.ts +0 -0
  332. /package/dist/{src → cjs/src}/lib/messages/messageBuilderFactory.d.ts +0 -0
  333. /package/dist/{src → cjs/src}/lib/solInstructionFactory.d.ts +0 -0
  334. /package/dist/{src → cjs/src}/lib/stakingActivateBuilder.d.ts +0 -0
  335. /package/dist/{src → cjs/src}/lib/stakingAuthorizeBuilder.d.ts +0 -0
  336. /package/dist/{src → cjs/src}/lib/stakingDeactivateBuilder.d.ts +0 -0
  337. /package/dist/{src → cjs/src}/lib/stakingDelegateBuilder.d.ts +0 -0
  338. /package/dist/{src → cjs/src}/lib/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
  339. /package/dist/{src → cjs/src}/lib/stakingWithdrawBuilder.d.ts +0 -0
  340. /package/dist/{src → cjs/src}/lib/token2022Config.d.ts +0 -0
  341. /package/dist/{src → cjs/src}/lib/tokenTransferBuilder.d.ts +0 -0
  342. /package/dist/{src → cjs/src}/lib/transaction.d.ts +0 -0
  343. /package/dist/{src → cjs/src}/lib/transactionBuilder.d.ts +0 -0
  344. /package/dist/{src → cjs/src}/lib/transferBuilder.d.ts +0 -0
  345. /package/dist/{src → cjs/src}/lib/transferBuilderV2.d.ts +0 -0
  346. /package/dist/{src → cjs/src}/lib/utils.d.ts +0 -0
  347. /package/dist/{src → cjs/src}/lib/walletInitializationBuilder.d.ts +0 -0
  348. /package/dist/{src → cjs/src}/register.d.ts +0 -0
  349. /package/dist/{src → cjs/src}/tsol.d.ts +0 -0
  350. /package/dist/{test → cjs/test}/fixtures/sol.d.ts +0 -0
  351. /package/dist/{test → cjs/test}/unit/fixtures/solBackupKey.d.ts +0 -0
  352. /package/dist/{test → cjs/test}/unit/getBuilderFactory.d.ts +0 -0
  353. /package/dist/{test → cjs/test}/unit/instructionParamsFactory.d.ts +0 -0
  354. /package/dist/{test → cjs/test}/unit/instructionParamsFactory.staking.d.ts +0 -0
  355. /package/dist/{test → cjs/test}/unit/keyPair.d.ts +0 -0
  356. /package/dist/{test → cjs/test}/unit/messages/messageBuilderFactory.d.ts +0 -0
  357. /package/dist/{test → cjs/test}/unit/messages/simpleMessageBuilder.d.ts +0 -0
  358. /package/dist/{test → cjs/test}/unit/sol.d.ts +0 -0
  359. /package/dist/{test → cjs/test}/unit/solInstructionFactory.d.ts +0 -0
  360. /package/dist/{test → cjs/test}/unit/solToken.d.ts +0 -0
  361. /package/dist/{test → cjs/test}/unit/transaction.d.ts +0 -0
  362. /package/dist/{test → cjs/test}/unit/transactionBuilder/StakingWithdrawBuilder.d.ts +0 -0
  363. /package/dist/{test → cjs/test}/unit/transactionBuilder/ataInitBuilder.d.ts +0 -0
  364. /package/dist/{test → cjs/test}/unit/transactionBuilder/customInstructionBuilder.d.ts +0 -0
  365. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingActivateBuilder.d.ts +0 -0
  366. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts +0 -0
  367. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDeactivateBuilder.d.ts +0 -0
  368. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDelegateBuilder.d.ts +0 -0
  369. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
  370. /package/dist/{test → cjs/test}/unit/transactionBuilder/tokenTransferBuilder.d.ts +0 -0
  371. /package/dist/{test → cjs/test}/unit/transactionBuilder/transactionBuilder.d.ts +0 -0
  372. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilder.d.ts +0 -0
  373. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilderV2.d.ts +0 -0
  374. /package/dist/{test → cjs/test}/unit/transactionBuilder/walletInitBuilder.d.ts +0 -0
  375. /package/dist/{test → cjs/test}/unit/utils.d.ts +0 -0
  376. /package/dist/{test → cjs/test}/unit/versionedTransaction.d.ts +0 -0
  377. /package/dist/{src → esm}/bigint-buffer-guard.d.ts.map +0 -0
  378. /package/dist/{src → esm}/bigint-buffer-guard.js +0 -0
  379. /package/dist/{src → esm}/config/token2022StaticConfig.d.ts.map +0 -0
  380. /package/dist/{src → esm}/index.d.ts.map +0 -0
  381. /package/dist/{src → esm}/lib/ataInitializationBuilder.d.ts.map +0 -0
  382. /package/dist/{src → esm}/lib/customInstructionBuilder.d.ts.map +0 -0
  383. /package/dist/{src → esm}/lib/jitoStakePoolOperations.d.ts.map +0 -0
  384. /package/dist/{src → esm}/lib/keyPair.d.ts.map +0 -0
  385. /package/dist/{src → esm}/lib/messages/index.d.ts.map +0 -0
  386. /package/dist/{src → esm}/lib/messages/messageBuilderFactory.d.ts.map +0 -0
  387. /package/dist/{src → esm}/lib/stakingActivateBuilder.d.ts.map +0 -0
  388. /package/dist/{src → esm}/lib/stakingAuthorizeBuilder.d.ts.map +0 -0
  389. /package/dist/{src → esm}/lib/stakingDeactivateBuilder.d.ts.map +0 -0
  390. /package/dist/{src → esm}/lib/stakingDelegateBuilder.d.ts.map +0 -0
  391. /package/dist/{src → esm}/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -0
  392. /package/dist/{src → esm}/lib/stakingWithdrawBuilder.d.ts.map +0 -0
  393. /package/dist/{src → esm}/lib/token2022Config.d.ts.map +0 -0
  394. /package/dist/{src → esm}/lib/tokenTransferBuilder.d.ts.map +0 -0
  395. /package/dist/{src → esm}/lib/transactionBuilder.d.ts.map +0 -0
  396. /package/dist/{src → esm}/lib/transferBuilder.d.ts.map +0 -0
  397. /package/dist/{src → esm}/lib/transferBuilderV2.d.ts.map +0 -0
  398. /package/dist/{src → esm}/lib/walletInitializationBuilder.d.ts.map +0 -0
  399. /package/dist/{src → esm}/register.d.ts.map +0 -0
  400. /package/dist/{src → esm}/tsol.d.ts.map +0 -0
@@ -0,0 +1,333 @@
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 src_1 = require("../../../src");
40
+ const should_1 = __importDefault(require("should"));
41
+ const testData = __importStar(require("../../resources/sol"));
42
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
43
+ const getBuilderFactory_1 = require("../getBuilderFactory");
44
+ const constants_1 = require("../../../src/lib/constants");
45
+ describe('Sol Close ATA Builder', () => {
46
+ const factory = (0, getBuilderFactory_1.getBuilderFactory)('tsol');
47
+ const recentBlockHash = 'GHtXQBsoZHVnNFa9YevAzFr17DJjgHXk3ycTKD5xD3Zi';
48
+ const account = new src_1.KeyPair(testData.authAccount).getKeys();
49
+ const nonceAccount = new src_1.KeyPair(testData.nonceAccount).getKeys();
50
+ const account2 = new src_1.KeyPair(testData.authAccount2).getKeys();
51
+ // ATA addresses (valid Solana addresses from test fixtures)
52
+ const ataAddress1 = nonceAccount.pub;
53
+ const ataAddress2 = account2.pub;
54
+ const destinationAddress = account.pub;
55
+ const closeAtaBuilder = () => {
56
+ const txBuilder = factory.getCloseAtaInitializationBuilder();
57
+ txBuilder.nonce(recentBlockHash);
58
+ txBuilder.sender(account.pub);
59
+ return txBuilder;
60
+ };
61
+ describe('Single ATA close (backward compatible)', () => {
62
+ describe('Succeed', () => {
63
+ it('build a single close ATA tx unsigned', async () => {
64
+ const txBuilder = closeAtaBuilder();
65
+ txBuilder.accountAddress(ataAddress1);
66
+ txBuilder.destinationAddress(destinationAddress);
67
+ txBuilder.authorityAddress(account.pub);
68
+ const tx = await txBuilder.build();
69
+ tx.type.should.equal(sdk_core_1.TransactionType.CloseAssociatedTokenAccount);
70
+ const rawTx = tx.toBroadcastFormat();
71
+ should_1.default.equal(src_1.Utils.isValidRawTransaction(rawTx), true);
72
+ const instructions = tx.toJson().instructionsData;
73
+ instructions.length.should.equal(1);
74
+ instructions[0].type.should.equal(constants_1.InstructionBuilderTypes.CloseAssociatedTokenAccount);
75
+ instructions[0].params.accountAddress.should.equal(ataAddress1);
76
+ instructions[0].params.destinationAddress.should.equal(destinationAddress);
77
+ instructions[0].params.authorityAddress.should.equal(account.pub);
78
+ });
79
+ it('build a single close ATA tx signed', async () => {
80
+ const txBuilder = closeAtaBuilder();
81
+ txBuilder.accountAddress(ataAddress1);
82
+ txBuilder.destinationAddress(destinationAddress);
83
+ txBuilder.authorityAddress(account.pub);
84
+ txBuilder.sign({ key: account.prv });
85
+ const tx = await txBuilder.build();
86
+ tx.type.should.equal(sdk_core_1.TransactionType.CloseAssociatedTokenAccount);
87
+ const rawTx = tx.toBroadcastFormat();
88
+ should_1.default.equal(src_1.Utils.isValidRawTransaction(rawTx), true);
89
+ });
90
+ it('build a single close ATA tx with durable nonce', async () => {
91
+ const txBuilder = closeAtaBuilder();
92
+ txBuilder.nonce(recentBlockHash, {
93
+ walletNonceAddress: nonceAccount.pub,
94
+ authWalletAddress: account.pub,
95
+ });
96
+ txBuilder.accountAddress(ataAddress2);
97
+ txBuilder.destinationAddress(destinationAddress);
98
+ txBuilder.authorityAddress(account.pub);
99
+ const tx = await txBuilder.build();
100
+ tx.type.should.equal(sdk_core_1.TransactionType.CloseAssociatedTokenAccount);
101
+ const rawTx = tx.toBroadcastFormat();
102
+ should_1.default.equal(src_1.Utils.isValidRawTransaction(rawTx), true);
103
+ });
104
+ });
105
+ describe('Fail', () => {
106
+ it('should fail when account address is not set', async () => {
107
+ const txBuilder = closeAtaBuilder();
108
+ txBuilder.destinationAddress(destinationAddress);
109
+ txBuilder.authorityAddress(account.pub);
110
+ await txBuilder.build().should.rejectedWith('Account Address must be set before building the transaction');
111
+ });
112
+ it('should fail when destination address is not set', async () => {
113
+ const txBuilder = closeAtaBuilder();
114
+ txBuilder.accountAddress(ataAddress1);
115
+ txBuilder.authorityAddress(account.pub);
116
+ await txBuilder.build().should.rejectedWith('Destination Address must be set before building the transaction');
117
+ });
118
+ it('should fail when authority address is not set', async () => {
119
+ const txBuilder = closeAtaBuilder();
120
+ txBuilder.accountAddress(ataAddress1);
121
+ txBuilder.destinationAddress(destinationAddress);
122
+ await txBuilder.build().should.rejectedWith('Authority Address must be set before building the transaction');
123
+ });
124
+ it('should fail when account address equals destination address', async () => {
125
+ const txBuilder = closeAtaBuilder();
126
+ txBuilder.accountAddress(destinationAddress);
127
+ txBuilder.destinationAddress(destinationAddress);
128
+ txBuilder.authorityAddress(account.pub);
129
+ await txBuilder
130
+ .build()
131
+ .should.rejectedWith('Account address to close cannot be the same as the destination address');
132
+ });
133
+ it('should fail with invalid account address', () => {
134
+ const txBuilder = closeAtaBuilder();
135
+ (0, should_1.default)(() => txBuilder.accountAddress('invalidAddress')).throwError();
136
+ });
137
+ it('should fail with invalid destination address', () => {
138
+ const txBuilder = closeAtaBuilder();
139
+ (0, should_1.default)(() => txBuilder.destinationAddress('invalidAddress')).throwError();
140
+ });
141
+ it('should fail with invalid authority address', () => {
142
+ const txBuilder = closeAtaBuilder();
143
+ (0, should_1.default)(() => txBuilder.authorityAddress('invalidAddress')).throwError();
144
+ });
145
+ it('should fail when nonce is not provided', async () => {
146
+ const txBuilder = factory.getCloseAtaInitializationBuilder();
147
+ txBuilder.sender(account.pub);
148
+ txBuilder.accountAddress(ataAddress1);
149
+ txBuilder.destinationAddress(destinationAddress);
150
+ txBuilder.authorityAddress(account.pub);
151
+ await txBuilder.build().should.rejectedWith('Invalid transaction: missing nonce blockhash');
152
+ });
153
+ it('should fail when sender is not provided', async () => {
154
+ const txBuilder = factory.getCloseAtaInitializationBuilder();
155
+ txBuilder.nonce(recentBlockHash);
156
+ txBuilder.accountAddress(ataAddress1);
157
+ txBuilder.destinationAddress(destinationAddress);
158
+ txBuilder.authorityAddress(account.pub);
159
+ await txBuilder.build().should.rejectedWith('Invalid transaction: missing sender');
160
+ });
161
+ });
162
+ });
163
+ describe('Bulk ATA close (addCloseAtaInstruction)', () => {
164
+ describe('Succeed', () => {
165
+ it('build a bulk close ATA tx with multiple ATAs unsigned', async () => {
166
+ const txBuilder = closeAtaBuilder();
167
+ txBuilder.addCloseAtaInstruction(ataAddress1, destinationAddress, account.pub);
168
+ txBuilder.addCloseAtaInstruction(ataAddress2, destinationAddress, account.pub);
169
+ const tx = await txBuilder.build();
170
+ tx.type.should.equal(sdk_core_1.TransactionType.CloseAssociatedTokenAccount);
171
+ const rawTx = tx.toBroadcastFormat();
172
+ should_1.default.equal(src_1.Utils.isValidRawTransaction(rawTx), true);
173
+ const instructions = tx.toJson().instructionsData;
174
+ instructions.length.should.equal(2);
175
+ instructions[0].type.should.equal(constants_1.InstructionBuilderTypes.CloseAssociatedTokenAccount);
176
+ instructions[0].params.accountAddress.should.equal(ataAddress1);
177
+ instructions[0].params.destinationAddress.should.equal(destinationAddress);
178
+ instructions[0].params.authorityAddress.should.equal(account.pub);
179
+ instructions[1].type.should.equal(constants_1.InstructionBuilderTypes.CloseAssociatedTokenAccount);
180
+ instructions[1].params.accountAddress.should.equal(ataAddress2);
181
+ instructions[1].params.destinationAddress.should.equal(destinationAddress);
182
+ instructions[1].params.authorityAddress.should.equal(account.pub);
183
+ });
184
+ it('build a bulk close ATA tx signed', async () => {
185
+ const txBuilder = closeAtaBuilder();
186
+ txBuilder.addCloseAtaInstruction(ataAddress1, destinationAddress, account.pub);
187
+ txBuilder.addCloseAtaInstruction(ataAddress2, destinationAddress, account.pub);
188
+ txBuilder.sign({ key: account.prv });
189
+ const tx = await txBuilder.build();
190
+ tx.type.should.equal(sdk_core_1.TransactionType.CloseAssociatedTokenAccount);
191
+ const rawTx = tx.toBroadcastFormat();
192
+ should_1.default.equal(src_1.Utils.isValidRawTransaction(rawTx), true);
193
+ const instructions = tx.toJson().instructionsData;
194
+ instructions.length.should.equal(2);
195
+ });
196
+ it('build a single close using addCloseAtaInstruction', async () => {
197
+ const txBuilder = closeAtaBuilder();
198
+ txBuilder.addCloseAtaInstruction(ataAddress1, destinationAddress, account.pub);
199
+ const tx = await txBuilder.build();
200
+ tx.type.should.equal(sdk_core_1.TransactionType.CloseAssociatedTokenAccount);
201
+ const instructions = tx.toJson().instructionsData;
202
+ instructions.length.should.equal(1);
203
+ instructions[0].params.accountAddress.should.equal(ataAddress1);
204
+ });
205
+ it('all close instructions have same destination (root wallet)', async () => {
206
+ const txBuilder = closeAtaBuilder();
207
+ txBuilder.addCloseAtaInstruction(ataAddress1, destinationAddress, account.pub);
208
+ txBuilder.addCloseAtaInstruction(ataAddress2, destinationAddress, account.pub);
209
+ const tx = await txBuilder.build();
210
+ const instructions = tx.toJson().instructionsData;
211
+ for (const instruction of instructions) {
212
+ instruction.params.destinationAddress.should.equal(destinationAddress);
213
+ }
214
+ });
215
+ });
216
+ describe('Fail', () => {
217
+ it('should fail with duplicate ATA address', () => {
218
+ const txBuilder = closeAtaBuilder();
219
+ txBuilder.addCloseAtaInstruction(ataAddress1, destinationAddress, account.pub);
220
+ (0, should_1.default)(() => txBuilder.addCloseAtaInstruction(ataAddress1, destinationAddress, account.pub)).throwError('Duplicate ATA address: ' + ataAddress1);
221
+ });
222
+ it('should fail when account equals destination', () => {
223
+ const txBuilder = closeAtaBuilder();
224
+ (0, should_1.default)(() => txBuilder.addCloseAtaInstruction(destinationAddress, destinationAddress, account.pub)).throwError('Account address to close cannot be the same as the destination address');
225
+ });
226
+ it('should fail with invalid account address', () => {
227
+ const txBuilder = closeAtaBuilder();
228
+ (0, should_1.default)(() => txBuilder.addCloseAtaInstruction('invalid', destinationAddress, account.pub)).throwError();
229
+ });
230
+ it('should fail with invalid destination address', () => {
231
+ const txBuilder = closeAtaBuilder();
232
+ (0, should_1.default)(() => txBuilder.addCloseAtaInstruction(ataAddress1, 'invalid', account.pub)).throwError();
233
+ });
234
+ it('should fail with invalid authority address', () => {
235
+ const txBuilder = closeAtaBuilder();
236
+ (0, should_1.default)(() => txBuilder.addCloseAtaInstruction(ataAddress1, destinationAddress, 'invalid')).throwError();
237
+ });
238
+ });
239
+ });
240
+ describe('Mixing single-ATA and bulk APIs', () => {
241
+ const mixErrorMessage = /Cannot mix single-ATA API .* with bulk-ATA API/;
242
+ it('should throw when single-ATA setter is called after addCloseAtaInstruction (accountAddress)', () => {
243
+ const txBuilder = closeAtaBuilder();
244
+ txBuilder.addCloseAtaInstruction(ataAddress1, destinationAddress, account.pub);
245
+ (0, should_1.default)(() => txBuilder.accountAddress(ataAddress2)).throw(mixErrorMessage);
246
+ });
247
+ it('should throw when single-ATA setter is called after addCloseAtaInstruction (destinationAddress)', () => {
248
+ const txBuilder = closeAtaBuilder();
249
+ txBuilder.addCloseAtaInstruction(ataAddress1, destinationAddress, account.pub);
250
+ (0, should_1.default)(() => txBuilder.destinationAddress(account2.pub)).throw(mixErrorMessage);
251
+ });
252
+ it('should throw when single-ATA setter is called after addCloseAtaInstruction (authorityAddress)', () => {
253
+ const txBuilder = closeAtaBuilder();
254
+ txBuilder.addCloseAtaInstruction(ataAddress1, destinationAddress, account.pub);
255
+ (0, should_1.default)(() => txBuilder.authorityAddress(account2.pub)).throw(mixErrorMessage);
256
+ });
257
+ it('should throw when addCloseAtaInstruction is called after single-ATA setter', () => {
258
+ const txBuilder = closeAtaBuilder();
259
+ txBuilder.accountAddress(ataAddress1);
260
+ (0, should_1.default)(() => txBuilder.addCloseAtaInstruction(ataAddress2, destinationAddress, account.pub)).throw(mixErrorMessage);
261
+ });
262
+ it('should not corrupt the first bulk entry when bulk-then-single is rejected', () => {
263
+ const txBuilder = closeAtaBuilder();
264
+ txBuilder.addCloseAtaInstruction(ataAddress1, destinationAddress, account.pub);
265
+ try {
266
+ txBuilder.accountAddress(ataAddress2);
267
+ }
268
+ catch {
269
+ /* expected */
270
+ }
271
+ // First entry must still be intact after the rejected mix attempt.
272
+ const entries = txBuilder
273
+ ._closeAtaEntries;
274
+ entries.length.should.equal(1);
275
+ entries[0].accountAddress.should.equal(ataAddress1);
276
+ });
277
+ });
278
+ describe('From raw transaction', () => {
279
+ it('should parse a single close ATA tx from raw and rebuild', async () => {
280
+ // Build a tx first
281
+ const txBuilder = closeAtaBuilder();
282
+ txBuilder.accountAddress(ataAddress1);
283
+ txBuilder.destinationAddress(destinationAddress);
284
+ txBuilder.authorityAddress(account.pub);
285
+ const tx = await txBuilder.build();
286
+ const rawTx = tx.toBroadcastFormat();
287
+ // Parse from raw
288
+ const rebuiltBuilder = factory.from(rawTx);
289
+ const rebuiltTx = await rebuiltBuilder.build();
290
+ rebuiltTx.type.should.equal(sdk_core_1.TransactionType.CloseAssociatedTokenAccount);
291
+ const instructions = rebuiltTx.toJson().instructionsData;
292
+ instructions.length.should.equal(1);
293
+ instructions[0].type.should.equal(constants_1.InstructionBuilderTypes.CloseAssociatedTokenAccount);
294
+ instructions[0].params.accountAddress.should.equal(ataAddress1);
295
+ instructions[0].params.destinationAddress.should.equal(destinationAddress);
296
+ instructions[0].params.authorityAddress.should.equal(account.pub);
297
+ });
298
+ it('should parse a bulk close ATA tx from raw and rebuild', async () => {
299
+ // Build a bulk tx first
300
+ const txBuilder = closeAtaBuilder();
301
+ txBuilder.addCloseAtaInstruction(ataAddress1, destinationAddress, account.pub);
302
+ txBuilder.addCloseAtaInstruction(ataAddress2, destinationAddress, account.pub);
303
+ const tx = await txBuilder.build();
304
+ const rawTx = tx.toBroadcastFormat();
305
+ // Parse from raw
306
+ const rebuiltBuilder = factory.from(rawTx);
307
+ const rebuiltTx = await rebuiltBuilder.build();
308
+ rebuiltTx.type.should.equal(sdk_core_1.TransactionType.CloseAssociatedTokenAccount);
309
+ const instructions = rebuiltTx.toJson().instructionsData;
310
+ instructions.length.should.equal(2);
311
+ instructions[0].params.accountAddress.should.equal(ataAddress1);
312
+ instructions[1].params.accountAddress.should.equal(ataAddress2);
313
+ });
314
+ it('should reject legacy single-ATA setters on a parsed bulk close tx', async () => {
315
+ const txBuilder = closeAtaBuilder();
316
+ txBuilder.addCloseAtaInstruction(ataAddress1, destinationAddress, account.pub);
317
+ txBuilder.addCloseAtaInstruction(ataAddress2, destinationAddress, account.pub);
318
+ const rawTx = (await txBuilder.build()).toBroadcastFormat();
319
+ const parsed = factory.from(rawTx);
320
+ const mixErrorMessage = /Cannot mix single-ATA API .* with bulk-ATA API/;
321
+ (0, should_1.default)(() => parsed.accountAddress(ataAddress1)).throw(mixErrorMessage);
322
+ (0, should_1.default)(() => parsed.destinationAddress(destinationAddress)).throw(mixErrorMessage);
323
+ (0, should_1.default)(() => parsed.authorityAddress(account.pub)).throw(mixErrorMessage);
324
+ });
325
+ it('should parse existing close ATA raw tx from test resources', async () => {
326
+ const txnBuilder = factory.from(testData.TRANSFER_UNSIGNED_TX_CLOSE_ATA);
327
+ should_1.default.exist(txnBuilder);
328
+ const tx = await txnBuilder.build();
329
+ tx.type.should.equal(sdk_core_1.TransactionType.CloseAssociatedTokenAccount);
330
+ });
331
+ });
332
+ });
333
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvc2VBdGFCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zYWN0aW9uQnVpbGRlci9jbG9zZUF0YUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzQ0FBOEM7QUFFOUMsb0RBQTRCO0FBQzVCLDhEQUFnRDtBQUNoRCxtREFBdUQ7QUFDdkQsNERBQXlEO0FBQ3pELDBEQUFxRTtBQUVyRSxRQUFRLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxFQUFFO0lBQ3JDLE1BQU0sT0FBTyxHQUFHLElBQUEscUNBQWlCLEVBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUMsTUFBTSxlQUFlLEdBQUcsOENBQThDLENBQUM7SUFFdkUsTUFBTSxPQUFPLEdBQUcsSUFBSSxhQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzVELE1BQU0sWUFBWSxHQUFHLElBQUksYUFBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsRSxNQUFNLFFBQVEsR0FBRyxJQUFJLGFBQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFFOUQsNERBQTREO0lBQzVELE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUM7SUFDckMsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQztJQUNqQyxNQUFNLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFFdkMsTUFBTSxlQUFlLEdBQUcsR0FBRyxFQUFFO1FBQzNCLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDO1FBQzdELFNBQVMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakMsU0FBUyxDQUFDLE1B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O1lBQ25GLElBQUEsZ0JBQU0sRUFBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzVFLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDREQUE0RCxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzFFLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLDhCQUE4QixDQUFDLENBQUM7WUFDekUsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7WUFFekIsTUFBTSxFQUFFLEdBQUcsTUFBTSxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDcEMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDBCQUFlLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUNwRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBLZXlQYWlyLCBVdGlscyB9IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBDbG9zZUF0YUJ1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliL2Nsb3NlQXRhQnVpbGRlcic7XG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgKiBhcyB0ZXN0RGF0YSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvc29sJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IGdldEJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi4vZ2V0QnVpbGRlckZhY3RvcnknO1xuaW1wb3J0IHsgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliL2NvbnN0YW50cyc7XG5cbmRlc2NyaWJlKCdTb2wgQ2xvc2UgQVRBIEJ1aWxkZXInLCAoKSA9PiB7XG4gIGNvbnN0IGZhY3RvcnkgPSBnZXRCdWlsZGVyRmFjdG9yeSgndHNvbCcpO1xuICBjb25zdCByZWNlbnRCbG9ja0hhc2ggPSAnR0h0WFFCc29aSFZuTkZhOVlldkF6RnIxN0RKamdIWGszeWNUS0Q1eEQzWmknO1xuXG4gIGNvbnN0IGFjY291bnQgPSBuZXcgS2V5UGFpcih0ZXN0RGF0YS5hdXRoQWNjb3VudCkuZ2V0S2V5cygpO1xuICBjb25zdCBub25jZUFjY291bnQgPSBuZXcgS2V5UGFpcih0ZXN0RGF0YS5ub25jZUFjY291bnQpLmdldEtleXMoKTtcbiAgY29uc3QgYWNjb3VudDIgPSBuZXcgS2V5UGFpcih0ZXN0RGF0YS5hdXRoQWNjb3VudDIpLmdldEtleXMoKTtcblxuICAvLyBBVEEgYWRkcmVzc2VzICh2YWxpZCBTb2xhbmEgYWRkcmVzc2VzIGZyb20gdGVzdCBmaXh0dXJlcylcbiAgY29uc3QgYXRhQWRkcmVzczEgPSBub25jZUFjY291bnQucHViO1xuICBjb25zdCBhdGFBZGRyZXNzMiA9IGFjY291bnQyLnB1YjtcbiAgY29uc3QgZGVzdGluYXRpb25BZGRyZXNzID0gYWNjb3VudC5wdWI7XG5cbiAgY29uc3QgY2xvc2VBdGFCdWlsZGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0Q2xvc2VBdGFJbml0aWFsaXphdGlvbkJ1aWxkZXIoKTtcbiAgICB0eEJ1aWxkZXIubm9uY2UocmVjZW50QmxvY2tIYXNoKTtcbiAgICB0eEJ1aWxkZXIuc2VuZGVyKGFjY291bnQucHViKTtcbiAgICByZXR1cm4gdHhCdWlsZGVyO1xuICB9O1xuXG4gIGRlc2NyaWJlKCdTaW5nbGUgQVRBIGNsb3NlIChiYWNrd2FyZCBjb21wYXRpYmxlKScsICgpID0+IHtcbiAgICBkZXNjcmliZSgnU3VjY2VlZCcsICgpID0+IHtcbiAgICAgIGl0KCdidWlsZCBhIHNpbmdsZSBjbG9zZSBBVEEgdHggdW5zaWduZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNsb3NlQXRhQnVpbGRlcigpO1xuICAgICAgICB0eEJ1aWxkZXIuYWNjb3VudEFkZHJlc3MoYXRhQWRkcmVzczEpO1xuICAgICAgICB0eEJ1aWxkZXIuZGVzdGluYXRpb25BZGRyZXNzKGRlc3RpbmF0aW9uQWRkcmVzcyk7XG4gICAgICAgIHR4QnVpbGRlci5hdXRob3JpdHlBZGRyZXNzKGFjY291bnQucHViKTtcblxuICAgICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgICB0eC50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuQ2xvc2VBc3NvY2lhdGVkVG9rZW5BY2NvdW50KTtcblxuICAgICAgICBjb25zdCByYXdUeCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChVdGlscy5pc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHgpLCB0cnVlKTtcblxuICAgICAgICBjb25zdCBpbnN0cnVjdGlvbnMgPSB0eC50b0pzb24oKS5pbnN0cnVjdGlvbnNEYXRhO1xuICAgICAgICBpbnN0cnVjdGlvbnMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgICAgaW5zdHJ1Y3Rpb25zWzBdLnR5cGUuc2hvdWxkLmVxdWFsKEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkNsb3NlQXNzb2NpYXRlZFRva2VuQWNjb3VudCk7XG4gICAgICAgIGluc3RydWN0aW9uc1swXS5wYXJhbXMuYWNjb3VudEFkZHJlc3Muc2hvdWxkLmVxdWFsKGF0YUFkZHJlc3MxKTtcbiAgICAgICAgaW5zdHJ1Y3Rpb25zWzBdLnBhcmFtcy5kZXN0aW5hdGlvbkFkZHJlc3Muc2hvdWxkLmVxdWFsKGRlc3RpbmF0aW9uQWRkcmVzcyk7XG4gICAgICAgIGluc3RydWN0aW9uc1swXS5wYXJhbXMuYXV0aG9yaXR5QWRkcmVzcy5zaG91bGQuZXF1YWwoYWNjb3VudC5wdWIpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdidWlsZCBhIHNpbmdsZSBjbG9zZSBBVEEgdHggc2lnbmVkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjbG9zZUF0YUJ1aWxkZXIoKTtcbiAgICAgICAgdHhCdWlsZGVyLmFjY291bnRBZGRyZXNzKGF0YUFkZHJlc3MxKTtcbiAgICAgICAgdHhCdWlsZGVyLmRlc3RpbmF0aW9uQWRkcmVzcyhkZXN0aW5hdGlvbkFkZHJlc3MpO1xuICAgICAgICB0eEJ1aWxkZXIuYXV0aG9yaXR5QWRkcmVzcyhhY2NvdW50LnB1Yik7XG4gICAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBhY2NvdW50LnBydiB9KTtcblxuICAgICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgICB0eC50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuQ2xvc2VBc3NvY2lhdGVkVG9rZW5BY2NvdW50KTtcblxuICAgICAgICBjb25zdCByYXdUeCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChVdGlscy5pc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHgpLCB0cnVlKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnYnVpbGQgYSBzaW5nbGUgY2xvc2UgQVRBIHR4IHdpdGggZHVyYWJsZSBub25jZScsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhCdWlsZGVyID0gY2xvc2VBdGFCdWlsZGVyKCk7XG4gICAgICAgIHR4QnVpbGRlci5ub25jZShyZWNlbnRCbG9ja0hhc2gsIHtcbiAgICAgICAgICB3YWxsZXROb25jZUFkZHJlc3M6IG5vbmNlQWNjb3VudC5wdWIsXG4gICAgICAgICAgYXV0aFdhbGxldEFkZHJlc3M6IGFjY291bnQucHViLFxuICAgICAgICB9KTtcbiAgICAgICAgdHhCdWlsZGVyLmFjY291bnRBZGRyZXNzKGF0YUFkZHJlc3MyKTtcbiAgICAgICAgdHhCdWlsZGVyLmRlc3RpbmF0aW9uQWRkcmVzcyhkZXN0aW5hdGlvbkFkZHJlc3MpO1xuICAgICAgICB0eEJ1aWxkZXIuYXV0aG9yaXR5QWRkcmVzcyhhY2NvdW50LnB1Yik7XG5cbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgICAgdHgudHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLkNsb3NlQXNzb2NpYXRlZFRva2VuQWNjb3VudCk7XG5cbiAgICAgICAgY29uc3QgcmF3VHggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgICBzaG91bGQuZXF1YWwoVXRpbHMuaXNWYWxpZFJhd1RyYW5zYWN0aW9uKHJhd1R4KSwgdHJ1ZSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdGYWlsJywgKCkgPT4ge1xuICAgICAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gYWNjb3VudCBhZGRyZXNzIGlzIG5vdCBzZXQnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNsb3NlQXRhQnVpbGRlcigpO1xuICAgICAgICB0eEJ1aWxkZXIuZGVzdGluYXRpb25BZGRyZXNzKGRlc3RpbmF0aW9uQWRkcmVzcyk7XG4gICAgICAgIHR4QnVpbGRlci5hdXRob3JpdHlBZGRyZXNzKGFjY291bnQucHViKTtcblxuICAgICAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKS5zaG91bGQucmVqZWN0ZWRXaXRoKCdBY2NvdW50IEFkZHJlc3MgbXVzdCBiZSBzZXQgYmVmb3JlIGJ1aWxkaW5nIHRoZSB0cmFuc2FjdGlvbicpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgZmFpbCB3aGVuIGRlc3RpbmF0aW9uIGFkZHJlc3MgaXMgbm90IHNldCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhCdWlsZGVyID0gY2xvc2VBdGFCdWlsZGVyKCk7XG4gICAgICAgIHR4QnVpbGRlci5hY2NvdW50QWRkcmVzcyhhdGFBZGRyZXNzMSk7XG4gICAgICAgIHR4QnVpbGRlci5hdXRob3JpdHlBZGRyZXNzKGFjY291bnQucHViKTtcblxuICAgICAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKS5zaG91bGQucmVqZWN0ZWRXaXRoKCdEZXN0aW5hdGlvbiBBZGRyZXNzIG11c3QgYmUgc2V0IGJlZm9yZSBidWlsZGluZyB0aGUgdHJhbnNhY3Rpb24nKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGZhaWwgd2hlbiBhdXRob3JpdHkgYWRkcmVzcyBpcyBub3Qgc2V0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjbG9zZUF0YUJ1aWxkZXIoKTtcbiAgICAgICAgdHhCdWlsZGVyLmFjY291bnRBZGRyZXNzKGF0YUFkZHJlc3MxKTtcbiAgICAgICAgdHhCdWlsZGVyLmRlc3RpbmF0aW9uQWRkcmVzcyhkZXN0aW5hdGlvbkFkZHJlc3MpO1xuXG4gICAgICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5yZWplY3RlZFdpdGgoJ0F1dGhvcml0eSBBZGRyZXNzIG11c3QgYmUgc2V0IGJlZm9yZSBidWlsZGluZyB0aGUgdHJhbnNhY3Rpb24nKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGZhaWwgd2hlbiBhY2NvdW50IGFkZHJlc3MgZXF1YWxzIGRlc3RpbmF0aW9uIGFkZHJlc3MnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNsb3NlQXRhQnVpbGRlcigpO1xuICAgICAgICB0eEJ1aWxkZXIuYWNjb3VudEFkZHJlc3MoZGVzdGluYXRpb25BZGRyZXNzKTtcbiAgICAgICAgdHhCdWlsZGVyLmRlc3RpbmF0aW9uQWRkcmVzcyhkZXN0aW5hdGlvbkFkZHJlc3MpO1xuICAgICAgICB0eEJ1aWxkZXIuYXV0aG9yaXR5QWRkcmVzcyhhY2NvdW50LnB1Yik7XG5cbiAgICAgICAgYXdhaXQgdHhCdWlsZGVyXG4gICAgICAgICAgLmJ1aWxkKClcbiAgICAgICAgICAuc2hvdWxkLnJlamVjdGVkV2l0aCgnQWNjb3VudCBhZGRyZXNzIHRvIGNsb3NlIGNhbm5vdCBiZSB0aGUgc2FtZSBhcyB0aGUgZGVzdGluYXRpb24gYWRkcmVzcycpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgZmFpbCB3aXRoIGludmFsaWQgYWNjb3VudCBhZGRyZXNzJywgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjbG9zZUF0YUJ1aWxkZXIoKTtcbiAgICAgICAgc2hvdWxkKCgpID0+IHR4QnVpbGRlci5hY2NvdW50QWRkcmVzcygnaW52YWxpZEFkZHJlc3MnKSkudGhyb3dFcnJvcigpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgZmFpbCB3aXRoIGludmFsaWQgZGVzdGluYXRpb24gYWRkcmVzcycsICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhCdWlsZGVyID0gY2xvc2VBdGFCdWlsZGVyKCk7XG4gICAgICAgIHNob3VsZCgoKSA9PiB0eEJ1aWxkZXIuZGVzdGluYXRpb25BZGRyZXNzKCdpbnZhbGlkQWRkcmVzcycpKS50aHJvd0Vycm9yKCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBmYWlsIHdpdGggaW52YWxpZCBhdXRob3JpdHkgYWRkcmVzcycsICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhCdWlsZGVyID0gY2xvc2VBdGFCdWlsZGVyKCk7XG4gICAgICAgIHNob3VsZCgoKSA9PiB0eEJ1aWxkZXIuYXV0aG9yaXR5QWRkcmVzcygnaW52YWxpZEFkZHJlc3MnKSkudGhyb3dFcnJvcigpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgZmFpbCB3aGVuIG5vbmNlIGlzIG5vdCBwcm92aWRlZCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRDbG9zZUF0YUluaXRpYWxpemF0aW9uQnVpbGRlcigpO1xuICAgICAgICB0eEJ1aWxkZXIuc2VuZGVyKGFjY291bnQucHViKTtcbiAgICAgICAgdHhCdWlsZGVyLmFjY291bnRBZGRyZXNzKGF0YUFkZHJlc3MxKTtcbiAgICAgICAgdHhCdWlsZGVyLmRlc3RpbmF0aW9uQWRkcmVzcyhkZXN0aW5hdGlvbkFkZHJlc3MpO1xuICAgICAgICB0eEJ1aWxkZXIuYXV0aG9yaXR5QWRkcmVzcyhhY2NvdW50LnB1Yik7XG5cbiAgICAgICAgYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkuc2hvdWxkLnJlamVjdGVkV2l0aCgnSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBub25jZSBibG9ja2hhc2gnKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGZhaWwgd2hlbiBzZW5kZXIgaXMgbm90IHByb3ZpZGVkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldENsb3NlQXRhSW5pdGlhbGl6YXRpb25CdWlsZGVyKCk7XG4gICAgICAgIHR4QnVpbGRlci5ub25jZShyZWNlbnRCbG9ja0hhc2gpO1xuICAgICAgICB0eEJ1aWxkZXIuYWNjb3VudEFkZHJlc3MoYXRhQWRkcmVzczEpO1xuICAgICAgICB0eEJ1aWxkZXIuZGVzdGluYXRpb25BZGRyZXNzKGRlc3RpbmF0aW9uQWRkcmVzcyk7XG4gICAgICAgIHR4QnVpbGRlci5hdXRob3JpdHlBZGRyZXNzKGFjY291bnQucHViKTtcblxuICAgICAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKS5zaG91bGQucmVqZWN0ZWRXaXRoKCdJbnZhbGlkIHRyYW5zYWN0aW9uOiBtaXNzaW5nIHNlbmRlcicpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdCdWxrIEFUQSBjbG9zZSAoYWRkQ2xvc2VBdGFJbnN0cnVjdGlvbiknLCAoKSA9PiB7XG4gICAgZGVzY3JpYmUoJ1N1Y2NlZWQnLCAoKSA9PiB7XG4gICAgICBpdCgnYnVpbGQgYSBidWxrIGNsb3NlIEFUQSB0eCB3aXRoIG11bHRpcGxlIEFUQXMgdW5zaWduZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNsb3NlQXRhQnVpbGRlcigpO1xuICAgICAgICB0eEJ1aWxkZXIuYWRkQ2xvc2VBdGFJbnN0cnVjdGlvbihhdGFBZGRyZXNzMSwgZGVzdGluYXRpb25BZGRyZXNzLCBhY2NvdW50LnB1Yik7XG4gICAgICAgIHR4QnVpbGRlci5hZGRDbG9zZUF0YUluc3RydWN0aW9uKGF0YUFkZHJlc3MyLCBkZXN0aW5hdGlvbkFkZHJlc3MsIGFjY291bnQucHViKTtcblxuICAgICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgICB0eC50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuQ2xvc2VBc3NvY2lhdGVkVG9rZW5BY2NvdW50KTtcblxuICAgICAgICBjb25zdCByYXdUeCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG4gICAgICAgIHNob3VsZC5lcXVhbChVdGlscy5pc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHgpLCB0cnVlKTtcblxuICAgICAgICBjb25zdCBpbnN0cnVjdGlvbnMgPSB0eC50b0pzb24oKS5pbnN0cnVjdGlvbnNEYXRhO1xuICAgICAgICBpbnN0cnVjdGlvbnMubGVuZ3RoLnNob3VsZC5lcXVhbCgyKTtcblxuICAgICAgICBpbnN0cnVjdGlvbnNbMF0udHlwZS5zaG91bGQuZXF1YWwoSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQ2xvc2VBc3NvY2lhdGVkVG9rZW5BY2NvdW50KTtcbiAgICAgICAgaW5zdHJ1Y3Rpb25zWzBdLnBhcmFtcy5hY2NvdW50QWRkcmVzcy5zaG91bGQuZXF1YWwoYXRhQWRkcmVzczEpO1xuICAgICAgICBpbnN0cnVjdGlvbnNbMF0ucGFyYW1zLmRlc3RpbmF0aW9uQWRkcmVzcy5zaG91bGQuZXF1YWwoZGVzdGluYXRpb25BZGRyZXNzKTtcbiAgICAgICAgaW5zdHJ1Y3Rpb25zWzBdLnBhcmFtcy5hdXRob3JpdHlBZGRyZXNzLnNob3VsZC5lcXVhbChhY2NvdW50LnB1Yik7XG5cbiAgICAgICAgaW5zdHJ1Y3Rpb25zWzFdLnR5cGUuc2hvdWxkLmVxdWFsKEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkNsb3NlQXNzb2NpYXRlZFRva2VuQWNjb3VudCk7XG4gICAgICAgIGluc3RydWN0aW9uc1sxXS5wYXJhbXMuYWNjb3VudEFkZHJlc3Muc2hvdWxkLmVxdWFsKGF0YUFkZHJlc3MyKTtcbiAgICAgICAgaW5zdHJ1Y3Rpb25zWzFdLnBhcmFtcy5kZXN0aW5hdGlvbkFkZHJlc3Muc2hvdWxkLmVxdWFsKGRlc3RpbmF0aW9uQWRkcmVzcyk7XG4gICAgICAgIGluc3RydWN0aW9uc1sxXS5wYXJhbXMuYXV0aG9yaXR5QWRkcmVzcy5zaG91bGQuZXF1YWwoYWNjb3VudC5wdWIpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdidWlsZCBhIGJ1bGsgY2xvc2UgQVRBIHR4IHNpZ25lZCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhCdWlsZGVyID0gY2xvc2VBdGFCdWlsZGVyKCk7XG4gICAgICAgIHR4QnVpbGRlci5hZGRDbG9zZUF0YUluc3RydWN0aW9uKGF0YUFkZHJlc3MxLCBkZXN0aW5hdGlvbkFkZHJlc3MsIGFjY291bnQucHViKTtcbiAgICAgICAgdHhCdWlsZGVyLmFkZENsb3NlQXRhSW5zdHJ1Y3Rpb24oYXRhQWRkcmVzczIsIGRlc3RpbmF0aW9uQWRkcmVzcywgYWNjb3VudC5wdWIpO1xuICAgICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogYWNjb3VudC5wcnYgfSk7XG5cbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgICAgdHgudHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLkNsb3NlQXNzb2NpYXRlZFRva2VuQWNjb3VudCk7XG5cbiAgICAgICAgY29uc3QgcmF3VHggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgICBzaG91bGQuZXF1YWwoVXRpbHMuaXNWYWxpZFJhd1RyYW5zYWN0aW9uKHJhd1R4KSwgdHJ1ZSk7XG5cbiAgICAgICAgY29uc3QgaW5zdHJ1Y3Rpb25zID0gdHgudG9Kc29uKCkuaW5zdHJ1Y3Rpb25zRGF0YTtcbiAgICAgICAgaW5zdHJ1Y3Rpb25zLmxlbmd0aC5zaG91bGQuZXF1YWwoMik7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2J1aWxkIGEgc2luZ2xlIGNsb3NlIHVzaW5nIGFkZENsb3NlQXRhSW5zdHJ1Y3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNsb3NlQXRhQnVpbGRlcigpO1xuICAgICAgICB0eEJ1aWxkZXIuYWRkQ2xvc2VBdGFJbnN0cnVjdGlvbihhdGFBZGRyZXNzMSwgZGVzdGluYXRpb25BZGRyZXNzLCBhY2NvdW50LnB1Yik7XG5cbiAgICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgICAgdHgudHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLkNsb3NlQXNzb2NpYXRlZFRva2VuQWNjb3VudCk7XG5cbiAgICAgICAgY29uc3QgaW5zdHJ1Y3Rpb25zID0gdHgudG9Kc29uKCkuaW5zdHJ1Y3Rpb25zRGF0YTtcbiAgICAgICAgaW5zdHJ1Y3Rpb25zLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICAgIGluc3RydWN0aW9uc1swXS5wYXJhbXMuYWNjb3VudEFkZHJlc3Muc2hvdWxkLmVxdWFsKGF0YUFkZHJlc3MxKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnYWxsIGNsb3NlIGluc3RydWN0aW9ucyBoYXZlIHNhbWUgZGVzdGluYXRpb24gKHJvb3Qgd2FsbGV0KScsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhCdWlsZGVyID0gY2xvc2VBdGFCdWlsZGVyKCk7XG4gICAgICAgIHR4QnVpbGRlci5hZGRDbG9zZUF0YUluc3RydWN0aW9uKGF0YUFkZHJlc3MxLCBkZXN0aW5hdGlvbkFkZHJlc3MsIGFjY291bnQucHViKTtcbiAgICAgICAgdHhCdWlsZGVyLmFkZENsb3NlQXRhSW5zdHJ1Y3Rpb24oYXRhQWRkcmVzczIsIGRlc3RpbmF0aW9uQWRkcmVzcywgYWNjb3VudC5wdWIpO1xuXG4gICAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIGNvbnN0IGluc3RydWN0aW9ucyA9IHR4LnRvSnNvbigpLmluc3RydWN0aW9uc0RhdGE7XG5cbiAgICAgICAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiBpbnN0cnVjdGlvbnMpIHtcbiAgICAgICAgICBpbnN0cnVjdGlvbi5wYXJhbXMuZGVzdGluYXRpb25BZGRyZXNzLnNob3VsZC5lcXVhbChkZXN0aW5hdGlvbkFkZHJlc3MpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdGYWlsJywgKCkgPT4ge1xuICAgICAgaXQoJ3Nob3VsZCBmYWlsIHdpdGggZHVwbGljYXRlIEFUQSBhZGRyZXNzJywgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjbG9zZUF0YUJ1aWxkZXIoKTtcbiAgICAgICAgdHhCdWlsZGVyLmFkZENsb3NlQXRhSW5zdHJ1Y3Rpb24oYXRhQWRkcmVzczEsIGRlc3RpbmF0aW9uQWRkcmVzcywgYWNjb3VudC5wdWIpO1xuXG4gICAgICAgIHNob3VsZCgoKSA9PiB0eEJ1aWxkZXIuYWRkQ2xvc2VBdGFJbnN0cnVjdGlvbihhdGFBZGRyZXNzMSwgZGVzdGluYXRpb25BZGRyZXNzLCBhY2NvdW50LnB1YikpLnRocm93RXJyb3IoXG4gICAgICAgICAgJ0R1cGxpY2F0ZSBBVEEgYWRkcmVzczogJyArIGF0YUFkZHJlc3MxXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBmYWlsIHdoZW4gYWNjb3VudCBlcXVhbHMgZGVzdGluYXRpb24nLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNsb3NlQXRhQnVpbGRlcigpO1xuXG4gICAgICAgIHNob3VsZCgoKSA9PiB0eEJ1aWxkZXIuYWRkQ2xvc2VBdGFJbnN0cnVjdGlvbihkZXN0aW5hdGlvbkFkZHJlc3MsIGRlc3RpbmF0aW9uQWRkcmVzcywgYWNjb3VudC5wdWIpKS50aHJvd0Vycm9yKFxuICAgICAgICAgICdBY2NvdW50IGFkZHJlc3MgdG8gY2xvc2UgY2Fubm90IGJlIHRoZSBzYW1lIGFzIHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzJ1xuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgZmFpbCB3aXRoIGludmFsaWQgYWNjb3VudCBhZGRyZXNzJywgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjbG9zZUF0YUJ1aWxkZXIoKTtcbiAgICAgICAgc2hvdWxkKCgpID0+IHR4QnVpbGRlci5hZGRDbG9zZUF0YUluc3RydWN0aW9uKCdpbnZhbGlkJywgZGVzdGluYXRpb25BZGRyZXNzLCBhY2NvdW50LnB1YikpLnRocm93RXJyb3IoKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGZhaWwgd2l0aCBpbnZhbGlkIGRlc3RpbmF0aW9uIGFkZHJlc3MnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNsb3NlQXRhQnVpbGRlcigpO1xuICAgICAgICBzaG91bGQoKCkgPT4gdHhCdWlsZGVyLmFkZENsb3NlQXRhSW5zdHJ1Y3Rpb24oYXRhQWRkcmVzczEsICdpbnZhbGlkJywgYWNjb3VudC5wdWIpKS50aHJvd0Vycm9yKCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBmYWlsIHdpdGggaW52YWxpZCBhdXRob3JpdHkgYWRkcmVzcycsICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhCdWlsZGVyID0gY2xvc2VBdGFCdWlsZGVyKCk7XG4gICAgICAgIHNob3VsZCgoKSA9PiB0eEJ1aWxkZXIuYWRkQ2xvc2VBdGFJbnN0cnVjdGlvbihhdGFBZGRyZXNzMSwgZGVzdGluYXRpb25BZGRyZXNzLCAnaW52YWxpZCcpKS50aHJvd0Vycm9yKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ01peGluZyBzaW5nbGUtQVRBIGFuZCBidWxrIEFQSXMnLCAoKSA9PiB7XG4gICAgY29uc3QgbWl4RXJyb3JNZXNzYWdlID0gL0Nhbm5vdCBtaXggc2luZ2xlLUFUQSBBUEkgLiogd2l0aCBidWxrLUFUQSBBUEkvO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIHNpbmdsZS1BVEEgc2V0dGVyIGlzIGNhbGxlZCBhZnRlciBhZGRDbG9zZUF0YUluc3RydWN0aW9uIChhY2NvdW50QWRkcmVzcyknLCAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjbG9zZUF0YUJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5hZGRDbG9zZUF0YUluc3RydWN0aW9uKGF0YUFkZHJlc3MxLCBkZXN0aW5hdGlvbkFkZHJlc3MsIGFjY291bnQucHViKTtcbiAgICAgIHNob3VsZCgoKSA9PiB0eEJ1aWxkZXIuYWNjb3VudEFkZHJlc3MoYXRhQWRkcmVzczIpKS50aHJvdyhtaXhFcnJvck1lc3NhZ2UpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIHNpbmdsZS1BVEEgc2V0dGVyIGlzIGNhbGxlZCBhZnRlciBhZGRDbG9zZUF0YUluc3RydWN0aW9uIChkZXN0aW5hdGlvbkFkZHJlc3MpJywgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY2xvc2VBdGFCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuYWRkQ2xvc2VBdGFJbnN0cnVjdGlvbihhdGFBZGRyZXNzMSwgZGVzdGluYXRpb25BZGRyZXNzLCBhY2NvdW50LnB1Yik7XG4gICAgICBzaG91bGQoKCkgPT4gdHhCdWlsZGVyLmRlc3RpbmF0aW9uQWRkcmVzcyhhY2NvdW50Mi5wdWIpKS50aHJvdyhtaXhFcnJvck1lc3NhZ2UpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIHNpbmdsZS1BVEEgc2V0dGVyIGlzIGNhbGxlZCBhZnRlciBhZGRDbG9zZUF0YUluc3RydWN0aW9uIChhdXRob3JpdHlBZGRyZXNzKScsICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNsb3NlQXRhQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLmFkZENsb3NlQXRhSW5zdHJ1Y3Rpb24oYXRhQWRkcmVzczEsIGRlc3RpbmF0aW9uQWRkcmVzcywgYWNjb3VudC5wdWIpO1xuICAgICAgc2hvdWxkKCgpID0+IHR4QnVpbGRlci5hdXRob3JpdHlBZGRyZXNzKGFjY291bnQyLnB1YikpLnRocm93KG1peEVycm9yTWVzc2FnZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IHdoZW4gYWRkQ2xvc2VBdGFJbnN0cnVjdGlvbiBpcyBjYWxsZWQgYWZ0ZXIgc2luZ2xlLUFUQSBzZXR0ZXInLCAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjbG9zZUF0YUJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5hY2NvdW50QWRkcmVzcyhhdGFBZGRyZXNzMSk7XG4gICAgICBzaG91bGQoKCkgPT4gdHhCdWlsZGVyLmFkZENsb3NlQXRhSW5zdHJ1Y3Rpb24oYXRhQWRkcmVzczIsIGRlc3RpbmF0aW9uQWRkcmVzcywgYWNjb3VudC5wdWIpKS50aHJvdyhcbiAgICAgICAgbWl4RXJyb3JNZXNzYWdlXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBub3QgY29ycnVwdCB0aGUgZmlyc3QgYnVsayBlbnRyeSB3aGVuIGJ1bGstdGhlbi1zaW5nbGUgaXMgcmVqZWN0ZWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjbG9zZUF0YUJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5hZGRDbG9zZUF0YUluc3RydWN0aW9uKGF0YUFkZHJlc3MxLCBkZXN0aW5hdGlvbkFkZHJlc3MsIGFjY291bnQucHViKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHR4QnVpbGRlci5hY2NvdW50QWRkcmVzcyhhdGFBZGRyZXNzMik7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLyogZXhwZWN0ZWQgKi9cbiAgICAgIH1cbiAgICAgIC8vIEZpcnN0IGVudHJ5IG11c3Qgc3RpbGwgYmUgaW50YWN0IGFmdGVyIHRoZSByZWplY3RlZCBtaXggYXR0ZW1wdC5cbiAgICAgIGNvbnN0IGVudHJpZXMgPSAodHhCdWlsZGVyIGFzIHVua25vd24gYXMgeyBfY2xvc2VBdGFFbnRyaWVzOiBBcnJheTx7IGFjY291bnRBZGRyZXNzOiBzdHJpbmcgfT4gfSlcbiAgICAgICAgLl9jbG9zZUF0YUVudHJpZXM7XG4gICAgICBlbnRyaWVzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICBlbnRyaWVzWzBdLmFjY291bnRBZGRyZXNzLnNob3VsZC5lcXVhbChhdGFBZGRyZXNzMSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdGcm9tIHJhdyB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHBhcnNlIGEgc2luZ2xlIGNsb3NlIEFUQSB0eCBmcm9tIHJhdyBhbmQgcmVidWlsZCcsIGFzeW5jICgpID0+IHtcbiAgICAgIC8vIEJ1aWxkIGEgdHggZmlyc3RcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGNsb3NlQXRhQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLmFjY291bnRBZGRyZXNzKGF0YUFkZHJlc3MxKTtcbiAgICAgIHR4QnVpbGRlci5kZXN0aW5hdGlvbkFkZHJlc3MoZGVzdGluYXRpb25BZGRyZXNzKTtcbiAgICAgIHR4QnVpbGRlci5hdXRob3JpdHlBZGRyZXNzKGFjY291bnQucHViKTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICAgIGNvbnN0IHJhd1R4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcblxuICAgICAgLy8gUGFyc2UgZnJvbSByYXdcbiAgICAgIGNvbnN0IHJlYnVpbHRCdWlsZGVyID0gZmFjdG9yeS5mcm9tKHJhd1R4KTtcbiAgICAgIGNvbnN0IHJlYnVpbHRUeCA9IGF3YWl0IHJlYnVpbHRCdWlsZGVyLmJ1aWxkKCk7XG5cbiAgICAgIHJlYnVpbHRUeC50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuQ2xvc2VBc3NvY2lhdGVkVG9rZW5BY2NvdW50KTtcblxuICAgICAgY29uc3QgaW5zdHJ1Y3Rpb25zID0gcmVidWlsdFR4LnRvSnNvbigpLmluc3RydWN0aW9uc0RhdGE7XG4gICAgICBpbnN0cnVjdGlvbnMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIGluc3RydWN0aW9uc1swXS50eXBlLnNob3VsZC5lcXVhbChJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DbG9zZUFzc29jaWF0ZWRUb2tlbkFjY291bnQpO1xuICAgICAgaW5zdHJ1Y3Rpb25zWzBdLnBhcmFtcy5hY2NvdW50QWRkcmVzcy5zaG91bGQuZXF1YWwoYXRhQWRkcmVzczEpO1xuICAgICAgaW5zdHJ1Y3Rpb25zWzBdLnBhcmFtcy5kZXN0aW5hdGlvbkFkZHJlc3Muc2hvdWxkLmVxdWFsKGRlc3RpbmF0aW9uQWRkcmVzcyk7XG4gICAgICBpbnN0cnVjdGlvbnNbMF0ucGFyYW1zLmF1dGhvcml0eUFkZHJlc3Muc2hvdWxkLmVxdWFsKGFjY291bnQucHViKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcGFyc2UgYSBidWxrIGNsb3NlIEFUQSB0eCBmcm9tIHJhdyBhbmQgcmVidWlsZCcsIGFzeW5jICgpID0+IHtcbiAgICAgIC8vIEJ1aWxkIGEgYnVsayB0eCBmaXJzdFxuICAgICAgY29uc3QgdHhCdWlsZGVyID0gY2xvc2VBdGFCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuYWRkQ2xvc2VBdGFJbnN0cnVjdGlvbihhdGFBZGRyZXNzMSwgZGVzdGluYXRpb25BZGRyZXNzLCBhY2NvdW50LnB1Yik7XG4gICAgICB0eEJ1aWxkZXIuYWRkQ2xvc2VBdGFJbnN0cnVjdGlvbihhdGFBZGRyZXNzMiwgZGVzdGluYXRpb25BZGRyZXNzLCBhY2NvdW50LnB1Yik7XG5cbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCByYXdUeCA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICAgIC8vIFBhcnNlIGZyb20gcmF3XG4gICAgICBjb25zdCByZWJ1aWx0QnVpbGRlciA9IGZhY3RvcnkuZnJvbShyYXdUeCk7XG4gICAgICBjb25zdCByZWJ1aWx0VHggPSBhd2FpdCByZWJ1aWx0QnVpbGRlci5idWlsZCgpO1xuXG4gICAgICByZWJ1aWx0VHgudHlwZS5zaG91bGQuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLkNsb3NlQXNzb2NpYXRlZFRva2VuQWNjb3VudCk7XG5cbiAgICAgIGNvbnN0IGluc3RydWN0aW9ucyA9IHJlYnVpbHRUeC50b0pzb24oKS5pbnN0cnVjdGlvbnNEYXRhO1xuICAgICAgaW5zdHJ1Y3Rpb25zLmxlbmd0aC5zaG91bGQuZXF1YWwoMik7XG4gICAgICBpbnN0cnVjdGlvbnNbMF0ucGFyYW1zLmFjY291bnRBZGRyZXNzLnNob3VsZC5lcXVhbChhdGFBZGRyZXNzMSk7XG4gICAgICBpbnN0cnVjdGlvbnNbMV0ucGFyYW1zLmFjY291bnRBZGRyZXNzLnNob3VsZC5lcXVhbChhdGFBZGRyZXNzMik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlamVjdCBsZWdhY3kgc2luZ2xlLUFUQSBzZXR0ZXJzIG9uIGEgcGFyc2VkIGJ1bGsgY2xvc2UgdHgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBjbG9zZUF0YUJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5hZGRDbG9zZUF0YUluc3RydWN0aW9uKGF0YUFkZHJlc3MxLCBkZXN0aW5hdGlvbkFkZHJlc3MsIGFjY291bnQucHViKTtcbiAgICAgIHR4QnVpbGRlci5hZGRDbG9zZUF0YUluc3RydWN0aW9uKGF0YUFkZHJlc3MyLCBkZXN0aW5hdGlvbkFkZHJlc3MsIGFjY291bnQucHViKTtcbiAgICAgIGNvbnN0IHJhd1R4ID0gKGF3YWl0IHR4QnVpbGRlci5idWlsZCgpKS50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgICBjb25zdCBwYXJzZWQgPSBmYWN0b3J5LmZyb20ocmF3VHgpIGFzIENsb3NlQXRhQnVpbGRlcjtcbiAgICAgIGNvbnN0IG1peEVycm9yTWVzc2FnZSA9IC9DYW5ub3QgbWl4IHNpbmdsZS1BVEEgQVBJIC4qIHdpdGggYnVsay1BVEEgQVBJLztcbiAgICAgIHNob3VsZCgoKSA9PiBwYXJzZWQuYWNjb3VudEFkZHJlc3MoYXRhQWRkcmVzczEpKS50aHJvdyhtaXhFcnJvck1lc3NhZ2UpO1xuICAgICAgc2hvdWxkKCgpID0+IHBhcnNlZC5kZXN0aW5hdGlvbkFkZHJlc3MoZGVzdGluYXRpb25BZGRyZXNzKSkudGhyb3cobWl4RXJyb3JNZXNzYWdlKTtcbiAgICAgIHNob3VsZCgoKSA9PiBwYXJzZWQuYXV0aG9yaXR5QWRkcmVzcyhhY2NvdW50LnB1YikpLnRocm93KG1peEVycm9yTWVzc2FnZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHBhcnNlIGV4aXN0aW5nIGNsb3NlIEFUQSByYXcgdHggZnJvbSB0ZXN0IHJlc291cmNlcycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4bkJ1aWxkZXIgPSBmYWN0b3J5LmZyb20odGVzdERhdGEuVFJBTlNGRVJfVU5TSUdORURfVFhfQ0xPU0VfQVRBKTtcbiAgICAgIHNob3VsZC5leGlzdCh0eG5CdWlsZGVyKTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCB0eG5CdWlsZGVyLmJ1aWxkKCk7XG4gICAgICB0eC50eXBlLnNob3VsZC5lcXVhbChUcmFuc2FjdGlvblR5cGUuQ2xvc2VBc3NvY2lhdGVkVG9rZW5BY2NvdW50KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customInstructionBuilder.d.ts","sourceRoot":"","sources":["../../../../../test/unit/transactionBuilder/customInstructionBuilder.ts"],"names":[],"mappings":""}