@bitgo-beta/sdk-coin-sol 7.6.4-beta.27 → 7.6.4-beta.270

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 (386) hide show
  1. package/dist/cjs/src/bigint-buffer-guard.d.ts.map +1 -0
  2. package/dist/cjs/src/bigint-buffer-guard.js +29 -0
  3. package/dist/cjs/src/config/token2022StaticConfig.d.ts.map +1 -0
  4. package/dist/cjs/src/config/token2022StaticConfig.js +50 -0
  5. package/dist/cjs/src/index.d.ts.map +1 -0
  6. package/dist/{src → cjs/src}/index.js +1 -1
  7. package/dist/cjs/src/lib/ataInitializationBuilder.d.ts.map +1 -0
  8. package/dist/cjs/src/lib/ataInitializationBuilder.js +196 -0
  9. package/dist/cjs/src/lib/closeAtaBuilder.d.ts.map +1 -0
  10. package/dist/cjs/src/lib/closeAtaBuilder.js +69 -0
  11. package/dist/{src → cjs/src}/lib/constants.d.ts +18 -0
  12. package/dist/cjs/src/lib/constants.d.ts.map +1 -0
  13. package/dist/cjs/src/lib/constants.js +189 -0
  14. package/dist/cjs/src/lib/customInstructionBuilder.d.ts.map +1 -0
  15. package/dist/cjs/src/lib/customInstructionBuilder.js +289 -0
  16. package/dist/cjs/src/lib/explainTransactionWasm.d.ts +21 -0
  17. package/dist/cjs/src/lib/explainTransactionWasm.d.ts.map +1 -0
  18. package/dist/cjs/src/lib/explainTransactionWasm.js +264 -0
  19. package/dist/{src → cjs/src}/lib/iface.d.ts +7 -0
  20. package/dist/cjs/src/lib/iface.d.ts.map +1 -0
  21. package/dist/cjs/src/lib/iface.js +7 -0
  22. package/dist/{src → cjs/src}/lib/index.d.ts +1 -0
  23. package/dist/cjs/src/lib/index.d.ts.map +1 -0
  24. package/dist/{src → cjs/src}/lib/index.js +4 -2
  25. package/dist/{src → cjs/src}/lib/instructionParamsFactory.d.ts +1 -0
  26. package/dist/cjs/src/lib/instructionParamsFactory.d.ts.map +1 -0
  27. package/dist/cjs/src/lib/instructionParamsFactory.js +1037 -0
  28. package/dist/cjs/src/lib/jitoStakePoolOperations.d.ts.map +1 -0
  29. package/dist/cjs/src/lib/jitoStakePoolOperations.js +200 -0
  30. package/dist/cjs/src/lib/keyPair.d.ts.map +1 -0
  31. package/dist/cjs/src/lib/keyPair.js +63 -0
  32. package/dist/cjs/src/lib/messages/index.d.ts.map +1 -0
  33. package/dist/{src → cjs/src}/lib/messages/index.js +1 -1
  34. package/dist/cjs/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
  35. package/dist/cjs/src/lib/messages/messageBuilderFactory.js +19 -0
  36. package/dist/cjs/src/lib/solInstructionFactory.d.ts.map +1 -0
  37. package/dist/cjs/src/lib/solInstructionFactory.js +572 -0
  38. package/dist/cjs/src/lib/stakingActivateBuilder.d.ts.map +1 -0
  39. package/dist/cjs/src/lib/stakingActivateBuilder.js +120 -0
  40. package/dist/cjs/src/lib/stakingAuthorizeBuilder.d.ts.map +1 -0
  41. package/dist/cjs/src/lib/stakingAuthorizeBuilder.js +89 -0
  42. package/dist/cjs/src/lib/stakingDeactivateBuilder.d.ts.map +1 -0
  43. package/dist/cjs/src/lib/stakingDeactivateBuilder.js +208 -0
  44. package/dist/cjs/src/lib/stakingDelegateBuilder.d.ts.map +1 -0
  45. package/dist/cjs/src/lib/stakingDelegateBuilder.js +120 -0
  46. package/dist/cjs/src/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
  47. package/dist/cjs/src/lib/stakingRawMsgAuthorizeBuilder.js +110 -0
  48. package/dist/cjs/src/lib/stakingWithdrawBuilder.d.ts.map +1 -0
  49. package/dist/cjs/src/lib/stakingWithdrawBuilder.js +78 -0
  50. package/dist/cjs/src/lib/token2022Config.d.ts.map +1 -0
  51. package/dist/cjs/src/lib/token2022Config.js +27 -0
  52. package/dist/cjs/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  53. package/dist/cjs/src/lib/tokenTransferBuilder.js +188 -0
  54. package/dist/cjs/src/lib/transaction.d.ts.map +1 -0
  55. package/dist/cjs/src/lib/transaction.js +612 -0
  56. package/dist/cjs/src/lib/transactionBuilder.d.ts.map +1 -0
  57. package/dist/cjs/src/lib/transactionBuilder.js +380 -0
  58. package/dist/cjs/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  59. package/dist/cjs/src/lib/transactionBuilderFactory.js +202 -0
  60. package/dist/cjs/src/lib/transferBuilder.d.ts.map +1 -0
  61. package/dist/cjs/src/lib/transferBuilder.js +70 -0
  62. package/dist/cjs/src/lib/transferBuilderV2.d.ts.map +1 -0
  63. package/dist/cjs/src/lib/transferBuilderV2.js +210 -0
  64. package/dist/cjs/src/lib/utils.d.ts.map +1 -0
  65. package/dist/cjs/src/lib/utils.js +589 -0
  66. package/dist/cjs/src/lib/walletInitializationBuilder.d.ts.map +1 -0
  67. package/dist/cjs/src/lib/walletInitializationBuilder.js +71 -0
  68. package/dist/cjs/src/register.d.ts.map +1 -0
  69. package/dist/cjs/src/register.js +15 -0
  70. package/dist/{src → cjs/src}/sol.d.ts +21 -0
  71. package/dist/cjs/src/sol.d.ts.map +1 -0
  72. package/dist/cjs/src/sol.js +1343 -0
  73. package/dist/cjs/src/solToken.d.ts.map +1 -0
  74. package/dist/cjs/src/solToken.js +69 -0
  75. package/dist/cjs/src/tsol.d.ts.map +1 -0
  76. package/dist/cjs/src/tsol.js +24 -0
  77. package/dist/{test → cjs/test}/fixtures/sol.d.ts.map +1 -1
  78. package/dist/cjs/test/fixtures/sol.js +1433 -0
  79. package/dist/{test → cjs/test}/resources/sol.d.ts +27 -27
  80. package/dist/cjs/test/resources/sol.d.ts.map +1 -0
  81. package/dist/cjs/test/resources/sol.js +320 -0
  82. package/dist/cjs/test/unit/explainTransactionWasm.d.ts +5 -0
  83. package/dist/cjs/test/unit/explainTransactionWasm.d.ts.map +1 -0
  84. package/dist/cjs/test/unit/explainTransactionWasm.js +26 -0
  85. package/dist/cjs/test/unit/fixtures/solBackupKey.d.ts.map +1 -0
  86. package/dist/cjs/test/unit/fixtures/solBackupKey.js +8 -0
  87. package/dist/cjs/test/unit/getBuilderFactory.d.ts.map +1 -0
  88. package/dist/cjs/test/unit/getBuilderFactory.js +10 -0
  89. package/dist/cjs/test/unit/instructionParamsFactory.d.ts.map +1 -0
  90. package/dist/cjs/test/unit/instructionParamsFactory.js +412 -0
  91. package/dist/cjs/test/unit/instructionParamsFactory.staking.d.ts.map +1 -0
  92. package/dist/cjs/test/unit/instructionParamsFactory.staking.js +1059 -0
  93. package/dist/cjs/test/unit/jitoWasmVerification.d.ts +2 -0
  94. package/dist/cjs/test/unit/jitoWasmVerification.d.ts.map +1 -0
  95. package/dist/cjs/test/unit/jitoWasmVerification.js +78 -0
  96. package/dist/{test → cjs/test}/unit/keyPair.d.ts.map +1 -1
  97. package/dist/cjs/test/unit/keyPair.js +177 -0
  98. package/dist/cjs/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
  99. package/dist/cjs/test/unit/messages/messageBuilderFactory.js +118 -0
  100. package/dist/cjs/test/unit/messages/simpleMessageBuilder.d.ts.map +1 -0
  101. package/dist/cjs/test/unit/messages/simpleMessageBuilder.js +194 -0
  102. package/dist/{test → cjs/test}/unit/sol.d.ts.map +1 -1
  103. package/dist/cjs/test/unit/sol.js +3273 -0
  104. package/dist/cjs/test/unit/solInstructionFactory.d.ts.map +1 -0
  105. package/dist/cjs/test/unit/solInstructionFactory.js +454 -0
  106. package/dist/cjs/test/unit/solToken.d.ts.map +1 -0
  107. package/dist/cjs/test/unit/solToken.js +31 -0
  108. package/dist/cjs/test/unit/transaction.d.ts.map +1 -0
  109. package/dist/cjs/test/unit/transaction.js +1108 -0
  110. package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +1 -0
  111. package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.js +202 -0
  112. package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +1 -0
  113. package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.js +471 -0
  114. package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +1 -0
  115. package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.js +413 -0
  116. package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +1 -0
  117. package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.js +430 -0
  118. package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +1 -0
  119. package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +157 -0
  120. package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +1 -0
  121. package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.js +384 -0
  122. package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +1 -0
  123. package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.js +224 -0
  124. package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
  125. package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +259 -0
  126. package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  127. package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.js +787 -0
  128. package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  129. package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.js +495 -0
  130. package/dist/cjs/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  131. package/dist/cjs/test/unit/transactionBuilder/transferBuilder.js +286 -0
  132. package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +1 -0
  133. package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.js +862 -0
  134. package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +1 -0
  135. package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.js +259 -0
  136. package/dist/{test → cjs/test}/unit/utils.d.ts.map +1 -1
  137. package/dist/cjs/test/unit/utils.js +517 -0
  138. package/dist/cjs/test/unit/versionedTransaction.d.ts.map +1 -0
  139. package/dist/cjs/test/unit/versionedTransaction.js +207 -0
  140. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  141. package/dist/esm/bigint-buffer-guard.d.ts +1 -0
  142. package/dist/esm/config/token2022StaticConfig.d.ts +3 -0
  143. package/dist/esm/config/token2022StaticConfig.js +47 -0
  144. package/dist/esm/index.d.ts +7 -0
  145. package/dist/esm/index.js +7 -0
  146. package/dist/esm/lib/ataInitializationBuilder.d.ts +47 -0
  147. package/dist/esm/lib/ataInitializationBuilder.js +156 -0
  148. package/dist/esm/lib/closeAtaBuilder.d.ts +19 -0
  149. package/dist/esm/lib/closeAtaBuilder.js +62 -0
  150. package/dist/esm/lib/constants.d.ts +158 -0
  151. package/dist/esm/lib/constants.d.ts.map +1 -0
  152. package/dist/esm/lib/constants.js +186 -0
  153. package/dist/esm/lib/customInstructionBuilder.d.ts +72 -0
  154. package/dist/esm/lib/customInstructionBuilder.js +282 -0
  155. package/dist/esm/lib/explainTransactionWasm.d.ts +21 -0
  156. package/dist/esm/lib/explainTransactionWasm.d.ts.map +1 -0
  157. package/dist/esm/lib/explainTransactionWasm.js +261 -0
  158. package/dist/esm/lib/iface.d.ts +251 -0
  159. package/dist/{src → esm}/lib/iface.d.ts.map +1 -1
  160. package/dist/esm/lib/iface.js +3 -0
  161. package/dist/esm/lib/index.d.ts +23 -0
  162. package/dist/{src → esm}/lib/index.d.ts.map +1 -1
  163. package/dist/esm/lib/index.js +23 -0
  164. package/dist/esm/lib/instructionParamsFactory.d.ts +13 -0
  165. package/dist/{src → esm}/lib/instructionParamsFactory.d.ts.map +1 -1
  166. package/dist/esm/lib/instructionParamsFactory.js +1030 -0
  167. package/dist/esm/lib/jitoStakePoolOperations.d.ts +113 -0
  168. package/dist/esm/lib/jitoStakePoolOperations.js +189 -0
  169. package/dist/esm/lib/keyPair.d.ts +26 -0
  170. package/dist/esm/lib/keyPair.js +59 -0
  171. package/dist/esm/lib/messages/index.d.ts +2 -0
  172. package/dist/esm/lib/messages/index.js +2 -0
  173. package/dist/esm/lib/messages/messageBuilderFactory.d.ts +7 -0
  174. package/dist/{src → esm}/lib/messages/messageBuilderFactory.js +5 -9
  175. package/dist/esm/lib/solInstructionFactory.d.ts +10 -0
  176. package/dist/esm/lib/solInstructionFactory.js +566 -0
  177. package/dist/esm/lib/stakingActivateBuilder.d.ts +59 -0
  178. package/dist/esm/lib/stakingActivateBuilder.js +113 -0
  179. package/dist/esm/lib/stakingAuthorizeBuilder.d.ts +43 -0
  180. package/dist/esm/lib/stakingAuthorizeBuilder.js +82 -0
  181. package/dist/esm/lib/stakingDeactivateBuilder.d.ts +81 -0
  182. package/dist/{src → esm}/lib/stakingDeactivateBuilder.js +31 -38
  183. package/dist/esm/lib/stakingDelegateBuilder.d.ts +42 -0
  184. package/dist/esm/lib/stakingDelegateBuilder.js +113 -0
  185. package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.d.ts +33 -0
  186. package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.js +103 -0
  187. package/dist/esm/lib/stakingWithdrawBuilder.d.ts +31 -0
  188. package/dist/esm/lib/stakingWithdrawBuilder.js +71 -0
  189. package/dist/esm/lib/token2022Config.d.ts +44 -0
  190. package/dist/esm/lib/token2022Config.js +23 -0
  191. package/dist/esm/lib/tokenTransferBuilder.d.ts +41 -0
  192. package/dist/esm/lib/tokenTransferBuilder.js +181 -0
  193. package/dist/esm/lib/transaction.d.ts +103 -0
  194. package/dist/esm/lib/transaction.d.ts.map +1 -0
  195. package/dist/esm/lib/transaction.js +605 -0
  196. package/dist/esm/lib/transactionBuilder.d.ts +128 -0
  197. package/dist/esm/lib/transactionBuilder.js +373 -0
  198. package/dist/esm/lib/transactionBuilderFactory.d.ts +115 -0
  199. package/dist/esm/lib/transactionBuilderFactory.js +198 -0
  200. package/dist/esm/lib/transferBuilder.d.ts +26 -0
  201. package/dist/esm/lib/transferBuilder.js +63 -0
  202. package/dist/esm/lib/transferBuilderV2.d.ts +43 -0
  203. package/dist/esm/lib/transferBuilderV2.js +203 -0
  204. package/dist/esm/lib/utils.d.ts +200 -0
  205. package/dist/esm/lib/utils.js +552 -0
  206. package/dist/esm/lib/walletInitializationBuilder.d.ts +26 -0
  207. package/dist/esm/lib/walletInitializationBuilder.js +64 -0
  208. package/dist/esm/register.d.ts +3 -0
  209. package/dist/esm/register.js +11 -0
  210. package/dist/esm/sol.d.ts +248 -0
  211. package/dist/esm/sol.d.ts.map +1 -0
  212. package/dist/esm/sol.js +1302 -0
  213. package/dist/esm/solToken.d.ts +37 -0
  214. package/dist/esm/solToken.js +65 -0
  215. package/dist/esm/tsol.d.ts +11 -0
  216. package/dist/esm/tsol.js +20 -0
  217. package/package.json +34 -15
  218. package/dist/src/config/token2022StaticConfig.js +0 -50
  219. package/dist/src/lib/ataInitializationBuilder.js +0 -196
  220. package/dist/src/lib/closeAtaBuilder.js +0 -69
  221. package/dist/src/lib/constants.d.ts.map +0 -1
  222. package/dist/src/lib/constants.js +0 -171
  223. package/dist/src/lib/customInstructionBuilder.js +0 -289
  224. package/dist/src/lib/iface.js +0 -7
  225. package/dist/src/lib/instructionParamsFactory.js +0 -1036
  226. package/dist/src/lib/jitoStakePoolOperations.js +0 -200
  227. package/dist/src/lib/keyPair.js +0 -63
  228. package/dist/src/lib/solInstructionFactory.js +0 -572
  229. package/dist/src/lib/stakingActivateBuilder.js +0 -120
  230. package/dist/src/lib/stakingAuthorizeBuilder.js +0 -89
  231. package/dist/src/lib/stakingDelegateBuilder.js +0 -120
  232. package/dist/src/lib/stakingRawMsgAuthorizeBuilder.js +0 -110
  233. package/dist/src/lib/stakingWithdrawBuilder.js +0 -78
  234. package/dist/src/lib/token2022Config.js +0 -27
  235. package/dist/src/lib/tokenTransferBuilder.js +0 -188
  236. package/dist/src/lib/transaction.d.ts.map +0 -1
  237. package/dist/src/lib/transaction.js +0 -595
  238. package/dist/src/lib/transactionBuilder.js +0 -380
  239. package/dist/src/lib/transactionBuilderFactory.js +0 -202
  240. package/dist/src/lib/transferBuilder.js +0 -70
  241. package/dist/src/lib/transferBuilderV2.js +0 -210
  242. package/dist/src/lib/utils.js +0 -589
  243. package/dist/src/lib/walletInitializationBuilder.js +0 -71
  244. package/dist/src/register.js +0 -15
  245. package/dist/src/sol.d.ts.map +0 -1
  246. package/dist/src/sol.js +0 -1285
  247. package/dist/src/solToken.js +0 -69
  248. package/dist/src/tsol.js +0 -24
  249. package/dist/test/fixtures/sol.js +0 -1433
  250. package/dist/test/resources/sol.d.ts.map +0 -1
  251. package/dist/test/resources/sol.js +0 -320
  252. package/dist/test/unit/fixtures/solBackupKey.d.ts.map +0 -1
  253. package/dist/test/unit/fixtures/solBackupKey.js +0 -8
  254. package/dist/test/unit/getBuilderFactory.d.ts.map +0 -1
  255. package/dist/test/unit/getBuilderFactory.js +0 -10
  256. package/dist/test/unit/instructionParamsFactory.d.ts.map +0 -1
  257. package/dist/test/unit/instructionParamsFactory.js +0 -412
  258. package/dist/test/unit/instructionParamsFactory.staking.d.ts.map +0 -1
  259. package/dist/test/unit/instructionParamsFactory.staking.js +0 -1059
  260. package/dist/test/unit/keyPair.js +0 -177
  261. package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +0 -1
  262. package/dist/test/unit/messages/messageBuilderFactory.js +0 -118
  263. package/dist/test/unit/messages/simpleMessageBuilder.d.ts.map +0 -1
  264. package/dist/test/unit/messages/simpleMessageBuilder.js +0 -194
  265. package/dist/test/unit/sol.js +0 -3108
  266. package/dist/test/unit/solInstructionFactory.d.ts.map +0 -1
  267. package/dist/test/unit/solInstructionFactory.js +0 -454
  268. package/dist/test/unit/solToken.d.ts.map +0 -1
  269. package/dist/test/unit/solToken.js +0 -31
  270. package/dist/test/unit/transaction.d.ts.map +0 -1
  271. package/dist/test/unit/transaction.js +0 -983
  272. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +0 -1
  273. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.js +0 -202
  274. package/dist/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +0 -1
  275. package/dist/test/unit/transactionBuilder/ataInitBuilder.js +0 -471
  276. package/dist/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +0 -1
  277. package/dist/test/unit/transactionBuilder/customInstructionBuilder.js +0 -413
  278. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +0 -1
  279. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.js +0 -430
  280. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +0 -1
  281. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +0 -157
  282. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +0 -1
  283. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.js +0 -384
  284. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +0 -1
  285. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.js +0 -224
  286. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -1
  287. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +0 -259
  288. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +0 -1
  289. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +0 -787
  290. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +0 -1
  291. package/dist/test/unit/transactionBuilder/transactionBuilder.js +0 -495
  292. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +0 -1
  293. package/dist/test/unit/transactionBuilder/transferBuilder.js +0 -286
  294. package/dist/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +0 -1
  295. package/dist/test/unit/transactionBuilder/transferBuilderV2.js +0 -862
  296. package/dist/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +0 -1
  297. package/dist/test/unit/transactionBuilder/walletInitBuilder.js +0 -259
  298. package/dist/test/unit/utils.js +0 -517
  299. package/dist/test/unit/versionedTransaction.d.ts.map +0 -1
  300. package/dist/test/unit/versionedTransaction.js +0 -207
  301. package/dist/tsconfig.tsbuildinfo +0 -1
  302. /package/dist/{src → cjs/src}/bigint-buffer-guard.d.ts +0 -0
  303. /package/dist/{src → cjs/src}/config/token2022StaticConfig.d.ts +0 -0
  304. /package/dist/{src → cjs/src}/index.d.ts +0 -0
  305. /package/dist/{src → cjs/src}/lib/ataInitializationBuilder.d.ts +0 -0
  306. /package/dist/{src → cjs/src}/lib/closeAtaBuilder.d.ts +0 -0
  307. /package/dist/{src → cjs/src}/lib/customInstructionBuilder.d.ts +0 -0
  308. /package/dist/{src → cjs/src}/lib/jitoStakePoolOperations.d.ts +0 -0
  309. /package/dist/{src → cjs/src}/lib/keyPair.d.ts +0 -0
  310. /package/dist/{src → cjs/src}/lib/messages/index.d.ts +0 -0
  311. /package/dist/{src → cjs/src}/lib/messages/messageBuilderFactory.d.ts +0 -0
  312. /package/dist/{src → cjs/src}/lib/solInstructionFactory.d.ts +0 -0
  313. /package/dist/{src → cjs/src}/lib/stakingActivateBuilder.d.ts +0 -0
  314. /package/dist/{src → cjs/src}/lib/stakingAuthorizeBuilder.d.ts +0 -0
  315. /package/dist/{src → cjs/src}/lib/stakingDeactivateBuilder.d.ts +0 -0
  316. /package/dist/{src → cjs/src}/lib/stakingDelegateBuilder.d.ts +0 -0
  317. /package/dist/{src → cjs/src}/lib/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
  318. /package/dist/{src → cjs/src}/lib/stakingWithdrawBuilder.d.ts +0 -0
  319. /package/dist/{src → cjs/src}/lib/token2022Config.d.ts +0 -0
  320. /package/dist/{src → cjs/src}/lib/tokenTransferBuilder.d.ts +0 -0
  321. /package/dist/{src → cjs/src}/lib/transaction.d.ts +0 -0
  322. /package/dist/{src → cjs/src}/lib/transactionBuilder.d.ts +0 -0
  323. /package/dist/{src → cjs/src}/lib/transactionBuilderFactory.d.ts +0 -0
  324. /package/dist/{src → cjs/src}/lib/transferBuilder.d.ts +0 -0
  325. /package/dist/{src → cjs/src}/lib/transferBuilderV2.d.ts +0 -0
  326. /package/dist/{src → cjs/src}/lib/utils.d.ts +0 -0
  327. /package/dist/{src → cjs/src}/lib/walletInitializationBuilder.d.ts +0 -0
  328. /package/dist/{src → cjs/src}/register.d.ts +0 -0
  329. /package/dist/{src → cjs/src}/solToken.d.ts +0 -0
  330. /package/dist/{src → cjs/src}/tsol.d.ts +0 -0
  331. /package/dist/{test → cjs/test}/fixtures/sol.d.ts +0 -0
  332. /package/dist/{test → cjs/test}/unit/fixtures/solBackupKey.d.ts +0 -0
  333. /package/dist/{test → cjs/test}/unit/getBuilderFactory.d.ts +0 -0
  334. /package/dist/{test → cjs/test}/unit/instructionParamsFactory.d.ts +0 -0
  335. /package/dist/{test → cjs/test}/unit/instructionParamsFactory.staking.d.ts +0 -0
  336. /package/dist/{test → cjs/test}/unit/keyPair.d.ts +0 -0
  337. /package/dist/{test → cjs/test}/unit/messages/messageBuilderFactory.d.ts +0 -0
  338. /package/dist/{test → cjs/test}/unit/messages/simpleMessageBuilder.d.ts +0 -0
  339. /package/dist/{test → cjs/test}/unit/sol.d.ts +0 -0
  340. /package/dist/{test → cjs/test}/unit/solInstructionFactory.d.ts +0 -0
  341. /package/dist/{test → cjs/test}/unit/solToken.d.ts +0 -0
  342. /package/dist/{test → cjs/test}/unit/transaction.d.ts +0 -0
  343. /package/dist/{test → cjs/test}/unit/transactionBuilder/StakingWithdrawBuilder.d.ts +0 -0
  344. /package/dist/{test → cjs/test}/unit/transactionBuilder/ataInitBuilder.d.ts +0 -0
  345. /package/dist/{test → cjs/test}/unit/transactionBuilder/customInstructionBuilder.d.ts +0 -0
  346. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingActivateBuilder.d.ts +0 -0
  347. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts +0 -0
  348. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDeactivateBuilder.d.ts +0 -0
  349. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDelegateBuilder.d.ts +0 -0
  350. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
  351. /package/dist/{test → cjs/test}/unit/transactionBuilder/tokenTransferBuilder.d.ts +0 -0
  352. /package/dist/{test → cjs/test}/unit/transactionBuilder/transactionBuilder.d.ts +0 -0
  353. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilder.d.ts +0 -0
  354. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilderV2.d.ts +0 -0
  355. /package/dist/{test → cjs/test}/unit/transactionBuilder/walletInitBuilder.d.ts +0 -0
  356. /package/dist/{test → cjs/test}/unit/utils.d.ts +0 -0
  357. /package/dist/{test → cjs/test}/unit/versionedTransaction.d.ts +0 -0
  358. /package/dist/{src → esm}/bigint-buffer-guard.d.ts.map +0 -0
  359. /package/dist/{src → esm}/bigint-buffer-guard.js +0 -0
  360. /package/dist/{src → esm}/config/token2022StaticConfig.d.ts.map +0 -0
  361. /package/dist/{src → esm}/index.d.ts.map +0 -0
  362. /package/dist/{src → esm}/lib/ataInitializationBuilder.d.ts.map +0 -0
  363. /package/dist/{src → esm}/lib/closeAtaBuilder.d.ts.map +0 -0
  364. /package/dist/{src → esm}/lib/customInstructionBuilder.d.ts.map +0 -0
  365. /package/dist/{src → esm}/lib/jitoStakePoolOperations.d.ts.map +0 -0
  366. /package/dist/{src → esm}/lib/keyPair.d.ts.map +0 -0
  367. /package/dist/{src → esm}/lib/messages/index.d.ts.map +0 -0
  368. /package/dist/{src → esm}/lib/messages/messageBuilderFactory.d.ts.map +0 -0
  369. /package/dist/{src → esm}/lib/solInstructionFactory.d.ts.map +0 -0
  370. /package/dist/{src → esm}/lib/stakingActivateBuilder.d.ts.map +0 -0
  371. /package/dist/{src → esm}/lib/stakingAuthorizeBuilder.d.ts.map +0 -0
  372. /package/dist/{src → esm}/lib/stakingDeactivateBuilder.d.ts.map +0 -0
  373. /package/dist/{src → esm}/lib/stakingDelegateBuilder.d.ts.map +0 -0
  374. /package/dist/{src → esm}/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -0
  375. /package/dist/{src → esm}/lib/stakingWithdrawBuilder.d.ts.map +0 -0
  376. /package/dist/{src → esm}/lib/token2022Config.d.ts.map +0 -0
  377. /package/dist/{src → esm}/lib/tokenTransferBuilder.d.ts.map +0 -0
  378. /package/dist/{src → esm}/lib/transactionBuilder.d.ts.map +0 -0
  379. /package/dist/{src → esm}/lib/transactionBuilderFactory.d.ts.map +0 -0
  380. /package/dist/{src → esm}/lib/transferBuilder.d.ts.map +0 -0
  381. /package/dist/{src → esm}/lib/transferBuilderV2.d.ts.map +0 -0
  382. /package/dist/{src → esm}/lib/utils.d.ts.map +0 -0
  383. /package/dist/{src → esm}/lib/walletInitializationBuilder.d.ts.map +0 -0
  384. /package/dist/{src → esm}/register.d.ts.map +0 -0
  385. /package/dist/{src → esm}/solToken.d.ts.map +0 -0
  386. /package/dist/{src → esm}/tsol.d.ts.map +0 -0
