@bitgo-beta/sdk-coin-sol 7.6.4-beta.39 → 7.6.4-beta.391

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/cjs/src/solToken.d.ts.map +1 -0
  79. package/dist/cjs/src/solToken.js +69 -0
  80. package/dist/cjs/src/tsol.d.ts.map +1 -0
  81. package/dist/cjs/src/tsol.js +24 -0
  82. package/dist/{test → cjs/test}/fixtures/sol.d.ts.map +1 -1
  83. package/dist/cjs/test/fixtures/sol.js +1433 -0
  84. package/dist/{test → cjs/test}/resources/sol.d.ts +27 -27
  85. package/dist/cjs/test/resources/sol.d.ts.map +1 -0
  86. package/dist/cjs/test/resources/sol.js +320 -0
  87. package/dist/cjs/test/unit/explainTransactionWasm.d.ts +5 -0
  88. package/dist/cjs/test/unit/explainTransactionWasm.d.ts.map +1 -0
  89. package/dist/cjs/test/unit/explainTransactionWasm.js +26 -0
  90. package/dist/cjs/test/unit/fixtures/solBackupKey.d.ts.map +1 -0
  91. package/dist/cjs/test/unit/fixtures/solBackupKey.js +8 -0
  92. package/dist/cjs/test/unit/getBuilderFactory.d.ts.map +1 -0
  93. package/dist/cjs/test/unit/getBuilderFactory.js +10 -0
  94. package/dist/cjs/test/unit/instructionParamsFactory.d.ts.map +1 -0
  95. package/dist/cjs/test/unit/instructionParamsFactory.js +412 -0
  96. package/dist/cjs/test/unit/instructionParamsFactory.staking.d.ts.map +1 -0
  97. package/dist/cjs/test/unit/instructionParamsFactory.staking.js +1059 -0
  98. package/dist/cjs/test/unit/jitoWasmVerification.d.ts +2 -0
  99. package/dist/cjs/test/unit/jitoWasmVerification.d.ts.map +1 -0
  100. package/dist/cjs/test/unit/jitoWasmVerification.js +78 -0
  101. package/dist/{test → cjs/test}/unit/keyPair.d.ts.map +1 -1
  102. package/dist/cjs/test/unit/keyPair.js +177 -0
  103. package/dist/cjs/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
  104. package/dist/cjs/test/unit/messages/messageBuilderFactory.js +118 -0
  105. package/dist/cjs/test/unit/messages/simpleMessageBuilder.d.ts.map +1 -0
  106. package/dist/cjs/test/unit/messages/simpleMessageBuilder.js +194 -0
  107. package/dist/{test → cjs/test}/unit/sol.d.ts.map +1 -1
  108. package/dist/cjs/test/unit/sol.js +3504 -0
  109. package/dist/cjs/test/unit/solInstructionFactory.d.ts.map +1 -0
  110. package/dist/cjs/test/unit/solInstructionFactory.js +454 -0
  111. package/dist/cjs/test/unit/solToken.d.ts.map +1 -0
  112. package/dist/cjs/test/unit/solToken.js +31 -0
  113. package/dist/cjs/test/unit/transaction.d.ts.map +1 -0
  114. package/dist/cjs/test/unit/transaction.js +1108 -0
  115. package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +1 -0
  116. package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.js +202 -0
  117. package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +1 -0
  118. package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.js +471 -0
  119. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.d.ts +2 -0
  120. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.d.ts.map +1 -0
  121. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.js +333 -0
  122. package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +1 -0
  123. package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.js +413 -0
  124. package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +1 -0
  125. package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.js +430 -0
  126. package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +1 -0
  127. package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +157 -0
  128. package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +1 -0
  129. package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.js +384 -0
  130. package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +1 -0
  131. package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.js +224 -0
  132. package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
  133. package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +259 -0
  134. package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  135. package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.js +787 -0
  136. package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  137. package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.js +495 -0
  138. package/dist/cjs/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  139. package/dist/cjs/test/unit/transactionBuilder/transferBuilder.js +286 -0
  140. package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +1 -0
  141. package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.js +862 -0
  142. package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +1 -0
  143. package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.js +259 -0
  144. package/dist/{test → cjs/test}/unit/utils.d.ts.map +1 -1
  145. package/dist/cjs/test/unit/utils.js +517 -0
  146. package/dist/cjs/test/unit/versionedTransaction.d.ts.map +1 -0
  147. package/dist/cjs/test/unit/versionedTransaction.js +207 -0
  148. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  149. package/dist/esm/bigint-buffer-guard.d.ts +1 -0
  150. package/dist/esm/config/token2022StaticConfig.d.ts +3 -0
  151. package/dist/esm/config/token2022StaticConfig.js +47 -0
  152. package/dist/esm/index.d.ts +7 -0
  153. package/dist/esm/index.js +7 -0
  154. package/dist/esm/lib/ataInitializationBuilder.d.ts +47 -0
  155. package/dist/esm/lib/ataInitializationBuilder.js +156 -0
  156. package/dist/esm/lib/closeAtaBuilder.d.ts +51 -0
  157. package/dist/esm/lib/closeAtaBuilder.d.ts.map +1 -0
  158. package/dist/esm/lib/closeAtaBuilder.js +140 -0
  159. package/dist/esm/lib/constants.d.ts +164 -0
  160. package/dist/esm/lib/constants.d.ts.map +1 -0
  161. package/dist/esm/lib/constants.js +193 -0
  162. package/dist/esm/lib/customInstructionBuilder.d.ts +72 -0
  163. package/dist/esm/lib/customInstructionBuilder.js +282 -0
  164. package/dist/esm/lib/explainTransactionWasm.d.ts +21 -0
  165. package/dist/esm/lib/explainTransactionWasm.d.ts.map +1 -0
  166. package/dist/esm/lib/explainTransactionWasm.js +261 -0
  167. package/dist/esm/lib/iface.d.ts +262 -0
  168. package/dist/esm/lib/iface.d.ts.map +1 -0
  169. package/dist/esm/lib/iface.js +3 -0
  170. package/dist/esm/lib/index.d.ts +23 -0
  171. package/dist/{src → esm}/lib/index.d.ts.map +1 -1
  172. package/dist/esm/lib/index.js +23 -0
  173. package/dist/esm/lib/instructionParamsFactory.d.ts +13 -0
  174. package/dist/{src → esm}/lib/instructionParamsFactory.d.ts.map +1 -1
  175. package/dist/esm/lib/instructionParamsFactory.js +1052 -0
  176. package/dist/esm/lib/jitoStakePoolOperations.d.ts +113 -0
  177. package/dist/esm/lib/jitoStakePoolOperations.js +189 -0
  178. package/dist/esm/lib/keyPair.d.ts +26 -0
  179. package/dist/esm/lib/keyPair.js +59 -0
  180. package/dist/esm/lib/messages/index.d.ts +2 -0
  181. package/dist/esm/lib/messages/index.js +2 -0
  182. package/dist/esm/lib/messages/messageBuilderFactory.d.ts +7 -0
  183. package/dist/{src → esm}/lib/messages/messageBuilderFactory.js +5 -9
  184. package/dist/esm/lib/recoverNestedAtaBuilder.d.ts +25 -0
  185. package/dist/esm/lib/recoverNestedAtaBuilder.d.ts.map +1 -0
  186. package/dist/esm/lib/recoverNestedAtaBuilder.js +83 -0
  187. package/dist/esm/lib/solInstructionFactory.d.ts +10 -0
  188. package/dist/esm/lib/solInstructionFactory.d.ts.map +1 -0
  189. package/dist/esm/lib/solInstructionFactory.js +589 -0
  190. package/dist/esm/lib/stakingActivateBuilder.d.ts +59 -0
  191. package/dist/esm/lib/stakingActivateBuilder.js +113 -0
  192. package/dist/esm/lib/stakingAuthorizeBuilder.d.ts +43 -0
  193. package/dist/esm/lib/stakingAuthorizeBuilder.js +82 -0
  194. package/dist/esm/lib/stakingDeactivateBuilder.d.ts +81 -0
  195. package/dist/{src → esm}/lib/stakingDeactivateBuilder.js +31 -38
  196. package/dist/esm/lib/stakingDelegateBuilder.d.ts +42 -0
  197. package/dist/esm/lib/stakingDelegateBuilder.js +113 -0
  198. package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.d.ts +33 -0
  199. package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.js +103 -0
  200. package/dist/esm/lib/stakingWithdrawBuilder.d.ts +31 -0
  201. package/dist/esm/lib/stakingWithdrawBuilder.js +71 -0
  202. package/dist/esm/lib/token2022Config.d.ts +44 -0
  203. package/dist/esm/lib/token2022Config.js +23 -0
  204. package/dist/esm/lib/tokenTransferBuilder.d.ts +41 -0
  205. package/dist/esm/lib/tokenTransferBuilder.js +181 -0
  206. package/dist/esm/lib/transaction.d.ts +103 -0
  207. package/dist/esm/lib/transaction.d.ts.map +1 -0
  208. package/dist/esm/lib/transaction.js +605 -0
  209. package/dist/esm/lib/transactionBuilder.d.ts +128 -0
  210. package/dist/esm/lib/transactionBuilder.js +373 -0
  211. package/dist/esm/lib/transactionBuilderFactory.d.ts +120 -0
  212. package/dist/esm/lib/transactionBuilderFactory.d.ts.map +1 -0
  213. package/dist/esm/lib/transactionBuilderFactory.js +205 -0
  214. package/dist/esm/lib/transferBuilder.d.ts +26 -0
  215. package/dist/esm/lib/transferBuilder.js +63 -0
  216. package/dist/esm/lib/transferBuilderV2.d.ts +43 -0
  217. package/dist/esm/lib/transferBuilderV2.js +203 -0
  218. package/dist/esm/lib/utils.d.ts +200 -0
  219. package/dist/{src → esm}/lib/utils.d.ts.map +1 -1
  220. package/dist/esm/lib/utils.js +567 -0
  221. package/dist/esm/lib/walletInitializationBuilder.d.ts +26 -0
  222. package/dist/esm/lib/walletInitializationBuilder.js +64 -0
  223. package/dist/esm/register.d.ts +3 -0
  224. package/dist/esm/register.js +11 -0
  225. package/dist/esm/sol.d.ts +280 -0
  226. package/dist/esm/sol.d.ts.map +1 -0
  227. package/dist/esm/sol.js +1423 -0
  228. package/dist/esm/solToken.d.ts +37 -0
  229. package/dist/esm/solToken.js +65 -0
  230. package/dist/esm/tsol.d.ts +11 -0
  231. package/dist/esm/tsol.js +20 -0
  232. package/package.json +35 -16
  233. package/dist/src/config/token2022StaticConfig.js +0 -50
  234. package/dist/src/lib/ataInitializationBuilder.js +0 -196
  235. package/dist/src/lib/closeAtaBuilder.d.ts +0 -19
  236. package/dist/src/lib/closeAtaBuilder.d.ts.map +0 -1
  237. package/dist/src/lib/closeAtaBuilder.js +0 -69
  238. package/dist/src/lib/constants.d.ts.map +0 -1
  239. package/dist/src/lib/constants.js +0 -171
  240. package/dist/src/lib/customInstructionBuilder.js +0 -289
  241. package/dist/src/lib/iface.d.ts.map +0 -1
  242. package/dist/src/lib/iface.js +0 -7
  243. package/dist/src/lib/instructionParamsFactory.js +0 -1036
  244. package/dist/src/lib/jitoStakePoolOperations.js +0 -200
  245. package/dist/src/lib/keyPair.js +0 -63
  246. package/dist/src/lib/solInstructionFactory.d.ts.map +0 -1
  247. package/dist/src/lib/solInstructionFactory.js +0 -572
  248. package/dist/src/lib/stakingActivateBuilder.js +0 -120
  249. package/dist/src/lib/stakingAuthorizeBuilder.js +0 -89
  250. package/dist/src/lib/stakingDelegateBuilder.js +0 -120
  251. package/dist/src/lib/stakingRawMsgAuthorizeBuilder.js +0 -110
  252. package/dist/src/lib/stakingWithdrawBuilder.js +0 -78
  253. package/dist/src/lib/token2022Config.js +0 -27
  254. package/dist/src/lib/tokenTransferBuilder.js +0 -188
  255. package/dist/src/lib/transaction.d.ts.map +0 -1
  256. package/dist/src/lib/transaction.js +0 -595
  257. package/dist/src/lib/transactionBuilder.js +0 -380
  258. package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
  259. package/dist/src/lib/transactionBuilderFactory.js +0 -202
  260. package/dist/src/lib/transferBuilder.js +0 -70
  261. package/dist/src/lib/transferBuilderV2.js +0 -210
  262. package/dist/src/lib/utils.js +0 -589
  263. package/dist/src/lib/walletInitializationBuilder.js +0 -71
  264. package/dist/src/register.js +0 -15
  265. package/dist/src/sol.d.ts.map +0 -1
  266. package/dist/src/sol.js +0 -1285
  267. package/dist/src/solToken.js +0 -69
  268. package/dist/src/tsol.js +0 -24
  269. package/dist/test/fixtures/sol.js +0 -1433
  270. package/dist/test/resources/sol.d.ts.map +0 -1
  271. package/dist/test/resources/sol.js +0 -320
  272. package/dist/test/unit/fixtures/solBackupKey.d.ts.map +0 -1
  273. package/dist/test/unit/fixtures/solBackupKey.js +0 -8
  274. package/dist/test/unit/getBuilderFactory.d.ts.map +0 -1
  275. package/dist/test/unit/getBuilderFactory.js +0 -10
  276. package/dist/test/unit/instructionParamsFactory.d.ts.map +0 -1
  277. package/dist/test/unit/instructionParamsFactory.js +0 -412
  278. package/dist/test/unit/instructionParamsFactory.staking.d.ts.map +0 -1
  279. package/dist/test/unit/instructionParamsFactory.staking.js +0 -1059
  280. package/dist/test/unit/keyPair.js +0 -177
  281. package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +0 -1
  282. package/dist/test/unit/messages/messageBuilderFactory.js +0 -118
  283. package/dist/test/unit/messages/simpleMessageBuilder.d.ts.map +0 -1
  284. package/dist/test/unit/messages/simpleMessageBuilder.js +0 -194
  285. package/dist/test/unit/sol.js +0 -3108
  286. package/dist/test/unit/solInstructionFactory.d.ts.map +0 -1
  287. package/dist/test/unit/solInstructionFactory.js +0 -454
  288. package/dist/test/unit/solToken.d.ts.map +0 -1
  289. package/dist/test/unit/solToken.js +0 -31
  290. package/dist/test/unit/transaction.d.ts.map +0 -1
  291. package/dist/test/unit/transaction.js +0 -983
  292. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +0 -1
  293. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.js +0 -202
  294. package/dist/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +0 -1
  295. package/dist/test/unit/transactionBuilder/ataInitBuilder.js +0 -471
  296. package/dist/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +0 -1
  297. package/dist/test/unit/transactionBuilder/customInstructionBuilder.js +0 -413
  298. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +0 -1
  299. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.js +0 -430
  300. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +0 -1
  301. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +0 -157
  302. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +0 -1
  303. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.js +0 -384
  304. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +0 -1
  305. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.js +0 -224
  306. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -1
  307. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +0 -259
  308. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +0 -1
  309. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +0 -787
  310. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +0 -1
  311. package/dist/test/unit/transactionBuilder/transactionBuilder.js +0 -495
  312. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +0 -1
  313. package/dist/test/unit/transactionBuilder/transferBuilder.js +0 -286
  314. package/dist/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +0 -1
  315. package/dist/test/unit/transactionBuilder/transferBuilderV2.js +0 -862
  316. package/dist/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +0 -1
  317. package/dist/test/unit/transactionBuilder/walletInitBuilder.js +0 -259
  318. package/dist/test/unit/utils.js +0 -517
  319. package/dist/test/unit/versionedTransaction.d.ts.map +0 -1
  320. package/dist/test/unit/versionedTransaction.js +0 -207
  321. package/dist/tsconfig.tsbuildinfo +0 -1
  322. /package/dist/{src → cjs/src}/bigint-buffer-guard.d.ts +0 -0
  323. /package/dist/{src → cjs/src}/config/token2022StaticConfig.d.ts +0 -0
  324. /package/dist/{src → cjs/src}/index.d.ts +0 -0
  325. /package/dist/{src → cjs/src}/lib/ataInitializationBuilder.d.ts +0 -0
  326. /package/dist/{src → cjs/src}/lib/customInstructionBuilder.d.ts +0 -0
  327. /package/dist/{src → cjs/src}/lib/jitoStakePoolOperations.d.ts +0 -0
  328. /package/dist/{src → cjs/src}/lib/keyPair.d.ts +0 -0
  329. /package/dist/{src → cjs/src}/lib/messages/index.d.ts +0 -0
  330. /package/dist/{src → cjs/src}/lib/messages/messageBuilderFactory.d.ts +0 -0
  331. /package/dist/{src → cjs/src}/lib/solInstructionFactory.d.ts +0 -0
  332. /package/dist/{src → cjs/src}/lib/stakingActivateBuilder.d.ts +0 -0
  333. /package/dist/{src → cjs/src}/lib/stakingAuthorizeBuilder.d.ts +0 -0
  334. /package/dist/{src → cjs/src}/lib/stakingDeactivateBuilder.d.ts +0 -0
  335. /package/dist/{src → cjs/src}/lib/stakingDelegateBuilder.d.ts +0 -0
  336. /package/dist/{src → cjs/src}/lib/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
  337. /package/dist/{src → cjs/src}/lib/stakingWithdrawBuilder.d.ts +0 -0
  338. /package/dist/{src → cjs/src}/lib/token2022Config.d.ts +0 -0
  339. /package/dist/{src → cjs/src}/lib/tokenTransferBuilder.d.ts +0 -0
  340. /package/dist/{src → cjs/src}/lib/transaction.d.ts +0 -0
  341. /package/dist/{src → cjs/src}/lib/transactionBuilder.d.ts +0 -0
  342. /package/dist/{src → cjs/src}/lib/transferBuilder.d.ts +0 -0
  343. /package/dist/{src → cjs/src}/lib/transferBuilderV2.d.ts +0 -0
  344. /package/dist/{src → cjs/src}/lib/utils.d.ts +0 -0
  345. /package/dist/{src → cjs/src}/lib/walletInitializationBuilder.d.ts +0 -0
  346. /package/dist/{src → cjs/src}/register.d.ts +0 -0
  347. /package/dist/{src → cjs/src}/solToken.d.ts +0 -0
  348. /package/dist/{src → cjs/src}/tsol.d.ts +0 -0
  349. /package/dist/{test → cjs/test}/fixtures/sol.d.ts +0 -0
  350. /package/dist/{test → cjs/test}/unit/fixtures/solBackupKey.d.ts +0 -0
  351. /package/dist/{test → cjs/test}/unit/getBuilderFactory.d.ts +0 -0
  352. /package/dist/{test → cjs/test}/unit/instructionParamsFactory.d.ts +0 -0
  353. /package/dist/{test → cjs/test}/unit/instructionParamsFactory.staking.d.ts +0 -0
  354. /package/dist/{test → cjs/test}/unit/keyPair.d.ts +0 -0
  355. /package/dist/{test → cjs/test}/unit/messages/messageBuilderFactory.d.ts +0 -0
  356. /package/dist/{test → cjs/test}/unit/messages/simpleMessageBuilder.d.ts +0 -0
  357. /package/dist/{test → cjs/test}/unit/sol.d.ts +0 -0
  358. /package/dist/{test → cjs/test}/unit/solInstructionFactory.d.ts +0 -0
  359. /package/dist/{test → cjs/test}/unit/solToken.d.ts +0 -0
  360. /package/dist/{test → cjs/test}/unit/transaction.d.ts +0 -0
  361. /package/dist/{test → cjs/test}/unit/transactionBuilder/StakingWithdrawBuilder.d.ts +0 -0
  362. /package/dist/{test → cjs/test}/unit/transactionBuilder/ataInitBuilder.d.ts +0 -0
  363. /package/dist/{test → cjs/test}/unit/transactionBuilder/customInstructionBuilder.d.ts +0 -0
  364. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingActivateBuilder.d.ts +0 -0
  365. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts +0 -0
  366. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDeactivateBuilder.d.ts +0 -0
  367. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDelegateBuilder.d.ts +0 -0
  368. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
  369. /package/dist/{test → cjs/test}/unit/transactionBuilder/tokenTransferBuilder.d.ts +0 -0
  370. /package/dist/{test → cjs/test}/unit/transactionBuilder/transactionBuilder.d.ts +0 -0
  371. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilder.d.ts +0 -0
  372. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilderV2.d.ts +0 -0
  373. /package/dist/{test → cjs/test}/unit/transactionBuilder/walletInitBuilder.d.ts +0 -0
  374. /package/dist/{test → cjs/test}/unit/utils.d.ts +0 -0
  375. /package/dist/{test → cjs/test}/unit/versionedTransaction.d.ts +0 -0
  376. /package/dist/{src → esm}/bigint-buffer-guard.d.ts.map +0 -0
  377. /package/dist/{src → esm}/bigint-buffer-guard.js +0 -0
  378. /package/dist/{src → esm}/config/token2022StaticConfig.d.ts.map +0 -0
  379. /package/dist/{src → esm}/index.d.ts.map +0 -0
  380. /package/dist/{src → esm}/lib/ataInitializationBuilder.d.ts.map +0 -0
  381. /package/dist/{src → esm}/lib/customInstructionBuilder.d.ts.map +0 -0
  382. /package/dist/{src → esm}/lib/jitoStakePoolOperations.d.ts.map +0 -0
  383. /package/dist/{src → esm}/lib/keyPair.d.ts.map +0 -0
  384. /package/dist/{src → esm}/lib/messages/index.d.ts.map +0 -0
  385. /package/dist/{src → esm}/lib/messages/messageBuilderFactory.d.ts.map +0 -0
  386. /package/dist/{src → esm}/lib/stakingActivateBuilder.d.ts.map +0 -0
  387. /package/dist/{src → esm}/lib/stakingAuthorizeBuilder.d.ts.map +0 -0
  388. /package/dist/{src → esm}/lib/stakingDeactivateBuilder.d.ts.map +0 -0
  389. /package/dist/{src → esm}/lib/stakingDelegateBuilder.d.ts.map +0 -0
  390. /package/dist/{src → esm}/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -0
  391. /package/dist/{src → esm}/lib/stakingWithdrawBuilder.d.ts.map +0 -0
  392. /package/dist/{src → esm}/lib/token2022Config.d.ts.map +0 -0
  393. /package/dist/{src → esm}/lib/tokenTransferBuilder.d.ts.map +0 -0
  394. /package/dist/{src → esm}/lib/transactionBuilder.d.ts.map +0 -0
  395. /package/dist/{src → esm}/lib/transferBuilder.d.ts.map +0 -0
  396. /package/dist/{src → esm}/lib/transferBuilderV2.d.ts.map +0 -0
  397. /package/dist/{src → esm}/lib/walletInitializationBuilder.d.ts.map +0 -0
  398. /package/dist/{src → esm}/register.d.ts.map +0 -0
  399. /package/dist/{src → esm}/solToken.d.ts.map +0 -0
  400. /package/dist/{src → esm}/tsol.d.ts.map +0 -0