@@ -0,0 +1,186 @@
1
+ export const MEMO_PROGRAM_PK = 'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr';
2
+ export const SEED_LENGTH = 32;
3
+ export const MAX_MEMO_LENGTH = 130;
4
+ export const STAKE_ACCOUNT_RENT_EXEMPT_AMOUNT = 2282880;
5
+ export const UNAVAILABLE_TEXT = 'UNAVAILABLE';
6
+ /**
7
+ * Maximum over-the-wire size of a Solana transaction (in bytes)
8
+ *
9
+ * Source: https://github.com/anza-xyz/agave/blob/v2.1.13/sdk/packet/src/lib.rs#L27-L29
10
+ *
11
+ * Calculation:
12
+ * - IPv6 minimum MTU: 1280 bytes
13
+ * - IPv6 header: 40 bytes
14
+ * - Fragment/UDP header: 8 bytes
15
+ * - Result: 1280 - 40 - 8 = 1232 bytes
16
+ *
17
+ * This limit is designed to avoid packet fragmentation on typical internet infrastructure.
18
+ * Transactions exceeding this limit will fail to serialize with a RangeError during
19
+ * the encoding of the transaction message.
20
+ *
21
+ * Reference: https://solana.com/docs/core/transactions#transaction-size
22
+ */
23
+ export const SOLANA_TRANSACTION_MAX_SIZE = 1232;
24
+ export const JITO_STAKE_POOL_ADDRESS = 'Jito4APyf642JPZPx3hGc6WWJ8zPKtRbRs4P815Awbb';
25
+ export const JITOSOL_MINT_ADDRESS = 'J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn';
26
+ export const JITO_STAKE_POOL_RESERVE_ACCOUNT = 'BgKUXdS29YcHCFrPm5M8oLHiTzZaMDjsebggjoaQ6KFL';
27
+ export const JITO_STAKE_POOL_RESERVE_ACCOUNT_TESTNET = 'rrWBQqRqBXYZw3CmPCCcjFxQ2Ds4JFJd7oRQJ997dhz';
28
+ export const JITO_MANAGER_FEE_ACCOUNT = 'feeeFLLsam6xZJFc6UQFrHqkvVt4jfmVvi2BRLkUZ4i';
29
+ export const JITO_MANAGER_FEE_ACCOUNT_TESTNET = 'DH7tmjoQ5zjqcgfYJU22JqmXhP5EY1tkbYpgVWUS2oNo';
30
+ // Sdk instructions, mainly to check decoded types.
31
+ export var ValidInstructionTypesEnum;
32
+ (function (ValidInstructionTypesEnum) {
33
+ ValidInstructionTypesEnum["AdvanceNonceAccount"] = "AdvanceNonceAccount";
34
+ ValidInstructionTypesEnum["Create"] = "Create";
35
+ ValidInstructionTypesEnum["InitializeNonceAccount"] = "InitializeNonceAccount";
36
+ ValidInstructionTypesEnum["StakingInitialize"] = "Initialize";
37
+ ValidInstructionTypesEnum["StakingDelegate"] = "Delegate";
38
+ ValidInstructionTypesEnum["StakingDeactivate"] = "Deactivate";
39
+ ValidInstructionTypesEnum["StakingWithdraw"] = "Withdraw";
40
+ ValidInstructionTypesEnum["Transfer"] = "Transfer";
41
+ ValidInstructionTypesEnum["TokenTransfer"] = "TokenTransfer";
42
+ ValidInstructionTypesEnum["Memo"] = "Memo";
43
+ ValidInstructionTypesEnum["InitializeAssociatedTokenAccount"] = "InitializeAssociatedTokenAccount";
44
+ ValidInstructionTypesEnum["CloseAssociatedTokenAccount"] = "CloseAssociatedTokenAccount";
45
+ ValidInstructionTypesEnum["Allocate"] = "Allocate";
46
+ ValidInstructionTypesEnum["Assign"] = "Assign";
47
+ ValidInstructionTypesEnum["Split"] = "Split";
48
+ ValidInstructionTypesEnum["Authorize"] = "Authorize";
49
+ ValidInstructionTypesEnum["SetComputeUnitLimit"] = "SetComputeUnitLimit";
50
+ ValidInstructionTypesEnum["SetPriorityFee"] = "SetPriorityFee";
51
+ ValidInstructionTypesEnum["MintTo"] = "MintTo";
52
+ ValidInstructionTypesEnum["Burn"] = "Burn";
53
+ ValidInstructionTypesEnum["DepositSol"] = "DepositSol";
54
+ ValidInstructionTypesEnum["WithdrawStake"] = "WithdrawStake";
55
+ ValidInstructionTypesEnum["Approve"] = "Approve";
56
+ ValidInstructionTypesEnum["CustomInstruction"] = "CustomInstruction";
57
+ })(ValidInstructionTypesEnum || (ValidInstructionTypesEnum = {}));
58
+ // Internal instructions types
59
+ export var InstructionBuilderTypes;
60
+ (function (InstructionBuilderTypes) {
61
+ InstructionBuilderTypes["CreateNonceAccount"] = "CreateNonceAccount";
62
+ InstructionBuilderTypes["StakingActivate"] = "Activate";
63
+ InstructionBuilderTypes["StakingDeactivate"] = "Deactivate";
64
+ InstructionBuilderTypes["StakingWithdraw"] = "Withdraw";
65
+ InstructionBuilderTypes["Transfer"] = "Transfer";
66
+ InstructionBuilderTypes["Memo"] = "Memo";
67
+ InstructionBuilderTypes["NonceAdvance"] = "NonceAdvance";
68
+ InstructionBuilderTypes["CreateAssociatedTokenAccount"] = "CreateAssociatedTokenAccount";
69
+ InstructionBuilderTypes["CloseAssociatedTokenAccount"] = "CloseAssociatedTokenAccount";
70
+ InstructionBuilderTypes["TokenTransfer"] = "TokenTransfer";
71
+ InstructionBuilderTypes["StakingAuthorize"] = "Authorize";
72
+ InstructionBuilderTypes["StakingDelegate"] = "Delegate";
73
+ InstructionBuilderTypes["SetComputeUnitLimit"] = "SetComputeUnitLimit";
74
+ InstructionBuilderTypes["SetPriorityFee"] = "SetPriorityFee";
75
+ InstructionBuilderTypes["MintTo"] = "MintTo";
76
+ InstructionBuilderTypes["Burn"] = "Burn";
77
+ InstructionBuilderTypes["CustomInstruction"] = "CustomInstruction";
78
+ InstructionBuilderTypes["VersionedCustomInstruction"] = "VersionedCustomInstruction";
79
+ InstructionBuilderTypes["Approve"] = "Approve";
80
+ InstructionBuilderTypes["WithdrawStake"] = "WithdrawStake";
81
+ })(InstructionBuilderTypes || (InstructionBuilderTypes = {}));
82
+ export const VALID_SYSTEM_INSTRUCTION_TYPES = [
83
+ ValidInstructionTypesEnum.AdvanceNonceAccount,
84
+ ValidInstructionTypesEnum.Create,
85
+ ValidInstructionTypesEnum.StakingInitialize,
86
+ ValidInstructionTypesEnum.StakingDelegate,
87
+ ValidInstructionTypesEnum.StakingDeactivate,
88
+ ValidInstructionTypesEnum.StakingWithdraw,
89
+ ValidInstructionTypesEnum.Transfer,
90
+ ValidInstructionTypesEnum.InitializeNonceAccount,
91
+ ValidInstructionTypesEnum.Memo,
92
+ ValidInstructionTypesEnum.InitializeAssociatedTokenAccount,
93
+ ValidInstructionTypesEnum.CloseAssociatedTokenAccount,
94
+ ValidInstructionTypesEnum.TokenTransfer,
95
+ ValidInstructionTypesEnum.Allocate,
96
+ ValidInstructionTypesEnum.Assign,
97
+ ValidInstructionTypesEnum.Split,
98
+ ValidInstructionTypesEnum.Authorize,
99
+ ValidInstructionTypesEnum.SetComputeUnitLimit,
100
+ ValidInstructionTypesEnum.SetPriorityFee,
101
+ ValidInstructionTypesEnum.MintTo,
102
+ ValidInstructionTypesEnum.Burn,
103
+ ValidInstructionTypesEnum.Approve,
104
+ ValidInstructionTypesEnum.DepositSol,
105
+ ValidInstructionTypesEnum.WithdrawStake,
106
+ ValidInstructionTypesEnum.CustomInstruction,
107
+ ];
108
+ /** Const to check the order of the Wallet Init instructions when decode */
109
+ export const walletInitInstructionIndexes = {
110
+ Create: 0,
111
+ InitializeNonceAccount: 1,
112
+ Memo: 2,
113
+ };
114
+ /** Const to check the order of the Staking Activate instructions when decode */
115
+ export const stakingActivateInstructionsIndexes = {
116
+ Create: 0,
117
+ Initialize: 1,
118
+ Delegate: 2,
119
+ Memo: 3,
120
+ };
121
+ /** Const to check the order of the Marinade Staking Activate instructions when decode */
122
+ export const marinadeStakingActivateInstructionsIndexes = {
123
+ Create: 0,
124
+ Initialize: 1,
125
+ Memo: 2,
126
+ };
127
+ /** Const to check the order of the Jito Staking Activate instructions when decode */
128
+ export const jitoStakingActivateInstructionsIndexes = {
129
+ DepositSol: 0,
130
+ };
131
+ /** Const to check the order of the Jito Staking Activate instructions when decode */
132
+ export const jitoStakingActivateWithATAInstructionsIndexes = {
133
+ InitializeAssociatedTokenAccount: 0,
134
+ DepositSol: 1,
135
+ };
136
+ /** Const to check the order of the Jito Staking Activate instructions when decode */
137
+ export const jitoStakingDeactivateInstructionsIndexes = {
138
+ Approve: 0,
139
+ Create: 1,
140
+ WithdrawStake: 2,
141
+ };
142
+ /** Const to check the order of the Staking Authorize instructions when decode */
143
+ export const stakingAuthorizeInstructionsIndexes = {
144
+ Authorize: 0,
145
+ };
146
+ /** Const to check the order of the Staking Delegate instructions when decode */
147
+ export const stakingDelegateInstructionsIndexes = {
148
+ Delegate: 0,
149
+ };
150
+ /** Const to check the order of the Staking Deactivate instructions when decode */
151
+ export const stakingDeactivateInstructionsIndexes = {
152
+ Deactivate: 0,
153
+ Memo: 1,
154
+ };
155
+ /** Const to check the order of the Marinade Staking Deactivate instructions when decode */
156
+ export const marinadeStakingDeactivateInstructionsIndexes = {
157
+ Transfer: 0,
158
+ Memo: 1,
159
+ };
160
+ /** Const to check the order of the Partial Staking Deactivate instructions when decoded */
161
+ export const stakingPartialDeactivateInstructionsIndexes = {
162
+ Transfer: 0,
163
+ Allocate: 1,
164
+ Assign: 2,
165
+ Split: 3,
166
+ Deactivate: 4,
167
+ Memo: 5,
168
+ };
169
+ /** Const to check the order of the Staking Withdraw instructions when decode */
170
+ export const stakingWithdrawInstructionsIndexes = {
171
+ Withdraw: 0,
172
+ Memo: 1,
173
+ };
174
+ /** Const to check the order of the ATA init instructions when decode */
175
+ export const ataInitInstructionIndexes = {
176
+ InitializeAssociatedTokenAccount: 0,
177
+ Memo: 1,
178
+ };
179
+ /** Const to check the order of the ATA init instructions when decode */
180
+ export const ataCloseInstructionIndexes = {
181
+ CloseAssociatedTokenAccount: 0,
182
+ };
183
+ export const nonceAdvanceInstruction = 'AdvanceNonceAccount';
184
+ export const validInstructionData = '0a00000001000000';
185
+ export const validInstructionData2 = '0a00000000000000';
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLDZDQUE2QyxDQUFDO0FBRTdFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7QUFFOUIsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEdBQUcsQ0FBQztBQUNuQyxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxPQUFPLENBQUM7QUFFeEQsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsYUFBYSxDQUFDO0FBRTlDOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsSUFBSSxDQUFDO0FBRWhELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLDZDQUE2QyxDQUFDO0FBQ3JGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLDhDQUE4QyxDQUFDO0FBQ25GLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLDhDQUE4QyxDQUFDO0FBQzlGLE1BQU0sQ0FBQyxNQUFNLHVDQUF1QyxHQUFHLDZDQUE2QyxDQUFDO0FBQ3JHLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLDZDQUE2QyxDQUFDO0FBQ3RGLE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLDhDQUE4QyxDQUFDO0FBRS9GLG1EQUFtRDtBQUNuRCxNQUFNLENBQU4sSUFBWSx5QkF5Qlg7QUF6QkQsV0FBWSx5QkFBeUI7SUFDbkMsd0VBQTJDLENBQUE7SUFDM0MsOENBQWlCLENBQUE7SUFDakIsOEVBQWlELENBQUE7SUFDakQsNkRBQWdDLENBQUE7SUFDaEMseURBQTRCLENBQUE7SUFDNUIsNkRBQWdDLENBQUE7SUFDaEMseURBQTRCLENBQUE7SUFDNUIsa0RBQXFCLENBQUE7SUFDckIsNERBQStCLENBQUE7SUFDL0IsMENBQWEs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QyxFQUFFLENBQUM7SUFDbkMsSUFBSSxFQUFFLENBQUM7Q0FDQyxDQUFDO0FBRVgsd0VBQXdFO0FBQ3hFLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHO0lBQ3hDLDJCQUEyQixFQUFFLENBQUM7Q0FDdEIsQ0FBQztBQUVYLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLHFCQUFxQixDQUFDO0FBQzdELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLGtCQUFrQixDQUFDO0FBQ3ZELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsaWRJbnN0cnVjdGlvblR5cGVzIH0gZnJvbSAnLi9pZmFjZSc7XG5cbmV4cG9ydCBjb25zdCBNRU1PX1BST0dSQU1fUEsgPSAnTWVtb1NxNGdxQUJBWEtiOTZxbkg4VHlzTmNXeE15V0NxWGdETEdtZmNIcic7XG5cbmV4cG9ydCBjb25zdCBTRUVEX0xFTkdUSCA9IDMyO1xuXG5leHBvcnQgY29uc3QgTUFYX01FTU9fTEVOR1RIID0gMTMwO1xuZXhwb3J0IGNvbnN0IFNUQUtFX0FDQ09VTlRfUkVOVF9FWEVNUFRfQU1PVU5UID0gMjI4Mjg4MDtcblxuZXhwb3J0IGNvbnN0IFVOQVZBSUxBQkxFX1RFWFQgPSAnVU5BVkFJTEFCTEUnO1xuXG4vKipcbiAqIE1heGltdW0gb3Zlci10aGUtd2lyZSBzaXplIG9mIGEgU29sYW5hIHRyYW5zYWN0aW9uIChpbiBieXRlcylcbiAqXG4gKiBTb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbnphLXh5ei9hZ2F2ZS9ibG9iL3YyLjEuMTMvc2RrL3BhY2tldC9zcmMvbGliLnJzI0wyNy1MMjlcbiAqXG4gKiBDYWxjdWxhdGlvbjpcbiAqIC0gSVB2NiBtaW5pbXVtIE1UVTogMTI4MCBieXRlc1xuICogLSBJUHY2IGhlYWRlcjogNDAgYnl0ZXNcbiAqIC0gRnJhZ21lbnQvVURQIGhlYWRlcjogOCBieXRlc1xuICogLSBSZXN1bHQ6IDEyODAgLSA0MCAtIDggPSAxMjMyIGJ5dGVzXG4gKlxuICogVGhpcyBsaW1pdCBpcyBkZXNpZ25lZCB0byBhdm9pZCBwYWNrZXQgZnJhZ21lbnRhdGlvbiBvbiB0eXBpY2FsIGludGVybmV0IGluZnJhc3RydWN0dXJlLlxuICogVHJhbnNhY3Rpb25zIGV4Y2VlZGluZyB0aGlzIGxpbWl0IHdpbGwgZmFpbCB0byBzZXJpYWxpemUgd2l0aCBhIFJhbmdlRXJyb3IgZHVyaW5nXG4gKiB0aGUgZW5jb2Rpbmcgb2YgdGhlIHRyYW5zYWN0aW9uIG1lc3NhZ2UuXG4gKlxuICogUmVmZXJlbmNlOiBodHRwczovL3NvbGFuYS5jb20vZG9jcy9jb3JlL3RyYW5zYWN0aW9ucyN0cmFuc2FjdGlvbi1zaXplXG4gKi9cbmV4cG9ydCBjb25zdCBTT0xBTkFfVFJBTlNBQ1RJT05fTUFYX1NJWkUgPSAxMjMyO1xuXG5leHBvcnQgY29uc3QgSklUT19TVEFLRV9QT09MX0FERFJFU1MgPSAnSml0bzRBUHlmNjQySlBaUHgzaEdjNldXSjh6UEt0UmJSczRQODE1QXdiYic7XG5leHBvcnQgY29uc3QgSklUT1NPTF9NSU5UX0FERFJFU1MgPSAnSjF0b3NvMXVDazNSTG1qb3JoVHRyVndZOUhKN1g4Vjl5WWFjNlk3a0dDUG4nO1xuZXhwb3J0IGNvbnN0IEpJVE9fU1RBS0VfUE9PTF9SRVNFUlZFX0FDQ09VTlQgPSAnQmdLVVhkUzI5WWNIQ0ZyUG01TThvTEhpVHpaYU1EanNlYmdnam9hUTZLRkwnO1xuZXhwb3J0IGNvbnN0IEpJVE9fU1RBS0VfUE9PTF9SRVNFUlZFX0FDQ09VTlRfVEVTVE5FVCA9ICdycldCUXFScUJYWVp3M0NtUENDY2pGeFEyRHM0SkZKZDdvUlFKOTk3ZGh6JztcbmV4cG9ydCBjb25zdCBKSVRPX01BTkFHRVJfRkVFX0FDQ09VTlQgPSAnZmVlZUZMTHNhbTZ4WkpGYzZVUUZySHFrdlZ0NGpmbVZ2aTJCUkxrVVo0aSc7XG5leHBvcnQgY29uc3QgSklUT19NQU5BR0VSX0ZFRV9BQ0NPVU5UX1RFU1RORVQgPSAnREg3dG1qb1E1empxY2dmWUpVMjJKcW1YaFA1RVkxdGtiWXBnVldVUzJvTm8nO1xuXG4vLyBTZGsgaW5zdHJ1Y3Rpb25zLCBtYWlubHkgdG8gY2hlY2sgZGVjb2RlZCB0eXBlcy5cbmV4cG9ydCBlbnVtIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0ge1xuICBBZHZhbmNlTm9uY2VBY2NvdW50ID0gJ0FkdmFuY2VOb25jZUFjY291bnQnLFxuICBDcmVhdGUgPSAnQ3JlYXRlJyxcbiAgSW5pdGlhbGl6ZU5vbmNlQWNjb3VudCA9ICdJbml0aWFsaXplTm9uY2VBY2NvdW50JyxcbiAgU3Rha2luZ0luaXRpYWxpemUgPSAnSW5pdGlhbGl6ZScsXG4gIFN0YWtpbmdEZWxlZ2F0ZSA9ICdEZWxlZ2F0ZScsXG4gIFN0YWtpbmdEZWFjdGl2YXRlID0gJ0RlYWN0aXZhdGUnLFxuICBTdGFraW5nV2l0aGRyYXcgPSAnV2l0aGRyYXcnLFxuICBUcmFuc2ZlciA9ICdUcmFuc2ZlcicsXG4gIFRva2VuVHJhbnNmZXIgPSAnVG9rZW5UcmFuc2ZlcicsXG4gIE1lbW8gPSAnTWVtbycsXG4gIEluaXRpYWxpemVBc3NvY2lhdGVkVG9rZW5BY2NvdW50ID0gJ0luaXRpYWxpemVBc3NvY2lhdGVkVG9rZW5BY2NvdW50JyxcbiAgQ2xvc2VBc3NvY2lhdGVkVG9rZW5BY2NvdW50ID0gJ0Nsb3NlQXNzb2NpYXRlZFRva2VuQWNjb3VudCcsXG4gIEFsbG9jYXRlID0gJ0FsbG9jYXRlJyxcbiAgQXNzaWduID0gJ0Fzc2lnbicsXG4gIFNwbGl0ID0gJ1NwbGl0JyxcbiAgQXV0aG9yaXplID0gJ0F1dGhvcml6ZScsXG4gIFNldENvbXB1dGVVbml0TGltaXQgPSAnU2V0Q29tcHV0ZVVuaXRMaW1pdCcsXG4gIFNldFByaW9yaXR5RmVlID0gJ1NldFByaW9yaXR5RmVlJyxcbiAgTWludFRvID0gJ01pbnRUbycsXG4gIEJ1cm4gPSAnQnVybicsXG4gIERlcG9zaXRTb2wgPSAnRGVwb3NpdFNvbCcsXG4gIFdpdGhkcmF3U3Rha2UgPSAnV2l0aGRyYXdTdGFrZScsXG4gIEFwcHJvdmUgPSAnQXBwcm92ZScsXG4gIEN1c3RvbUluc3RydWN0aW9uID0gJ0N1c3RvbUluc3RydWN0aW9uJyxcbn1cblxuLy8gSW50ZXJuYWwgaW5zdHJ1Y3Rpb25zIHR5cGVzXG5leHBvcnQgZW51bSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcyB7XG4gIENyZWF0ZU5vbmNlQWNjb3VudCA9ICdDcmVhdGVOb25jZUFjY291bnQnLFxuICBTdGFraW5nQWN0aXZhdGUgPSAnQWN0aXZhdGUnLFxuICBTdGFraW5nRGVhY3RpdmF0ZSA9ICdEZWFjdGl2YXRlJyxcbiAgU3Rha2luZ1dpdGhkcmF3ID0gJ1dpdGhkcmF3JyxcbiAgVHJhbnNmZXIgPSAnVHJhbnNmZXInLFxuICBNZW1vID0gJ01lbW8nLFxuICBOb25jZUFkdmFuY2UgPSAnTm9uY2VBZHZhbmNlJyxcbiAgQ3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudCA9ICdDcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50JyxcbiAgQ2xvc2VBc3NvY2lhdGVkVG9rZW5BY2NvdW50ID0gJ0Nsb3NlQXNzb2NpYXRlZFRva2VuQWNjb3VudCcsXG4gIFRva2VuVHJhbnNmZXIgPSAnVG9rZW5UcmFuc2ZlcicsXG4gIFN0YWtpbmdBdXRob3JpemUgPSAnQXV0aG9yaXplJyxcbiAgU3Rha2luZ0RlbGVnYXRlID0gJ0RlbGVnYXRlJyxcbiAgU2V0Q29tcHV0ZVVuaXRMaW1pdCA9ICdTZXRDb21wdXRlVW5pdExpbWl0JyxcbiAgU2V0UHJpb3JpdHlGZWUgPSAnU2V0UHJpb3JpdHlGZWUnLFxuICBNaW50VG8gPSAnTWludFRvJyxcbiAgQnVybiA9ICdCdXJuJyxcbiAgQ3VzdG9tSW5zdHJ1Y3Rpb24gPSAnQ3VzdG9tSW5zdHJ1Y3Rpb24nLFxuICBWZXJzaW9uZWRDdXN0b21JbnN0cnVjdGlvbiA9ICdWZXJzaW9uZWRDdXN0b21JbnN0cnVjdGlvbicsXG4gIEFwcHJvdmUgPSAnQXBwcm92ZScsXG4gIFdpdGhkcmF3U3Rha2UgPSAnV2l0aGRyYXdTdGFrZScsXG59XG5cbmV4cG9ydCBjb25zdCBWQUxJRF9TWVNURU1fSU5TVFJVQ1RJT05fVFlQRVM6IFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc1tdID0gW1xuICBWYWxpZEluc3RydWN0aW9uVHlwZXNFbnVtLkFkdmFuY2VOb25jZUFjY291bnQsXG4gIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uQ3JlYXRlLFxuICBWYWxpZEluc3RydWN0aW9uVHlwZXNFbnVtLlN0YWtpbmdJbml0aWFsaXplLFxuICBWYWxpZEluc3RydWN0aW9uVHlwZXNFbnVtLlN0YWtpbmdEZWxlZ2F0ZSxcbiAgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5TdGFraW5nRGVhY3RpdmF0ZSxcbiAgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5TdGFraW5nV2l0aGRyYXcsXG4gIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uVHJhbnNmZXIsXG4gIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uSW5pdGlhbGl6ZU5vbmNlQWNjb3VudCxcbiAgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5NZW1vLFxuICBWYWxpZEluc3RydWN0aW9uVHlwZXNFbnVtLkluaXRpYWxpemVBc3NvY2lhdGVkVG9rZW5BY2NvdW50LFxuICBWYWxpZEluc3RydWN0aW9uVHlwZXNFbnVtLkNsb3NlQXNzb2NpYXRlZFRva2VuQWNjb3VudCxcbiAgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5Ub2tlblRyYW5zZmVyLFxuICBWYWxpZEluc3RydWN0aW9uVHlwZXNFbnVtLkFsbG9jYXRlLFxuICBWYWxpZEluc3RydWN0aW9uVHlwZXNFbnVtLkFzc2lnbixcbiAgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5TcGxpdCxcbiAgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5BdXRob3JpemUsXG4gIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uU2V0Q29tcHV0ZVVuaXRMaW1pdCxcbiAgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5TZXRQcmlvcml0eUZlZSxcbiAgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5NaW50VG8sXG4gIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uQnVybixcbiAgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5BcHByb3ZlLFxuICBWYWxpZEluc3RydWN0aW9uVHlwZXNFbnVtLkRlcG9zaXRTb2wsXG4gIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uV2l0aGRyYXdTdGFrZSxcbiAgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bS5DdXN0b21JbnN0cnVjdGlvbixcbl07XG5cbi8qKiBDb25zdCB0byBjaGVjayB0aGUgb3JkZXIgb2YgdGhlIFdhbGxldCBJbml0IGluc3RydWN0aW9ucyB3aGVuIGRlY29kZSAqL1xuZXhwb3J0IGNvbnN0IHdhbGxldEluaXRJbnN0cnVjdGlvbkluZGV4ZXMgPSB7XG4gIENyZWF0ZTogMCxcbiAgSW5pdGlhbGl6ZU5vbmNlQWNjb3VudDogMSxcbiAgTWVtbzogMixcbn0gYXMgY29uc3Q7XG5cbi8qKiBDb25zdCB0byBjaGVjayB0aGUgb3JkZXIgb2YgdGhlIFN0YWtpbmcgQWN0aXZhdGUgaW5zdHJ1Y3Rpb25zIHdoZW4gZGVjb2RlICovXG5leHBvcnQgY29uc3Qgc3Rha2luZ0FjdGl2YXRlSW5zdHJ1Y3Rpb25zSW5kZXhlcyA9IHtcbiAgQ3JlYXRlOiAwLFxuICBJbml0aWFsaXplOiAxLFxuICBEZWxlZ2F0ZTogMixcbiAgTWVtbzogMyxcbn0gYXMgY29uc3Q7XG5cbi8qKiBDb25zdCB0byBjaGVjayB0aGUgb3JkZXIgb2YgdGhlIE1hcmluYWRlIFN0YWtpbmcgQWN0aXZhdGUgaW5zdHJ1Y3Rpb25zIHdoZW4gZGVjb2RlICovXG5leHBvcnQgY29uc3QgbWFyaW5hZGVTdGFraW5nQWN0aXZhdGVJbnN0cnVjdGlvbnNJbmRleGVzID0ge1xuICBDcmVhdGU6IDAsXG4gIEluaXRpYWxpemU6IDEsXG4gIE1lbW86IDIsXG59IGFzIGNvbnN0O1xuXG4vKiogQ29uc3QgdG8gY2hlY2sgdGhlIG9yZGVyIG9mIHRoZSBKaXRvIFN0YWtpbmcgQWN0aXZhdGUgaW5zdHJ1Y3Rpb25zIHdoZW4gZGVjb2RlICovXG5leHBvcnQgY29uc3Qgaml0b1N0YWtpbmdBY3RpdmF0ZUluc3RydWN0aW9uc0luZGV4ZXMgPSB7XG4gIERlcG9zaXRTb2w6IDAsXG59IGFzIGNvbnN0O1xuXG4vKiogQ29uc3QgdG8gY2hlY2sgdGhlIG9yZGVyIG9mIHRoZSBKaXRvIFN0YWtpbmcgQWN0aXZhdGUgaW5zdHJ1Y3Rpb25zIHdoZW4gZGVjb2RlICovXG5leHBvcnQgY29uc3Qgaml0b1N0YWtpbmdBY3RpdmF0ZVdpdGhBVEFJbnN0cnVjdGlvbnNJbmRleGVzID0ge1xuICBJbml0aWFsaXplQXNzb2NpYXRlZFRva2VuQWNjb3VudDogMCxcbiAgRGVwb3NpdFNvbDogMSxcbn0gYXMgY29uc3Q7XG5cbi8qKiBDb25zdCB0byBjaGVjayB0aGUgb3JkZXIgb2YgdGhlIEppdG8gU3Rha2luZyBBY3RpdmF0ZSBpbnN0cnVjdGlvbnMgd2hlbiBkZWNvZGUgKi9cbmV4cG9ydCBjb25zdCBqaXRvU3Rha2luZ0RlYWN0aXZhdGVJbnN0cnVjdGlvbnNJbmRleGVzID0ge1xuICBBcHByb3ZlOiAwLFxuICBDcmVhdGU6IDEsXG4gIFdpdGhkcmF3U3Rha2U6IDIsXG59IGFzIGNvbnN0O1xuXG4vKiogQ29uc3QgdG8gY2hlY2sgdGhlIG9yZGVyIG9mIHRoZSBTdGFraW5nIEF1dGhvcml6ZSBpbnN0cnVjdGlvbnMgd2hlbiBkZWNvZGUgKi9cbmV4cG9ydCBjb25zdCBzdGFraW5nQXV0aG9yaXplSW5zdHJ1Y3Rpb25zSW5kZXhlcyA9IHtcbiAgQXV0aG9yaXplOiAwLFxufSBhcyBjb25zdDtcblxuLyoqIENvbnN0IHRvIGNoZWNrIHRoZSBvcmRlciBvZiB0aGUgU3Rha2luZyBEZWxlZ2F0ZSBpbnN0cnVjdGlvbnMgd2hlbiBkZWNvZGUgKi9cbmV4cG9ydCBjb25zdCBzdGFraW5nRGVsZWdhdGVJbnN0cnVjdGlvbnNJbmRleGVzID0ge1xuICBEZWxlZ2F0ZTogMCxcbn0gYXMgY29uc3Q7XG5cbi8qKiBDb25zdCB0byBjaGVjayB0aGUgb3JkZXIgb2YgdGhlIFN0YWtpbmcgRGVhY3RpdmF0ZSBpbnN0cnVjdGlvbnMgd2hlbiBkZWNvZGUgKi9cbmV4cG9ydCBjb25zdCBzdGFraW5nRGVhY3RpdmF0ZUluc3RydWN0aW9uc0luZGV4ZXMgPSB7XG4gIERlYWN0aXZhdGU6IDAsXG4gIE1lbW86IDEsXG59IGFzIGNvbnN0O1xuXG4vKiogQ29uc3QgdG8gY2hlY2sgdGhlIG9yZGVyIG9mIHRoZSBNYXJpbmFkZSBTdGFraW5nIERlYWN0aXZhdGUgaW5zdHJ1Y3Rpb25zIHdoZW4gZGVjb2RlICovXG5leHBvcnQgY29uc3QgbWFyaW5hZGVTdGFraW5nRGVhY3RpdmF0ZUluc3RydWN0aW9uc0luZGV4ZXMgPSB7XG4gIFRyYW5zZmVyOiAwLFxuICBNZW1vOiAxLFxufSBhcyBjb25zdDtcblxuLyoqIENvbnN0IHRvIGNoZWNrIHRoZSBvcmRlciBvZiB0aGUgUGFydGlhbCBTdGFraW5nIERlYWN0aXZhdGUgaW5zdHJ1Y3Rpb25zIHdoZW4gZGVjb2RlZCAqL1xuZXhwb3J0IGNvbnN0IHN0YWtpbmdQYXJ0aWFsRGVhY3RpdmF0ZUluc3RydWN0aW9uc0luZGV4ZXMgPSB7XG4gIFRyYW5zZmVyOiAwLFxuICBBbGxvY2F0ZTogMSxcbiAgQXNzaWduOiAyLFxuICBTcGxpdDogMyxcbiAgRGVhY3RpdmF0ZTogNCxcbiAgTWVtbzogNSxcbn0gYXMgY29uc3Q7XG5cbi8qKiBDb25zdCB0byBjaGVjayB0aGUgb3JkZXIgb2YgdGhlIFN0YWtpbmcgV2l0aGRyYXcgaW5zdHJ1Y3Rpb25zIHdoZW4gZGVjb2RlICovXG5leHBvcnQgY29uc3Qgc3Rha2luZ1dpdGhkcmF3SW5zdHJ1Y3Rpb25zSW5kZXhlcyA9IHtcbiAgV2l0aGRyYXc6IDAsXG4gIE1lbW86IDEsXG59IGFzIGNvbnN0O1xuXG4vKiogQ29uc3QgdG8gY2hlY2sgdGhlIG9yZGVyIG9mIHRoZSBBVEEgaW5pdCBpbnN0cnVjdGlvbnMgd2hlbiBkZWNvZGUgKi9cbmV4cG9ydCBjb25zdCBhdGFJbml0SW5zdHJ1Y3Rpb25JbmRleGVzID0ge1xuICBJbml0aWFsaXplQXNzb2NpYXRlZFRva2VuQWNjb3VudDogMCxcbiAgTWVtbzogMSxcbn0gYXMgY29uc3Q7XG5cbi8qKiBDb25zdCB0byBjaGVjayB0aGUgb3JkZXIgb2YgdGhlIEFUQSBpbml0IGluc3RydWN0aW9ucyB3aGVuIGRlY29kZSAqL1xuZXhwb3J0IGNvbnN0IGF0YUNsb3NlSW5zdHJ1Y3Rpb25JbmRleGVzID0ge1xuICBDbG9zZUFzc29jaWF0ZWRUb2tlbkFjY291bnQ6IDAsXG59IGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3Qgbm9uY2VBZHZhbmNlSW5zdHJ1Y3Rpb24gPSAnQWR2YW5jZU5vbmNlQWNjb3VudCc7XG5leHBvcnQgY29uc3QgdmFsaWRJbnN0cnVjdGlvbkRhdGEgPSAnMGEwMDAwMDAwMTAwMDAwMCc7XG5leHBvcnQgY29uc3QgdmFsaWRJbnN0cnVjdGlvbkRhdGEyID0gJzBhMDAwMDAwMDAwMDAwMDAnO1xuIl19
@@ -0,0 +1,72 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import { SolInstruction, SolVersionedInstruction, TransactionType } from '@bitgo-beta/sdk-core';
3
+ import { Transaction } from './transaction';
4
+ import { TransactionBuilder } from './transactionBuilder';
5
+ import { CustomInstruction, VersionedCustomInstruction, VersionedTransactionData } from './iface';
6
+ /**
7
+ * Transaction builder for custom Solana instructions.
8
+ * Allows building transactions with any set of raw Solana instructions.
9
+ */
10
+ export declare class CustomInstructionBuilder extends TransactionBuilder {
11
+ private _customInstructions;
12
+ constructor(_coinConfig: Readonly<CoinConfig>);
13
+ protected get transactionType(): TransactionType;
14
+ /**
15
+ * Initialize the builder from an existing transaction
16
+ */
17
+ initBuilder(tx: Transaction): void;
18
+ /**
19
+ * Add a custom instruction to the transaction
20
+ * @param instruction - The custom instruction to add
21
+ * @returns This builder instance
22
+ */
23
+ addCustomInstruction(instruction: SolInstruction | SolVersionedInstruction): this;
24
+ /**
25
+ * Add multiple custom instructions to the transaction
26
+ * @param instructions - Array of custom instructions to add
27
+ * @returns This builder instance
28
+ */
29
+ addCustomInstructions(instructions: (SolInstruction | SolVersionedInstruction)[]): this;
30
+ /**
31
+ * Build transaction from deconstructed VersionedTransaction data
32
+ * @param data - VersionedTransactionData containing instructions, ALTs, and account keys
33
+ * @returns This builder instance
34
+ */
35
+ fromVersionedTransactionData(data: VersionedTransactionData): this;
36
+ /**
37
+ * Inject nonce advance instruction into versioned transaction data for durable nonce support.
38
+ * Reorders accounts so signers appear first (required by Solana MessageV0 format).
39
+ * @param data - Original versioned transaction data
40
+ * @returns Modified versioned transaction data with nonce advance instruction
41
+ * @private
42
+ */
43
+ private injectNonceAdvanceInstruction;
44
+ /**
45
+ * Clear all custom instructions and versioned transaction data
46
+ * @returns This builder instance
47
+ */
48
+ clearInstructions(): this;
49
+ /**
50
+ * Get the current custom instructions
51
+ * @returns Array of custom instructions
52
+ */
53
+ getInstructions(): (CustomInstruction | VersionedCustomInstruction)[];
54
+ /**
55
+ * Validate custom instruction format
56
+ * @param instruction - The instruction to validate
57
+ */
58
+ private validateInstruction;
59
+ /**
60
+ * Validate traditional SolInstruction format
61
+ * @param instruction - The traditional instruction to validate
62
+ */
63
+ private validateSolInstruction;
64
+ /**
65
+ * Validate versioned instruction format
66
+ * @param instruction - The versioned instruction to validate
67
+ */
68
+ private validateVersionedInstruction;
69
+ /** @inheritdoc */
70
+ protected buildImplementation(): Promise<Transaction>;
71
+ }
72
+ //# sourceMappingURL=customInstructionBuilder.d.ts.map
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tSW5zdHJ1Y3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jdXN0b21JbnN0cnVjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHFCQUFxQixFQUEyQyxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2SCxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXRELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNqRCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUI7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHdCQUF5QixTQUFRLGtCQUFrQjtJQUc5RCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUhiLHdCQUFtQixHQUF1RCxFQUFFLENBQUM7SUFJckYsQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLGVBQWUsQ0FBQyxRQUFRLENBQUM7SUFDbEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVyxDQUFDLEVBQWU7UUFDekIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV0QixLQUFLLE1BQU0sV0FBVyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2pELElBQUksV0FBVyxDQUFDLElBQUksS0FBSyx1QkFBdUIsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUNuRSxNQUFNLGlCQUFpQixHQUFHLFdBQWdDLENBQUM7Z0JBQzNELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0RCxDQUFDO2lCQUFNLElBQUksV0FBVyxDQUFDLElBQUksS0FBSyx1QkFBdUIsQ0FBQywwQkFBMEIsRUFBRSxDQUFDO2dCQUNuRixNQUFNLDBCQUEwQixHQUFHLFdBQXlDLENBQUM7Z0JBQzdFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMvRCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsb0JBQW9CLENBQUMsV0FBcUQ7UUFDeEUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRXRDLElBQUksc0JBQXNCLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUN4QyxNQUFNLGlCQUFpQixHQUFzQjtnQkFDM0MsSUFBSSxFQUFFLHVCQUF1QixDQUFDLGlCQUFpQjtnQkFDL0MsTUFBTSxFQUFFLFdBQVc7YUFDcEIsQ0FBQztZQUNGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNuRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sMEJBQTBCLEdBQStCO2dCQUM3RCxJQUFJLEVBQUUsdUJBQXVCLENBQUMsMEJBQTBCO2dCQUN4RCxNQUFNLEVBQUUsV0FBVzthQUNwQixDQUFDO1lBQ0YsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gscUJBQXFCLENBQUMsWUFBMEQ7UUFDOUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUNqQyxNQUFNLElBQUkscUJBQXFCLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBQ0QsS0FBSyxNQUFNLFdBQVcsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCw0QkFBNEIsQ0FBQyxJQUE4QjtRQUN6RCxJQUFJLENBQUM7WUFDSCxJQUFJLENBQUMsSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUN0QyxNQUFNLElBQUkscUJBQXFCLENBQUMsaURBQWlELENBQUMsQ0FBQztZQUNyRixDQUFDO1lBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDMUYsTUFBTSxJQUFJLHFCQUFxQixDQUFDLGlEQUFpRCxDQUFDLENBQUM7WUFDckYsQ0FBQztZQUVELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUM7Z0JBQzdDLE1BQU0sSUFBSSxxQkFBcUIsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO1lBQzFFLENBQUM7WUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNsRixNQUFNLElBQUkscUJBQXFCLENBQUMsNkNBQTZDLENBQUMsQ0FBQztZQUNqRixDQUFDO1lBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLElBQUksT0FBTyxJQUFJLENBQUMsYUFBYSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUNsRSxNQUFNLElBQUkscUJBQXFCLENBQUMsc0NBQXNDLENBQUMsQ0FBQztZQUMxRSxDQUFDO1lBQ0QsSUFDRSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLEtBQUssUUFBUTtnQkFDNUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLEVBQzVDLENBQUM7Z0JBQ0QsTUFBTSxJQUFJLHFCQUFxQixDQUFDLG1FQUFtRSxDQUFDLENBQUM7WUFDdkcsQ0FBQztZQUNELElBQ0UsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLHlCQUF5QixLQUFLLFFBQVE7Z0JBQ2hFLElBQUksQ0FBQyxhQUFhLENBQUMseUJBQXlCLEdBQUcsQ0FBQyxFQUNoRCxDQUFDO2dCQUNELE1BQU0sSUFBSSxxQkFBcUIsQ0FBQyx1RUFBdUUsQ0FBQyxDQUFDO1lBQzNHLENBQUM7WUFDRCxJQUNFLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQywyQkFBMkIsS0FBSyxRQUFRO2dCQUNsRSxJQUFJLENBQUMsYUFBYSxDQUFDLDJCQUEyQixHQUFHLENBQUMsRUFDbEQsQ0FBQztnQkFDRCxNQUFNLElBQUkscUJBQXFCLENBQUMseUVBQXlFLENBQUMsQ0FBQztZQUM3RyxDQUFDO1lBRUQsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDO1lBQ3pCLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM5QyxhQUFhLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNELENBQUM7WUFFRCxJQUFJLENBQUMscUJBQXFCLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFFaEUsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDeEQsQ0FBQztZQUNELElBQUksQ0FBQyxZQUFZLENBQUMsMkJBQTJCLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFN0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFL0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksYUFBYSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDaEUsSUFBSSxDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEQsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLEtBQUssWUFBWSxxQkFBcUIsRUFBRSxDQUFDO2dCQUMzQyxNQUFNLEtBQUssQ0FBQztZQUNkLENBQUM7WUFDRCxNQUFNLElBQUkscUJBQXFCLENBQUMsaURBQWlELEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3BHLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssNkJBQTZCLENBQUMsSUFBOEI7UUFDbEUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVcsQ0FBQyxNQUFNLENBQUM7UUFDMUUsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxRCxNQUFNLHlCQUF5QixHQUFHLGdDQUFnQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRTlFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMscUJBQXFCLENBQUM7UUFDNUQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDcEUsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXBFLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztZQUNqRCxlQUFlLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzNDLE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxlQUFlLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDO1FBRTVELElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztZQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUM7WUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMseUJBQXlCLENBQUM7WUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFFN0YsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLEdBQUcsZUFBZSxFQUFFLEdBQUcsVUFBVSxDQUFDLENBQUM7UUFFakUsTUFBTSx1QkFBdUIsR0FBNEI7WUFDdkQsY0FBYyxFQUFFLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7WUFDNUQsaUJBQWlCLEVBQUU7Z0JBQ2pCLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQztnQkFDaEQsb0JBQW9CLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDO2dCQUN2RCxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUM7YUFDaEQ7WUFDRCxJQUFJLEVBQUUsT0FBTyxFQUFFLDJEQUEyRDtTQUMzRSxDQUFDO1FBRUYsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuSCxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDckUsY0FBYyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjO1lBQ3hFLGlCQUFpQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDO1lBQ2hGLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtTQUNoQixDQUFDLENBQUMsQ0FBQztRQUVKLE9BQU87WUFDTCxHQUFHLElBQUk7WUFDUCxxQkFBcUIsRUFBRSxDQUFDLHVCQUF1QixFQUFFLEdBQUcsb0JBQW9CLENBQUM7WUFDekUsaUJBQWlCLEVBQUUsb0JBQW9CO1lBQ3ZDLGFBQWEsRUFBRTtnQkFDYixHQUFHLElBQUksQ0FBQyxhQUFhO2dCQUNyQixxQkFBcUIsRUFBRSxlQUFlLENBQUMsTUFBTTthQUM5QztTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsaUJBQWlCO1FBQ2YsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztRQUM5QixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLDJCQUEyQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlO1FBQ2IsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7T0FHRztJQUNLLG1CQUFtQixDQUFDLFdBQXFEO1FBQy9FLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUkscUJBQXFCLENBQUMseUNBQXlDLENBQUMsQ0FBQztRQUM3RSxDQUFDO1FBRUQsSUFBSSxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqRCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNLLHNCQUFzQixDQUFDLFdBQTJCO1FBQ3hELElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxJQUFJLE9BQU8sV0FBVyxDQUFDLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN4RSxNQUFNLElBQUkscUJBQXFCLENBQUMsZ0RBQWdELENBQUMsQ0FBQztRQUNwRixDQUFDO1FBRUQsdURBQXVEO1FBQ3ZELElBQUksQ0FBQztZQUNILElBQUksU0FBUyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2QyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxxQkFBcUIsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDMUQsTUFBTSxJQUFJLHFCQUFxQixDQUFDLHdDQUF3QyxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUVELG9CQUFvQjtRQUNwQixLQUFLLE1BQU0sR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxPQUFPLEdBQUcsQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ2xELE1BQU0sSUFBSSxxQkFBcUIsQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1lBQzlFLENBQUM7WUFFRCxJQUFJLENBQUM7Z0JBQ0gsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzVCLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE1BQU0sSUFBSSxxQkFBcUIsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1lBQ25FLENBQUM7WUFFRCxJQUFJLE9BQU8sR0FBRyxDQUFDLFFBQVEsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDdEMsTUFBTSxJQUFJLHFCQUFxQixDQUFDLDZDQUE2QyxDQUFDLENBQUM7WUFDakYsQ0FBQztZQUVELElBQUksT0FBTyxHQUFHLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUN4QyxNQUFNLElBQUkscUJBQXFCLENBQUMsK0NBQStDLENBQUMsQ0FBQztZQUNuRixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksT0FBTyxXQUFXLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzNFLE1BQU0sSUFBSSxxQkFBcUIsQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1FBQzdFLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssNEJBQTRCLENBQUMsV0FBb0M7UUFDdkUsSUFBSSxPQUFPLFdBQVcsQ0FBQyxjQUFjLEtBQUssUUFBUSxJQUFJLFdBQVcsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckYsTUFBTSxJQUFJLHFCQUFxQixDQUFDLCtEQUErRCxDQUFDLENBQUM7UUFDbkcsQ0FBQztRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7WUFDcEYsTUFBTSxJQUFJLHFCQUFxQixDQUFDLCtEQUErRCxDQUFDLENBQUM7UUFDbkcsQ0FBQztRQUVELGtDQUFrQztRQUNsQyxLQUFLLE1BQU0sS0FBSyxJQUFJLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ2xELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDM0MsTUFBTSxJQUFJLHFCQUFxQixDQUFDLG9EQUFvRCxDQUFDLENBQUM7WUFDeEYsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLFdBQVcsQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLE9BQU8sV0FBVyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMzRSxNQUFNLElBQUkscUJBQXFCLENBQUMsbURBQW1ELENBQUMsQ0FBQztRQUN2RixDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNSLEtBQUssQ0FBQyxtQkFBbUI7UUFDakMsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLG1EQUFtRCxDQUFDLENBQUM7UUFFakcsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFdkQsT0FBTyxNQUFNLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzNDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgU29sSW5zdHJ1Y3Rpb24sIFNvbFZlcnNpb25lZEluc3RydWN0aW9uLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBQdWJsaWNLZXksIFN5c3RlbVByb2dyYW0sIFNZU1ZBUl9SRUNFTlRfQkxPQ0tIQVNIRVNfUFVCS0VZIH0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IEN1c3RvbUluc3RydWN0aW9uLCBWZXJzaW9uZWRDdXN0b21JbnN0cnVjdGlvbiwgVmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBpc1NvbExlZ2FjeUluc3RydWN0aW9uIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbi8qKlxuICogVHJhbnNhY3Rpb24gYnVpbGRlciBmb3IgY3VzdG9tIFNvbGFuYSBpbnN0cnVjdGlvbnMuXG4gKiBBbGxvd3MgYnVpbGRpbmcgdHJhbnNhY3Rpb25zIHdpdGggYW55IHNldCBvZiByYXcgU29sYW5hIGluc3RydWN0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIEN1c3RvbUluc3RydWN0aW9uQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgX2N1c3RvbUluc3RydWN0aW9uczogKEN1c3RvbUluc3RydWN0aW9uIHwgVmVyc2lvbmVkQ3VzdG9tSW5zdHJ1Y3Rpb24pW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuQ3VzdG9tVHg7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSB0aGUgYnVpbGRlciBmcm9tIGFuIGV4aXN0aW5nIHRyYW5zYWN0aW9uXG4gICAqL1xuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG5cbiAgICBmb3IgKGNvbnN0IGluc3RydWN0aW9uIG9mIHRoaXMuX2luc3RydWN0aW9uc0RhdGEpIHtcbiAgICAgIGlmIChpbnN0cnVjdGlvbi50eXBlID09PSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DdXN0b21JbnN0cnVjdGlvbikge1xuICAgICAgICBjb25zdCBjdXN0b21JbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uIGFzIEN1c3RvbUluc3RydWN0aW9uO1xuICAgICAgICB0aGlzLmFkZEN1c3RvbUluc3RydWN0aW9uKGN1c3RvbUluc3RydWN0aW9uLnBhcmFtcyk7XG4gICAgICB9IGVsc2UgaWYgKGluc3RydWN0aW9uLnR5cGUgPT09IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlZlcnNpb25lZEN1c3RvbUluc3RydWN0aW9uKSB7XG4gICAgICAgIGNvbnN0IHZlcnNpb25lZEN1c3RvbUluc3RydWN0aW9uID0gaW5zdHJ1Y3Rpb24gYXMgVmVyc2lvbmVkQ3VzdG9tSW5zdHJ1Y3Rpb247XG4gICAgICAgIHRoaXMuYWRkQ3VzdG9tSW5zdHJ1Y3Rpb24odmVyc2lvbmVkQ3VzdG9tSW5zdHJ1Y3Rpb24ucGFyYW1zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgY3VzdG9tIGluc3RydWN0aW9uIHRvIHRoZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gaW5zdHJ1Y3Rpb24gLSBUaGUgY3VzdG9tIGluc3RydWN0aW9uIHRvIGFkZFxuICAgKiBAcmV0dXJucyBUaGlzIGJ1aWxkZXIgaW5zdGFuY2VcbiAgICovXG4gIGFkZEN1c3RvbUluc3RydWN0aW9uKGluc3RydWN0aW9uOiBTb2xJbnN0cnVjdGlvbiB8IFNvbFZlcnNpb25lZEluc3RydWN0aW9uKTogdGhpcyB7XG4gICAgdGhpcy52YWxpZGF0ZUluc3RydWN0aW9uKGluc3RydWN0aW9uKTtcblxuICAgIGlmIChpc1NvbExlZ2FjeUluc3RydWN0aW9uKGluc3RydWN0aW9uKSkge1xuICAgICAgY29uc3QgY3VzdG9tSW5zdHJ1Y3Rpb246IEN1c3RvbUluc3RydWN0aW9uID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DdXN0b21JbnN0cnVjdGlvbixcbiAgICAgICAgcGFyYW1zOiBpbnN0cnVjdGlvbixcbiAgICAgIH07XG4gICAgICB0aGlzLl9jdXN0b21JbnN0cnVjdGlvbnMucHVzaChjdXN0b21JbnN0cnVjdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZlcnNpb25lZEN1c3RvbUluc3RydWN0aW9uOiBWZXJzaW9uZWRDdXN0b21JbnN0cnVjdGlvbiA9IHtcbiAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuVmVyc2lvbmVkQ3VzdG9tSW5zdHJ1Y3Rpb24sXG4gICAgICAgIHBhcmFtczogaW5zdHJ1Y3Rpb24sXG4gICAgICB9O1xuICAgICAgdGhpcy5fY3VzdG9tSW5zdHJ1Y3Rpb25zLnB1c2godmVyc2lvbmVkQ3VzdG9tSW5zdHJ1Y3Rpb24pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBtdWx0aXBsZSBjdXN0b20gaW5zdHJ1Y3Rpb25zIHRvIHRoZSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gaW5zdHJ1Y3Rpb25zIC0gQXJyYXkgb2YgY3VzdG9tIGluc3RydWN0aW9ucyB0byBhZGRcbiAgICogQHJldHVybnMgVGhpcyBidWlsZGVyIGluc3RhbmNlXG4gICAqL1xuICBhZGRDdXN0b21JbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25zOiAoU29sSW5zdHJ1Y3Rpb24gfCBTb2xWZXJzaW9uZWRJbnN0cnVjdGlvbilbXSk6IHRoaXMge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShpbnN0cnVjdGlvbnMpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnN0cnVjdGlvbnMgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGluc3RydWN0aW9uIG9mIGluc3RydWN0aW9ucykge1xuICAgICAgdGhpcy5hZGRDdXN0b21JbnN0cnVjdGlvbihpbnN0cnVjdGlvbik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHRyYW5zYWN0aW9uIGZyb20gZGVjb25zdHJ1Y3RlZCBWZXJzaW9uZWRUcmFuc2FjdGlvbiBkYXRhXG4gICAqIEBwYXJhbSBkYXRhIC0gVmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhIGNvbnRhaW5pbmcgaW5zdHJ1Y3Rpb25zLCBBTFRzLCBhbmQgYWNjb3VudCBrZXlzXG4gICAqIEByZXR1cm5zIFRoaXMgYnVpbGRlciBpbnN0YW5jZVxuICAgKi9cbiAgZnJvbVZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YShkYXRhOiBWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEpOiB0aGlzIHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFkYXRhIHx8IHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0Jykge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEgbXVzdCBiZSBhIHZhbGlkIG9iamVjdCcpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YS52ZXJzaW9uZWRJbnN0cnVjdGlvbnMpIHx8IGRhdGEudmVyc2lvbmVkSW5zdHJ1Y3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCd2ZXJzaW9uZWRJbnN0cnVjdGlvbnMgbXVzdCBiZSBhIG5vbi1lbXB0eSBhcnJheScpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoZGF0YS5hZGRyZXNzTG9va3VwVGFibGVzKSkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdhZGRyZXNzTG9va3VwVGFibGVzIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEuc3RhdGljQWNjb3VudEtleXMpIHx8IGRhdGEuc3RhdGljQWNjb3VudEtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3N0YXRpY0FjY291bnRLZXlzIG11c3QgYmUgYSBub24tZW1wdHkgYXJyYXknKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFkYXRhLm1lc3NhZ2VIZWFkZXIgfHwgdHlwZW9mIGRhdGEubWVzc2FnZUhlYWRlciAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignbWVzc2FnZUhlYWRlciBtdXN0IGJlIGEgdmFsaWQgb2JqZWN0Jyk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBkYXRhLm1lc3NhZ2VIZWFkZXIubnVtUmVxdWlyZWRTaWduYXR1cmVzICE9PSAnbnVtYmVyJyB8fFxuICAgICAgICBkYXRhLm1lc3NhZ2VIZWFkZXIubnVtUmVxdWlyZWRTaWduYXR1cmVzIDwgMFxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ21lc3NhZ2VIZWFkZXIubnVtUmVxdWlyZWRTaWduYXR1cmVzIG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyJyk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBkYXRhLm1lc3NhZ2VIZWFkZXIubnVtUmVhZG9ubHlTaWduZWRBY2NvdW50cyAhPT0gJ251bWJlcicgfHxcbiAgICAgICAgZGF0YS5tZXNzYWdlSGVhZGVyLm51bVJlYWRvbmx5U2lnbmVkQWNjb3VudHMgPCAwXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignbWVzc2FnZUhlYWRlci5udW1SZWFkb25seVNpZ25lZEFjY291bnRzIG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyJyk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIHR5cGVvZiBkYXRhLm1lc3NhZ2VIZWFkZXIubnVtUmVhZG9ubHlVbnNpZ25lZEFjY291bnRzICE9PSAnbnVtYmVyJyB8fFxuICAgICAgICBkYXRhLm1lc3NhZ2VIZWFkZXIubnVtUmVhZG9ubHlVbnNpZ25lZEFjY291bnRzIDwgMFxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ21lc3NhZ2VIZWFkZXIubnVtUmVhZG9ubHlVbnNpZ25lZEFjY291bnRzIG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyJyk7XG4gICAgICB9XG5cbiAgICAgIGxldCBwcm9jZXNzZWREYXRhID0gZGF0YTtcbiAgICAgIGlmICh0aGlzLl9ub25jZUluZm8gJiYgdGhpcy5fbm9uY2VJbmZvLnBhcmFtcykge1xuICAgICAgICBwcm9jZXNzZWREYXRhID0gdGhpcy5pbmplY3ROb25jZUFkdmFuY2VJbnN0cnVjdGlvbihkYXRhKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5hZGRDdXN0b21JbnN0cnVjdGlvbnMocHJvY2Vzc2VkRGF0YS52ZXJzaW9uZWRJbnN0cnVjdGlvbnMpO1xuXG4gICAgICBpZiAoIXRoaXMuX3RyYW5zYWN0aW9uKSB7XG4gICAgICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgICAgfVxuICAgICAgdGhpcy5fdHJhbnNhY3Rpb24uc2V0VmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhKHByb2Nlc3NlZERhdGEpO1xuXG4gICAgICB0aGlzLl90cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvblR5cGUoVHJhbnNhY3Rpb25UeXBlLkN1c3RvbVR4KTtcblxuICAgICAgaWYgKCF0aGlzLl9zZW5kZXIgJiYgcHJvY2Vzc2VkRGF0YS5zdGF0aWNBY2NvdW50S2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuX3NlbmRlciA9IHByb2Nlc3NlZERhdGEuc3RhdGljQWNjb3VudEtleXNbMF07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBCdWlsZFRyYW5zYWN0aW9uRXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBGYWlsZWQgdG8gcHJvY2VzcyB2ZXJzaW9uZWQgdHJhbnNhY3Rpb24gZGF0YTogJHtlcnJvci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbmplY3Qgbm9uY2UgYWR2YW5jZSBpbnN0cnVjdGlvbiBpbnRvIHZlcnNpb25lZCB0cmFuc2FjdGlvbiBkYXRhIGZvciBkdXJhYmxlIG5vbmNlIHN1cHBvcnQuXG4gICAqIFJlb3JkZXJzIGFjY291bnRzIHNvIHNpZ25lcnMgYXBwZWFyIGZpcnN0IChyZXF1aXJlZCBieSBTb2xhbmEgTWVzc2FnZVYwIGZvcm1hdCkuXG4gICAqIEBwYXJhbSBkYXRhIC0gT3JpZ2luYWwgdmVyc2lvbmVkIHRyYW5zYWN0aW9uIGRhdGFcbiAgICogQHJldHVybnMgTW9kaWZpZWQgdmVyc2lvbmVkIHRyYW5zYWN0aW9uIGRhdGEgd2l0aCBub25jZSBhZHZhbmNlIGluc3RydWN0aW9uXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGluamVjdE5vbmNlQWR2YW5jZUluc3RydWN0aW9uKGRhdGE6IFZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YSk6IFZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YSB7XG4gICAgY29uc3QgeyB3YWxsZXROb25jZUFkZHJlc3MsIGF1dGhXYWxsZXRBZGRyZXNzIH0gPSB0aGlzLl9ub25jZUluZm8hLnBhcmFtcztcbiAgICBjb25zdCBTWVNURU1fUFJPR1JBTSA9IFN5c3RlbVByb2dyYW0ucHJvZ3JhbUlkLnRvQmFzZTU4KCk7XG4gICAgY29uc3QgU1lTVkFSX1JFQ0VOVF9CTE9DS0hBU0hFUyA9IFNZU1ZBUl9SRUNFTlRfQkxPQ0tIQVNIRVNfUFVCS0VZLnRvQmFzZTU4KCk7XG5cbiAgICBjb25zdCBudW1TaWduZXJzID0gZGF0YS5tZXNzYWdlSGVhZGVyLm51bVJlcXVpcmVkU2lnbmF0dXJlcztcbiAgICBjb25zdCBvcmlnaW5hbFNpZ25lcnMgPSBkYXRhLnN0YXRpY0FjY291bnRLZXlzLnNsaWNlKDAsIG51bVNpZ25lcnMpO1xuICAgIGNvbnN0IG9yaWdpbmFsTm9uU2lnbmVycyA9IGRhdGEuc3RhdGljQWNjb3VudEtleXMuc2xpY2UobnVtU2lnbmVycyk7XG5cbiAgICBpZiAoIW9yaWdpbmFsU2lnbmVycy5pbmNsdWRlcyhhdXRoV2FsbGV0QWRkcmVzcykpIHtcbiAgICAgIG9yaWdpbmFsU2lnbmVycy5wdXNoKGF1dGhXYWxsZXRBZGRyZXNzKTtcbiAgICB9XG5cbiAgICBjb25zdCBub25TaWduZXJzID0gWy4uLm9yaWdpbmFsTm9uU2lnbmVyc107XG4gICAgY29uc3QgYWxsS2V5cyA9IFsuLi5vcmlnaW5hbFNpZ25lcnMsIC4uLm9yaWdpbmFsTm9uU2lnbmVyc107XG5cbiAgICBpZiAoIWFsbEtleXMuaW5jbHVkZXMoU1lTVEVNX1BST0dSQU0pKSBub25TaWduZXJzLnB1c2goU1lTVEVNX1BST0dSQU0pO1xuICAgIGlmICghYWxsS2V5cy5pbmNsdWRlcyh3YWxsZXROb25jZUFkZHJlc3MpKSBub25TaWduZXJzLnB1c2god2FsbGV0Tm9uY2VBZGRyZXNzKTtcbiAgICBpZiAoIWFsbEtleXMuaW5jbHVkZXMoU1lTVkFSX1JFQ0VOVF9CTE9DS0hBU0hFUykpIG5vblNpZ25lcnMucHVzaChTWVNWQVJfUkVDRU5UX0JMT0NLSEFTSEVTKTtcblxuICAgIGNvbnN0IG5ld1N0YXRpY0FjY291bnRLZXlzID0gWy4uLm9yaWdpbmFsU2lnbmVycywgLi4ubm9uU2lnbmVyc107XG5cbiAgICBjb25zdCBub25jZUFkdmFuY2VJbnN0cnVjdGlvbjogU29sVmVyc2lvbmVkSW5zdHJ1Y3Rpb24gPSB7XG4gICAgICBwcm9ncmFtSWRJbmRleDogbmV3U3RhdGljQWNjb3VudEtleXMuaW5kZXhPZihTWVNURU1fUFJPR1JBTSksXG4gICAgICBhY2NvdW50S2V5SW5kZXhlczogW1xuICAgICAgICBuZXdTdGF0aWNBY2NvdW50S2V5cy5pbmRleE9mKHdhbGxldE5vbmNlQWRkcmVzcyksXG4gICAgICAgIG5ld1N0YXRpY0FjY291bnRLZXlzLmluZGV4T2YoU1lTVkFSX1JFQ0VOVF9CTE9DS0hBU0hFUyksXG4gICAgICAgIG5ld1N0YXRpY0FjY291bnRLZXlzLmluZGV4T2YoYXV0aFdhbGxldEFkZHJlc3MpLFxuICAgICAgXSxcbiAgICAgIGRhdGE6ICc2dng4UCcsIC8vIFN5c3RlbVByb2dyYW0gQWR2YW5jZU5vbmNlQWNjb3VudCAoMHgwNDAwMDAwMCkgaW4gYmFzZTU4XG4gICAgfTtcblxuICAgIGNvbnN0IGluZGV4TWFwID0gbmV3IE1hcChkYXRhLnN0YXRpY0FjY291bnRLZXlzLm1hcCgoa2V5LCBvbGRJZHgpID0+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"}