@@ -0,0 +1,282 @@
1
+ import { BuildTransactionError, TransactionType } from '@bitgo-beta/sdk-core';
2
+ import { PublicKey, SystemProgram, SYSVAR_RECENT_BLOCKHASHES_PUBKEY } from '@solana/web3.js';
3
+ import { Transaction } from './transaction';
4
+ import { TransactionBuilder } from './transactionBuilder';
5
+ import { InstructionBuilderTypes } from './constants';
6
+ import { isSolLegacyInstruction } from './utils';
7
+ import assert from 'assert';
8
+ /**
9
+ * Transaction builder for custom Solana instructions.
10
+ * Allows building transactions with any set of raw Solana instructions.
11
+ */
12
+ export class CustomInstructionBuilder extends TransactionBuilder {
13
+ constructor(_coinConfig) {
14
+ super(_coinConfig);
15
+ this._customInstructions = [];
16
+ }
17
+ get transactionType() {
18
+ return TransactionType.CustomTx;
19
+ }
20
+ /**
21
+ * Initialize the builder from an existing transaction
22
+ */
23
+ initBuilder(tx) {
24
+ super.initBuilder(tx);
25
+ for (const instruction of this._instructionsData) {
26
+ if (instruction.type === InstructionBuilderTypes.CustomInstruction) {
27
+ const customInstruction = instruction;
28
+ this.addCustomInstruction(customInstruction.params);
29
+ }
30
+ else if (instruction.type === InstructionBuilderTypes.VersionedCustomInstruction) {
31
+ const versionedCustomInstruction = instruction;
32
+ this.addCustomInstruction(versionedCustomInstruction.params);
33
+ }
34
+ }
35
+ }
36
+ /**
37
+ * Add a custom instruction to the transaction
38
+ * @param instruction - The custom instruction to add
39
+ * @returns This builder instance
40
+ */
41
+ addCustomInstruction(instruction) {
42
+ this.validateInstruction(instruction);
43
+ if (isSolLegacyInstruction(instruction)) {
44
+ const customInstruction = {
45
+ type: InstructionBuilderTypes.CustomInstruction,
46
+ params: instruction,
47
+ };
48
+ this._customInstructions.push(customInstruction);
49
+ }
50
+ else {
51
+ const versionedCustomInstruction = {
52
+ type: InstructionBuilderTypes.VersionedCustomInstruction,
53
+ params: instruction,
54
+ };
55
+ this._customInstructions.push(versionedCustomInstruction);
56
+ }
57
+ return this;
58
+ }
59
+ /**
60
+ * Add multiple custom instructions to the transaction
61
+ * @param instructions - Array of custom instructions to add
62
+ * @returns This builder instance
63
+ */
64
+ addCustomInstructions(instructions) {
65
+ if (!Array.isArray(instructions)) {
66
+ throw new BuildTransactionError('Instructions must be an array');
67
+ }
68
+ for (const instruction of instructions) {
69
+ this.addCustomInstruction(instruction);
70
+ }
71
+ return this;
72
+ }
73
+ /**
74
+ * Build transaction from deconstructed VersionedTransaction data
75
+ * @param data - VersionedTransactionData containing instructions, ALTs, and account keys
76
+ * @returns This builder instance
77
+ */
78
+ fromVersionedTransactionData(data) {
79
+ try {
80
+ if (!data || typeof data !== 'object') {
81
+ throw new BuildTransactionError('VersionedTransactionData must be a valid object');
82
+ }
83
+ if (!Array.isArray(data.versionedInstructions) || data.versionedInstructions.length === 0) {
84
+ throw new BuildTransactionError('versionedInstructions must be a non-empty array');
85
+ }
86
+ if (!Array.isArray(data.addressLookupTables)) {
87
+ throw new BuildTransactionError('addressLookupTables must be an array');
88
+ }
89
+ if (!Array.isArray(data.staticAccountKeys) || data.staticAccountKeys.length === 0) {
90
+ throw new BuildTransactionError('staticAccountKeys must be a non-empty array');
91
+ }
92
+ if (!data.messageHeader || typeof data.messageHeader !== 'object') {
93
+ throw new BuildTransactionError('messageHeader must be a valid object');
94
+ }
95
+ if (typeof data.messageHeader.numRequiredSignatures !== 'number' ||
96
+ data.messageHeader.numRequiredSignatures < 0) {
97
+ throw new BuildTransactionError('messageHeader.numRequiredSignatures must be a non-negative number');
98
+ }
99
+ if (typeof data.messageHeader.numReadonlySignedAccounts !== 'number' ||
100
+ data.messageHeader.numReadonlySignedAccounts < 0) {
101
+ throw new BuildTransactionError('messageHeader.numReadonlySignedAccounts must be a non-negative number');
102
+ }
103
+ if (typeof data.messageHeader.numReadonlyUnsignedAccounts !== 'number' ||
104
+ data.messageHeader.numReadonlyUnsignedAccounts < 0) {
105
+ throw new BuildTransactionError('messageHeader.numReadonlyUnsignedAccounts must be a non-negative number');
106
+ }
107
+ let processedData = data;
108
+ if (this._nonceInfo && this._nonceInfo.params) {
109
+ processedData = this.injectNonceAdvanceInstruction(data);
110
+ }
111
+ this.addCustomInstructions(processedData.versionedInstructions);
112
+ if (!this._transaction) {
113
+ this._transaction = new Transaction(this._coinConfig);
114
+ }
115
+ this._transaction.setVersionedTransactionData(processedData);
116
+ this._transaction.setTransactionType(TransactionType.CustomTx);
117
+ if (!this._sender && processedData.staticAccountKeys.length > 0) {
118
+ this._sender = processedData.staticAccountKeys[0];
119
+ }
120
+ return this;
121
+ }
122
+ catch (error) {
123
+ if (error instanceof BuildTransactionError) {
124
+ throw error;
125
+ }
126
+ throw new BuildTransactionError(`Failed to process versioned transaction data: ${error.message}`);
127
+ }
128
+ }
129
+ /**
130
+ * Inject nonce advance instruction into versioned transaction data for durable nonce support.
131
+ * Reorders accounts so signers appear first (required by Solana MessageV0 format).
132
+ * @param data - Original versioned transaction data
133
+ * @returns Modified versioned transaction data with nonce advance instruction
134
+ * @private
135
+ */
136
+ injectNonceAdvanceInstruction(data) {
137
+ const { walletNonceAddress, authWalletAddress } = this._nonceInfo.params;
138
+ const SYSTEM_PROGRAM = SystemProgram.programId.toBase58();
139
+ const SYSVAR_RECENT_BLOCKHASHES = SYSVAR_RECENT_BLOCKHASHES_PUBKEY.toBase58();
140
+ const numSigners = data.messageHeader.numRequiredSignatures;
141
+ const originalSigners = data.staticAccountKeys.slice(0, numSigners);
142
+ const originalNonSigners = data.staticAccountKeys.slice(numSigners);
143
+ if (!originalSigners.includes(authWalletAddress)) {
144
+ originalSigners.push(authWalletAddress);
145
+ }
146
+ const nonSigners = [...originalNonSigners];
147
+ const allKeys = [...originalSigners, ...originalNonSigners];
148
+ if (!allKeys.includes(SYSTEM_PROGRAM))
149
+ nonSigners.push(SYSTEM_PROGRAM);
150
+ if (!allKeys.includes(walletNonceAddress))
151
+ nonSigners.push(walletNonceAddress);
152
+ if (!allKeys.includes(SYSVAR_RECENT_BLOCKHASHES))
153
+ nonSigners.push(SYSVAR_RECENT_BLOCKHASHES);
154
+ const newStaticAccountKeys = [...originalSigners, ...nonSigners];
155
+ const nonceAdvanceInstruction = {
156
+ programIdIndex: newStaticAccountKeys.indexOf(SYSTEM_PROGRAM),
157
+ accountKeyIndexes: [
158
+ newStaticAccountKeys.indexOf(walletNonceAddress),
159
+ newStaticAccountKeys.indexOf(SYSVAR_RECENT_BLOCKHASHES),
160
+ newStaticAccountKeys.indexOf(authWalletAddress),
161
+ ],
162
+ data: '6vx8P', // SystemProgram AdvanceNonceAccount (0x04000000) in base58
163
+ };
164
+ const indexMap = new Map(data.staticAccountKeys.map((key, oldIdx) => [oldIdx, newStaticAccountKeys.indexOf(key)]));
165
+ const remappedInstructions = data.versionedInstructions.map((inst) => ({
166
+ programIdIndex: indexMap.get(inst.programIdIndex) ?? inst.programIdIndex,
167
+ accountKeyIndexes: inst.accountKeyIndexes.map((idx) => indexMap.get(idx) ?? idx),
168
+ data: inst.data,
169
+ }));
170
+ return {
171
+ ...data,
172
+ versionedInstructions: [nonceAdvanceInstruction, ...remappedInstructions],
173
+ staticAccountKeys: newStaticAccountKeys,
174
+ messageHeader: {
175
+ ...data.messageHeader,
176
+ numRequiredSignatures: originalSigners.length,
177
+ },
178
+ };
179
+ }
180
+ /**
181
+ * Clear all custom instructions and versioned transaction data
182
+ * @returns This builder instance
183
+ */
184
+ clearInstructions() {
185
+ this._customInstructions = [];
186
+ if (this._transaction) {
187
+ this._transaction.setVersionedTransactionData(undefined);
188
+ }
189
+ return this;
190
+ }
191
+ /**
192
+ * Get the current custom instructions
193
+ * @returns Array of custom instructions
194
+ */
195
+ getInstructions() {
196
+ return [...this._customInstructions];
197
+ }
198
+ /**
199
+ * Validate custom instruction format
200
+ * @param instruction - The instruction to validate
201
+ */
202
+ validateInstruction(instruction) {
203
+ if (!instruction) {
204
+ throw new BuildTransactionError('Instruction cannot be null or undefined');
205
+ }
206
+ if (isSolLegacyInstruction(instruction)) {
207
+ this.validateSolInstruction(instruction);
208
+ }
209
+ else {
210
+ this.validateVersionedInstruction(instruction);
211
+ }
212
+ }
213
+ /**
214
+ * Validate traditional SolInstruction format
215
+ * @param instruction - The traditional instruction to validate
216
+ */
217
+ validateSolInstruction(instruction) {
218
+ if (!instruction.programId || typeof instruction.programId !== 'string') {
219
+ throw new BuildTransactionError('Instruction must have a valid programId string');
220
+ }
221
+ // Validate that programId is a valid Solana public key
222
+ try {
223
+ new PublicKey(instruction.programId);
224
+ }
225
+ catch (error) {
226
+ throw new BuildTransactionError('Invalid programId format');
227
+ }
228
+ if (!instruction.keys || !Array.isArray(instruction.keys)) {
229
+ throw new BuildTransactionError('Instruction must have valid keys array');
230
+ }
231
+ // Validate each key
232
+ for (const key of instruction.keys) {
233
+ if (!key.pubkey || typeof key.pubkey !== 'string') {
234
+ throw new BuildTransactionError('Each key must have a valid pubkey string');
235
+ }
236
+ try {
237
+ new PublicKey(key.pubkey);
238
+ }
239
+ catch (error) {
240
+ throw new BuildTransactionError('Invalid pubkey format in keys');
241
+ }
242
+ if (typeof key.isSigner !== 'boolean') {
243
+ throw new BuildTransactionError('Each key must have a boolean isSigner field');
244
+ }
245
+ if (typeof key.isWritable !== 'boolean') {
246
+ throw new BuildTransactionError('Each key must have a boolean isWritable field');
247
+ }
248
+ }
249
+ if (instruction.data === undefined || typeof instruction.data !== 'string') {
250
+ throw new BuildTransactionError('Instruction must have valid data string');
251
+ }
252
+ }
253
+ /**
254
+ * Validate versioned instruction format
255
+ * @param instruction - The versioned instruction to validate
256
+ */
257
+ validateVersionedInstruction(instruction) {
258
+ if (typeof instruction.programIdIndex !== 'number' || instruction.programIdIndex < 0) {
259
+ throw new BuildTransactionError('Versioned instruction must have a valid programIdIndex number');
260
+ }
261
+ if (!instruction.accountKeyIndexes || !Array.isArray(instruction.accountKeyIndexes)) {
262
+ throw new BuildTransactionError('Versioned instruction must have valid accountKeyIndexes array');
263
+ }
264
+ // Validate each account key index
265
+ for (const index of instruction.accountKeyIndexes) {
266
+ if (typeof index !== 'number' || index < 0) {
267
+ throw new BuildTransactionError('Each accountKeyIndex must be a non-negative number');
268
+ }
269
+ }
270
+ if (instruction.data === undefined || typeof instruction.data !== 'string') {
271
+ throw new BuildTransactionError('Versioned instruction must have valid data string');
272
+ }
273
+ }
274
+ /** @inheritdoc */
275
+ async buildImplementation() {
276
+ assert(this._customInstructions.length > 0, 'At least one custom instruction must be specified');
277
+ // Set the instructions data to our custom instructions
278
+ this._instructionsData = [...this._customInstructions];
279
+ return await super.buildImplementation();
280
+ }
281
+ }
282
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tSW5zdHJ1Y3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jdXN0b21JbnN0cnVjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHFCQUFxQixFQUEyQyxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2SCxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXRELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNqRCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUI7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGtCQUFrQjtJQUc5RCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUhiLHdCQUFtQixHQUF1RCxFQUFFLENBQUM7SUFJckYsQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLGVBQWUsQ0FBQyxRQUFRLENBQUM7SUFDbEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVyxDQUFDLEVBQWU7UUFDekIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV0QixLQUFLLE1BQU0sV0FBVyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2pELElBQUksV0FBVyxDQUFDLElBQUksS0FBSyx1QkFBdUIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUNuRSxNQUFNLGlCQUFpQixHQUFHLFdBQWdDLENBQUM7Z0JBQzNELElBQUksQ0FBQyxv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QUFxQixDQUFDLG9EQUFvRCxDQUFDLENBQUM7WUFDeEYsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLFdBQVcsQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLE9BQU8sV0FBVyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMzRSxNQUFNLElBQUkscUJBQXFCLENBQUMsbURBQW1ELENBQUMsQ0FBQztRQUN2RixDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNSLEtBQUssQ0FBQyxtQkFBbUI7UUFDakMsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLG1EQUFtRCxDQUFDLENBQUM7UUFFakcsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFdkQsT0FBTyxNQUFNLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzNDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgU29sSW5zdHJ1Y3Rpb24sIFNvbFZlcnNpb25lZEluc3RydWN0aW9uLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBQdWJsaWNLZXksIFN5c3RlbVByb2dyYW0sIFNZU1ZBUl9SRUNFTlRfQkxPQ0tIQVNIRVNfUFVCS0VZIH0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IEN1c3RvbUluc3RydWN0aW9uLCBWZXJzaW9uZWRDdXN0b21JbnN0cnVjdGlvbiwgVmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBpc1NvbExlZ2FjeUluc3RydWN0aW9uIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbi8qKlxuICogVHJhbnNhY3Rpb24gYnVpbGRlciBmb3IgY3VzdG9tIFNvbGFuYSBpbnN0cnVjdGlvbnMuXG4gKiBBbGxvd3MgYnVpbGRpbmcgdHJhbnNhY3Rpb25zIHdpdGggYW55IHNldCBvZiByYXcgU29sYW5hIGluc3RydWN0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIEN1c3RvbUluc3RydWN0aW9uQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgX2N1c3RvbUluc3RydWN0aW9uczogKEN1c3RvbUluc3RydWN0aW9uIHwgVmVyc2lvbmVkQ3VzdG9tSW5zdHJ1Y3Rpb24pW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuQ3VzdG9tVHg7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgYnVpbGRlciBmcm9tIGFuIGV4aXN0aW5nIHRyYW5zYWN0aW9uXG4gICAqL1xuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG5cbiAgICBmb3IgKGNvbnN0IGluc3RydWN0aW9uIG9mIHRoaXMuX2luc3RydWN0aW9uc0RhdGEpIHtcbiAgICAgIGlmIChpbnN0cnVjdGlvbi50eXBlID09PSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DdXN0b21JbnN0cnVjdGlvbikge1xuICAgICAgICBjb25zdCBjdXN0b21JbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uIGFzIEN1c3RvbUluc3RydWN0aW9uO1xuICAgICAgICB0aGlzLmFkZEN1c3RvbUluc3RydWN0aW9uKGN1c3RvbUluc3RydWN0aW9uLnBhcmFtcyk7XG4gICAgICB9IGVsc2UgaWYgKGluc3RydWN0aW9uLnR5cGUgPT09IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlZlcnNpb25lZEN1c3RvbUluc3RydWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IHZlcnNpb25lZEN1c3RvbUluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb24gYXMgVmVyc2lvbmVkQ3VzdG9tSW5zdHJ1Y3Rpb247XG4gICAgICAgIHRoaXMuYWRkQ3VzdG9tSW5zdHJ1Y3Rpb24odmVyc2lvbmVkQ3VzdG9tSW5zdHJ1Y3Rpb24ucGFyYW1zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgY3VzdG9tIGluc3RydWN0aW9uIHRvIHRoZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gaW5zdHJ1Y3Rpb24gLSBUaGUgY3VzdG9tIGluc3RydWN0aW9uIHRvIGFkZFxuICAgKiBAcmV0dXJucyBUaGlzIGJ1aWxkZXIgaW5zdGFuY2VcbiAgICovXG4gIGFkZEN1c3RvbUluc3RydWN0aW9uKGluc3RydWN0aW9uOiBTb2xJbnN0cnVjdGlvbiB8IFNvbFZlcnNpb25lZEluc3RydWN0aW9uKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZUluc3RydWN0aW9uKGluc3RydWN0aW9uKTtcblxuICAgIGlmIChpc1NvbExlZ2FjeUluc3RydWN0aW9uKGluc3RydWN0aW9uKSkge1xuICAgICAgY29uc3QgY3VzdG9tSW5zdHJ1Y3Rpb246IEN1c3RvbUluc3RydWN0aW9uID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DdXN0b21JbnN0cnVjdGlvbixcbiAgICAgICAgcGFyYW1zOiBpbnN0cnVjdGlvbixcbiAgICAgIH07XG4gICAgICB0aGlzLl9jdXN0b21JbnN0cnVjdGlvbnMucHVzaChjdXN0b21JbnN0cnVjdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZlcnNpb25lZEN1c3RvbUluc3RydWN0aW9uOiBWZXJzaW9uZWRDdXN0b21JbnN0cnVjdGlvbiA9IHtcbiAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuVmVyc2lvbmVkQ3VzdG9tSW5zdHJ1Y3Rpb24sXG4gICAgICAgIHBhcmFtczogaW5zdHJ1Y3Rpb24sXG4gICAgICB9O1xuICAgICAgdGhpcy5fY3VzdG9tSW5zdHJ1Y3Rpb25zLnB1c2godmVyc2lvbmVkQ3VzdG9tSW5zdHJ1Y3Rpb24pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBtdWx0aXBsZSBjdXN0b20gaW5zdHJ1Y3Rpb25zIHRvIHRoZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gaW5zdHJ1Y3Rpb25zIC0gQXJyYXkgb2YgY3VzdG9tIGluc3RydWN0aW9ucyB0byBhZGRcbiAgICogQHJldHVybnMgVGhpcyBidWlsZGVyIGluc3RhbmNlXG4gICAqL1xuICBhZGRDdXN0b21JbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25zOiAoU29sSW5zdHJ1Y3Rpb24gfCBTb2xWZXJzaW9uZWRJbnN0cnVjdGlvbilbXSk6IHRoaXMge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShpbnN0cnVjdGlvbnMpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnN0cnVjdGlvbnMgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGluc3RydWN0aW9uIG9mIGluc3RydWN0aW9ucykge1xuICAgICAgdGhpcy5hZGRDdXN0b21JbnN0cnVjdGlvbihpbnN0cnVjdGlvbik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHRyYW5zYWN0aW9uIGZyb20gZGVjb25zdHJ1Y3RlZCBWZXJzaW9uZWRUcmFuc2FjdGlvbiBkYXRhXG4gICAqIEBwYXJhbSBkYXRhIC0gVmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhIGNvbnRhaW5pbmcgaW5zdHJ1Y3Rpb25zLCBBTFRzLCBhbmQgYWNjb3VudCBrZXlzXG4gICAqIEByZXR1cm5zIFRoaXMgYnVpbGRlciBpbnN0YW5jZVxuICAgKi9cbiAgZnJvbVZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YShkYXRhOiBWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEpOiB0aGlzIHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFkYXRhIHx8IHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0Jykge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEgbXVzdCBiZSBhIHZhbGlkIG9iamVjdCcpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YS52ZXJzaW9uZWRJbnN0cnVjdGlvbnMpIHx8IGRhdGEudmVyc2lvbmVkSW5zdHJ1Y3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCd2ZXJzaW9uZWRJbnN0cnVjdGlvbnMgbXVzdCBiZSBhIG5vbi1lbXB0eSBhcnJheScpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YS5hZGRyZXNzTG9va3VwVGFibGVzKSkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdhZGRyZXNzTG9va3VwVGFibGVzIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEuc3RhdGljQWNjb3VudEtleXMpIHx8IGRhdGEuc3RhdGljQWNjb3VudEtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3N0YXRpY0FjY291bnRLZXlzIG11c3QgYmUgYSBub24tZW1wdHkgYXJyYXknKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFkYXRhLm1lc3NhZ2VIZWFkZXIgfHwgdHlwZW9mIGRhdGEubWVzc2FnZUhlYWRlciAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignbWVzc2FnZUhlYWRlciBtdXN0IGJlIGEgdmFsaWQgb2JqZWN0Jyk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBkYXRhLm1lc3NhZ2VIZWFkZXIubnVtUmVxdWlyZWRTaWduYXR1cmVzICE9PSAnbnVtYmVyJyB8fFxuICAgICAgICBkYXRhLm1lc3NhZ2VIZWFkZXIubnVtUmVxdWlyZWRTaWduYXR1cmVzIDwgMFxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ21lc3NhZ2VIZWFkZXIubnVtUmVxdWlyZWRTaWduYXR1cmVzIG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyJyk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBkYXRhLm1lc3NhZ2VIZWFkZXIubnVtUmVhZG9ubHlTaWduZWRBY2NvdW50cyAhPT0gJ251bWJlcicgfHxcbiAgICAgICAgZGF0YS5tZXNzYWdlSGVhZGVyLm51bVJlYWRvbmx5U2lnbmVkQWNjb3VudHMgPCAwXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignbWVzc2FnZUhlYWRlci5udW1SZWFkb25seVNpZ25lZEFjY291bnRzIG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyJyk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBkYXRhLm1lc3NhZ2VIZWFkZXIubnVtUmVhZG9ubHlVbnNpZ25lZEFjY291bnRzICE9PSAnbnVtYmVyJyB8fFxuICAgICAgICBkYXRhLm1lc3NhZ2VIZWFkZXIubnVtUmVhZG9ubHlVbnNpZ25lZEFjY291bnRzIDwgMFxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ21lc3NhZ2VIZWFkZXIubnVtUmVhZG9ubHlVbnNpZ25lZEFjY291bnRzIG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyJyk7XG4gICAgICB9XG5cbiAgICAgIGxldCBwcm9jZXNzZWREYXRhID0gZGF0YTtcbiAgICAgIGlmICh0aGlzLl9ub25jZUluZm8gJiYgdGhpcy5fbm9uY2VJbmZvLnBhcmFtcykge1xuICAgICAgICBwcm9jZXNzZWREYXRhID0gdGhpcy5pbmplY3ROb25jZUFkdmFuY2VJbnN0cnVjdGlvbihkYXRhKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5hZGRDdXN0b21JbnN0cnVjdGlvbnMocHJvY2Vzc2VkRGF0YS52ZXJzaW9uZWRJbnN0cnVjdGlvbnMpO1xuXG4gICAgICBpZiAoIXRoaXMuX3RyYW5zYWN0aW9uKSB7XG4gICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgICAgfVxuICAgICAgdGhpcy5fdHJhbnNhY3Rpb24uc2V0VmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhKHByb2Nlc3NlZERhdGEpO1xuXG4gICAgICB0aGlzLl90cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvblR5cGUoVHJhbnNhY3Rpb25UeXBlLkN1c3RvbVR4KTtcblxuICAgICAgaWYgKCF0aGlzLl9zZW5kZXIgJiYgcHJvY2Vzc2VkRGF0YS5zdGF0aWNBY2NvdW50S2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuX3NlbmRlciA9IHByb2Nlc3NlZERhdGEuc3RhdGljQWNjb3VudEtleXNbMF07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBCdWlsZFRyYW5zYWN0aW9uRXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBGYWlsZWQgdG8gcHJvY2VzcyB2ZXJzaW9uZWQgdHJhbnNhY3Rpb24gZGF0YTogJHtlcnJvci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbmplY3Qgbm9uY2UgYWR2YW5jZSBpbnN0cnVjdGlvbiBpbnRvIHZlcnNpb25lZCB0cmFuc2FjdGlvbiBkYXRhIGZvciBkdXJhYmxlIG5vbmNlIHN1cHBvcnQuXG4gICAqIFJlb3JkZXJzIGFjY291bnRzIHNvIHNpZ25lcnMgYXBwZWFyIGZpcnN0IChyZXF1aXJlZCBieSBTb2xhbmEgTWVzc2FnZVYwIGZvcm1hdCkuXG4gICAqIEBwYXJhbSBkYXRhIC0gT3JpZ2luYWwgdmVyc2lvbmVkIHRyYW5zYWN0aW9uIGRhdGFcbiAgICogQHJldHVybnMgTW9kaWZpZWQgdmVyc2lvbmVkIHRyYW5zYWN0aW9uIGRhdGEgd2l0aCBub25jZSBhZHZhbmNlIGluc3RydWN0aW9uXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGluamVjdE5vbmNlQWR2YW5jZUluc3RydWN0aW9uKGRhdGE6IFZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YSk6IFZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YSB7XG4gICAgY29uc3QgeyB3YWxsZXROb25jZUFkZHJlc3MsIGF1dGhXYWxsZXRBZGRyZXNzIH0gPSB0aGlzLl9ub25jZUluZm8hLnBhcmFtcztcbiAgICBjb25zdCBTWVNURU1fUFJPR1JBTSA9IFN5c3RlbVByb2dyYW0ucHJvZ3JhbUlkLnRvQmFzZTU4KCk7XG4gICAgY29uc3QgU1lTVkFSX1JFQ0VOVF9CTE9DS0hBU0hFUyA9IFNZU1ZBUl9SRUNFTlRfQkxPQ0tIQVNIRVNfUFVCS0VZLnRvQmFzZTU4KCk7XG5cbiAgICBjb25zdCBudW1TaWduZXJzID0gZGF0YS5tZXNzYWdlSGVhZGVyLm51bVJlcXVpcmVkU2lnbmF0dXJlcztcbiAgICBjb25zdCBvcmlnaW5hbFNpZ25lcnMgPSBkYXRhLnN0YXRpY0FjY291bnRLZXlzLnNsaWNlKDAsIG51bVNpZ25lcnMpO1xuICAgIGNvbnN0IG9yaWdpbmFsTm9uU2lnbmVycyA9IGRhdGEuc3RhdGljQWNjb3VudEtleXMuc2xpY2UobnVtU2lnbmVycyk7XG5cbiAgICBpZiAoIW9yaWdpbmFsU2lnbmVycy5pbmNsdWRlcyhhdXRoV2FsbGV0QWRkcmVzcykpIHtcbiAgICAgIG9yaWdpbmFsU2lnbmVycy5wdXNoKGF1dGhXYWxsZXRBZGRyZXNzKTtcbiAgICB9XG5cbiAgICBjb25zdCBub25TaWduZXJzID0gWy4uLm9yaWdpbmFsTm9uU2lnbmVyc107XG4gICAgY29uc3QgYWxsS2V5cyA9IFsuLi5vcmlnaW5hbFNpZ25lcnMsIC4uLm9yaWdpbmFsTm9uU2lnbmVyc107XG5cbiAgICBpZiAoIWFsbEtleXMuaW5jbHVkZXMoU1lTVEVNX1BST0dSQU0pKSBub25TaWduZXJzLnB1c2goU1lTVEVNX1BST0dSQU0pO1xuICAgIGlmICghYWxsS2V5cy5pbmNsdWRlcyh3YWxsZXROb25jZUFkZHJlc3MpKSBub25TaWduZXJzLnB1c2god2FsbGV0Tm9uY2VBZGRyZXNzKTtcbiAgICBpZiAoIWFsbEtleXMuaW5jbHVkZXMoU1lTVkFSX1JFQ0VOVF9CTE9DS0hBU0hFUykpIG5vblNpZ25lcnMucHVzaChTWVNWQVJfUkVDRU5UX0JMT0NLSEFTSEVTKTtcblxuICAgIGNvbnN0IG5ld1N0YXRpY0FjY291bnRLZXlzID0gWy4uLm9yaWdpbmFsU2lnbmVycywgLi4ubm9uU2lnbmVyc107XG5cbiAgICBjb25zdCBub25jZUFkdmFuY2VJbnN0cnVjdGlvbjogU29sVmVyc2lvbmVkSW5zdHJ1Y3Rpb24gPSB7XG4gICAgICBwcm9ncmFtSWRJbmRleDogbmV3U3RhdGljQWNjb3VudEtleXMuaW5kZXhPZihTWVNURU1fUFJPR1JBTSksXG4gICAgICBhY2NvdW50S2V5SW5kZXhlczogW1xuICAgICAgICBuZXdTdGF0aWNBY2NvdW50S2V5cy5pbmRleE9mKHdhbGxldE5vbmNlQWRkcmVzcyksXG4gICAgICAgIG5ld1N0YXRpY0FjY291bnRLZXlzLmluZGV4T2YoU1lTVkFSX1JFQ0VOVF9CTE9DS0hBU0hFUyksXG4gICAgICAgIG5ld1N0YXRpY0FjY291bnRLZXlzLmluZGV4T2YoYXV0aFdhbGxldEFkZHJlc3MpLFxuICAgICAgXSxcbiAgICAgIGRhdGE6ICc2dng4UCcsIC8vIFN5c3RlbVByb2dyYW0gQWR2YW5jZU5vbmNlQWNjb3VudCAoMHgwNDAwMDAwMCkgaW4gYmFzZTU4XG4gICAgfTtcblxuICAgIGNvbnN0IGluZGV4TWFwID0gbmV3IE1hcChkYXRhLnN0YXRpY0FjY291bnRLZXlzLm1hcCgoa2V5LCBvbGRJZHgpID0+IFtvbGRJZHgsIG5ld1N0YXRpY0FjY291bnRLZXlzLmluZGV4T2Yoa2V5KV0pKTtcbiAgICBjb25zdCByZW1hcHBlZEluc3RydWN0aW9ucyA9IGRhdGEudmVyc2lvbmVkSW5zdHJ1Y3Rpb25zLm1hcCgoaW5zdCkgPT4gKHtcbiAgICAgIHByb2dyYW1JZEluZGV4OiBpbmRleE1hcC5nZXQoaW5zdC5wcm9ncmFtSWRJbmRleCkgPz8gaW5zdC5wcm9ncmFtSWRJbmRleCxcbiAgICAgIGFjY291bnRLZXlJbmRleGVzOiBpbnN0LmFjY291bnRLZXlJbmRleGVzLm1hcCgoaWR4KSA9PiBpbmRleE1hcC5nZXQoaWR4KSA/PyBpZHgpLFxuICAgICAgZGF0YTogaW5zdC5kYXRhLFxuICAgIH0pKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5kYXRhLFxuICAgICAgdmVyc2lvbmVkSW5zdHJ1Y3Rpb25zOiBbbm9uY2VBZHZhbmNlSW5zdHJ1Y3Rpb24sIC4uLnJlbWFwcGVkSW5zdHJ1Y3Rpb25zXSxcbiAgICAgIHN0YXRpY0FjY291bnRLZXlzOiBuZXdTdGF0aWNBY2NvdW50S2V5cyxcbiAgICAgIG1lc3NhZ2VIZWFkZXI6IHtcbiAgICAgICAgLi4uZGF0YS5tZXNzYWdlSGVhZGVyLFxuICAgICAgICBudW1SZXF1aXJlZFNpZ25hdHVyZXM6IG9yaWdpbmFsU2lnbmVycy5sZW5ndGgsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgYWxsIGN1c3RvbSBpbnN0cnVjdGlvbnMgYW5kIHZlcnNpb25lZCB0cmFuc2FjdGlvbiBkYXRhXG4gICAqIEByZXR1cm5zIFRoaXMgYnVpbGRlciBpbnN0YW5jZVxuICAgKi9cbiAgY2xlYXJJbnN0cnVjdGlvbnMoKTogdGhpcyB7XG4gICAgdGhpcy5fY3VzdG9tSW5zdHJ1Y3Rpb25zID0gW107XG4gICAgaWYgKHRoaXMuX3RyYW5zYWN0aW9uKSB7XG4gICAgICB0aGlzLl90cmFuc2FjdGlvbi5zZXRWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEodW5kZWZpbmVkKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW50IGN1c3RvbSBpbnN0cnVjdGlvbnNcbiAgICogQHJldHVybnMgQXJyYXkgb2YgY3VzdG9tIGluc3RydWN0aW9uc1xuICAgKi9cbiAgZ2V0SW5zdHJ1Y3Rpb25zKCk6IChDdXN0b21JbnN0cnVjdGlvbiB8IFZlcnNpb25lZEN1c3RvbUluc3RydWN0aW9uKVtdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuX2N1c3RvbUluc3RydWN0aW9uc107XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgY3VzdG9tIGluc3RydWN0aW9uIGZvcm1hdFxuICAgKiBAcGFyYW0gaW5zdHJ1Y3Rpb24gLSBUaGUgaW5zdHJ1Y3Rpb24gdG8gdmFsaWRhdGVcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbjogU29sSW5zdHJ1Y3Rpb24gfCBTb2xWZXJzaW9uZWRJbnN0cnVjdGlvbik6IHZvaWQge1xuICAgIGlmICghaW5zdHJ1Y3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0luc3RydWN0aW9uIGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCcpO1xuICAgIH1cblxuICAgIGlmIChpc1NvbExlZ2FjeUluc3RydWN0aW9uKGluc3RydWN0aW9uKSkge1xuICAgICAgdGhpcy52YWxpZGF0ZVNvbEluc3RydWN0aW9uKGluc3RydWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWxpZGF0ZVZlcnNpb25lZEluc3RydWN0aW9uKGluc3RydWN0aW9uKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdHJhZGl0aW9uYWwgU29sSW5zdHJ1Y3Rpb24gZm9ybWF0XG4gICAqIEBwYXJhbSBpbnN0cnVjdGlvbiAtIFRoZSB0cmFkaXRpb25hbCBpbnN0cnVjdGlvbiB0byB2YWxpZGF0ZVxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVNvbEluc3RydWN0aW9uKGluc3RydWN0aW9uOiBTb2xJbnN0cnVjdGlvbik6IHZvaWQge1xuICAgIGlmICghaW5zdHJ1Y3Rpb24ucHJvZ3JhbUlkIHx8IHR5cGVvZiBpbnN0cnVjdGlvbi5wcm9ncmFtSWQgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnN0cnVjdGlvbiBtdXN0IGhhdmUgYSB2YWxpZCBwcm9ncmFtSWQgc3RyaW5nJyk7XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgdGhhdCBwcm9ncmFtSWQgaXMgYSB2YWxpZCBTb2xhbmEgcHVibGljIGtleVxuICAgIHRyeSB7XG4gICAgICBuZXcgUHVibGljS2V5KGluc3RydWN0aW9uLnByb2dyYW1JZCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgcHJvZ3JhbUlkIGZvcm1hdCcpO1xuICAgIH1cblxuICAgIGlmICghaW5zdHJ1Y3Rpb24ua2V5cyB8fCAhQXJyYXkuaXNBcnJheShpbnN0cnVjdGlvbi5rZXlzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW5zdHJ1Y3Rpb24gbXVzdCBoYXZlIHZhbGlkIGtleXMgYXJyYXknKTtcbiAgICB9XG5cbiAgICAvLyBWYWxpZGF0ZSBlYWNoIGtleVxuICAgIGZvciAoY29uc3Qga2V5IG9mIGluc3RydWN0aW9uLmtleXMpIHtcbiAgICAgIGlmICgha2V5LnB1YmtleSB8fCB0eXBlb2Yga2V5LnB1YmtleSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignRWFjaCBrZXkgbXVzdCBoYXZlIGEgdmFsaWQgcHVia2V5IHN0cmluZycpO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBuZXcgUHVibGljS2V5KGtleS5wdWJrZXkpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBwdWJrZXkgZm9ybWF0IGluIGtleXMnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBrZXkuaXNTaWduZXIgIT09ICdib29sZWFuJykge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFYWNoIGtleSBtdXN0IGhhdmUgYSBib29sZWFuIGlzU2lnbmVyIGZpZWxkJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2Yga2V5LmlzV3JpdGFibGUgIT09ICdib29sZWFuJykge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFYWNoIGtleSBtdXN0IGhhdmUgYSBib29sZWFuIGlzV3JpdGFibGUgZmllbGQnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaW5zdHJ1Y3Rpb24uZGF0YSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBpbnN0cnVjdGlvbi5kYXRhICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW5zdHJ1Y3Rpb24gbXVzdCBoYXZlIHZhbGlkIGRhdGEgc3RyaW5nJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHZlcnNpb25lZCBpbnN0cnVjdGlvbiBmb3JtYXRcbiAgICogQHBhcmFtIGluc3RydWN0aW9uIC0gVGhlIHZlcnNpb25lZCBpbnN0cnVjdGlvbiB0byB2YWxpZGF0ZVxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVZlcnNpb25lZEluc3RydWN0aW9uKGluc3RydWN0aW9uOiBTb2xWZXJzaW9uZWRJbnN0cnVjdGlvbik6IHZvaWQge1xuICAgIGlmICh0eXBlb2YgaW5zdHJ1Y3Rpb24ucHJvZ3JhbUlkSW5kZXggIT09ICdudW1iZXInIHx8IGluc3RydWN0aW9uLnByb2dyYW1JZEluZGV4IDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVmVyc2lvbmVkIGluc3RydWN0aW9uIG11c3QgaGF2ZSBhIHZhbGlkIHByb2dyYW1JZEluZGV4IG51bWJlcicpO1xuICAgIH1cblxuICAgIGlmICghaW5zdHJ1Y3Rpb24uYWNjb3VudEtleUluZGV4ZXMgfHwgIUFycmF5LmlzQXJyYXkoaW5zdHJ1Y3Rpb24uYWNjb3VudEtleUluZGV4ZXMpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdWZXJzaW9uZWQgaW5zdHJ1Y3Rpb24gbXVzdCBoYXZlIHZhbGlkIGFjY291bnRLZXlJbmRleGVzIGFycmF5Jyk7XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgZWFjaCBhY2NvdW50IGtleSBpbmRleFxuICAgIGZvciAoY29uc3QgaW5kZXggb2YgaW5zdHJ1Y3Rpb24uYWNjb3VudEtleUluZGV4ZXMpIHtcbiAgICAgIGlmICh0eXBlb2YgaW5kZXggIT09ICdudW1iZXInIHx8IGluZGV4IDwgMCkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFYWNoIGFjY291bnRLZXlJbmRleCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlcicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpbnN0cnVjdGlvbi5kYXRhID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIGluc3RydWN0aW9uLmRhdGEgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdWZXJzaW9uZWQgaW5zdHJ1Y3Rpb24gbXVzdCBoYXZlIHZhbGlkIGRhdGEgc3RyaW5nJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICBhc3NlcnQodGhpcy5fY3VzdG9tSW5zdHJ1Y3Rpb25zLmxlbmd0aCA+IDAsICdBdCBsZWFzdCBvbmUgY3VzdG9tIGluc3RydWN0aW9uIG11c3QgYmUgc3BlY2lmaWVkJyk7XG5cbiAgICAvLyBTZXQgdGhlIGluc3RydWN0aW9ucyBkYXRhIHRvIG91ciBjdXN0b20gaW5zdHJ1Y3Rpb25zXG4gICAgdGhpcy5faW5zdHJ1Y3Rpb25zRGF0YSA9IFsuLi50aGlzLl9jdXN0b21JbnN0cnVjdGlvbnNdO1xuXG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLmJ1aWxkSW1wbGVtZW50YXRpb24oKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,21 @@
1
+ import { TransactionExplanation as SolLibTransactionExplanation } from './iface';
2
+ export interface ExplainTransactionWasmOptions {
3
+ txBase64: string;
4
+ feeInfo?: {
5
+ fee: string;
6
+ };
7
+ tokenAccountRentExemptAmount?: string;
8
+ coinName: string;
9
+ }
10
+ /**
11
+ * Standalone WASM-based transaction explanation.
12
+ *
13
+ * Parses the transaction via `parseTransaction(tx)` from @bitgo/wasm-solana,
14
+ * then derives the transaction type, extracts outputs/inputs, computes fees,
15
+ * and maps to BitGoJS TransactionExplanation format.
16
+ *
17
+ * The explain logic was ported from wasm-solana per the convention that
18
+ * `explainTransaction` belongs in BitGoJS, not in wasm-* packages.
19
+ */
20
+ export declare function explainSolTransaction(params: ExplainTransactionWasmOptions): SolLibTransactionExplanation;
21
+ //# sourceMappingURL=explainTransactionWasm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explainTransactionWasm.d.ts","sourceRoot":"","sources":["../../../src/lib/explainTransactionWasm.ts"],"names":[],"mappings":"AAGA,OAAO,EAA0B,sBAAsB,IAAI,4BAA4B,EAAE,MAAM,SAAS,CAAC;AAGzG,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAgKD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,6BAA6B,GAAG,4BAA4B,CAoJzG"}