@bitgo-beta/sdk-coin-sol 7.6.4-beta.76 → 7.6.4-beta.760

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 (541) 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/index.d.ts.map +1 -0
  4. package/dist/{src → cjs/src}/index.js +1 -1
  5. package/dist/{src → cjs/src}/lib/ataInitializationBuilder.d.ts +12 -1
  6. package/dist/cjs/src/lib/ataInitializationBuilder.d.ts.map +1 -0
  7. package/dist/cjs/src/lib/ataInitializationBuilder.js +231 -0
  8. package/dist/cjs/src/lib/closeAtaBuilder.d.ts +55 -0
  9. package/dist/cjs/src/lib/closeAtaBuilder.d.ts.map +1 -0
  10. package/dist/cjs/src/lib/closeAtaBuilder.js +162 -0
  11. package/dist/cjs/src/lib/confidentialTransferBuilder.d.ts +136 -0
  12. package/dist/cjs/src/lib/confidentialTransferBuilder.d.ts.map +1 -0
  13. package/dist/cjs/src/lib/confidentialTransferBuilder.js +375 -0
  14. package/dist/{src → cjs/src}/lib/constants.d.ts +97 -2
  15. package/dist/cjs/src/lib/constants.d.ts.map +1 -0
  16. package/dist/cjs/src/lib/constants.js +277 -0
  17. package/dist/{src → cjs/src}/lib/customInstructionBuilder.d.ts +13 -2
  18. package/dist/cjs/src/lib/customInstructionBuilder.d.ts.map +1 -0
  19. package/dist/cjs/src/lib/customInstructionBuilder.js +392 -0
  20. package/dist/cjs/src/lib/explainTransactionWasm.d.ts +21 -0
  21. package/dist/cjs/src/lib/explainTransactionWasm.d.ts.map +1 -0
  22. package/dist/cjs/src/lib/explainTransactionWasm.js +304 -0
  23. package/dist/cjs/src/lib/iface.d.ts +538 -0
  24. package/dist/cjs/src/lib/iface.d.ts.map +1 -0
  25. package/dist/cjs/src/lib/iface.js +7 -0
  26. package/dist/{src → cjs/src}/lib/index.d.ts +9 -0
  27. package/dist/cjs/src/lib/index.d.ts.map +1 -0
  28. package/dist/cjs/src/lib/index.js +106 -0
  29. package/dist/{src → cjs/src}/lib/instructionParamsFactory.d.ts +3 -1
  30. package/dist/cjs/src/lib/instructionParamsFactory.d.ts.map +1 -0
  31. package/dist/cjs/src/lib/instructionParamsFactory.js +1284 -0
  32. package/dist/cjs/src/lib/jitoStakePoolOperations.d.ts.map +1 -0
  33. package/dist/cjs/src/lib/jitoStakePoolOperations.js +200 -0
  34. package/dist/{src → cjs/src}/lib/keyPair.d.ts +6 -0
  35. package/dist/cjs/src/lib/keyPair.d.ts.map +1 -0
  36. package/dist/cjs/src/lib/keyPair.js +112 -0
  37. package/dist/cjs/src/lib/messages/index.d.ts.map +1 -0
  38. package/dist/{src → cjs/src}/lib/messages/index.js +1 -1
  39. package/dist/cjs/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
  40. package/dist/cjs/src/lib/messages/messageBuilderFactory.js +19 -0
  41. package/dist/cjs/src/lib/recoverNestedAtaBuilder.d.ts +25 -0
  42. package/dist/cjs/src/lib/recoverNestedAtaBuilder.d.ts.map +1 -0
  43. package/dist/cjs/src/lib/recoverNestedAtaBuilder.js +90 -0
  44. package/dist/cjs/src/lib/scaledUiAmount.d.ts +30 -0
  45. package/dist/cjs/src/lib/scaledUiAmount.d.ts.map +1 -0
  46. package/dist/cjs/src/lib/scaledUiAmount.js +112 -0
  47. package/dist/cjs/src/lib/serialization/codecs/v1/config.d.ts +21 -0
  48. package/dist/cjs/src/lib/serialization/codecs/v1/config.d.ts.map +1 -0
  49. package/dist/cjs/src/lib/serialization/codecs/v1/config.js +34 -0
  50. package/dist/cjs/src/lib/serialization/codecs/v1/instruction.d.ts +14 -0
  51. package/dist/cjs/src/lib/serialization/codecs/v1/instruction.d.ts.map +1 -0
  52. package/dist/cjs/src/lib/serialization/codecs/v1/instruction.js +32 -0
  53. package/dist/cjs/src/lib/serialization/codecs/v1/message.d.ts +27 -0
  54. package/dist/cjs/src/lib/serialization/codecs/v1/message.d.ts.map +1 -0
  55. package/dist/cjs/src/lib/serialization/codecs/v1/message.js +196 -0
  56. package/dist/cjs/src/lib/serialization/compileTransactionMessage.d.ts +36 -0
  57. package/dist/cjs/src/lib/serialization/compileTransactionMessage.d.ts.map +1 -0
  58. package/dist/cjs/src/lib/serialization/compileTransactionMessage.js +211 -0
  59. package/dist/cjs/src/lib/serialization/index.d.ts +5 -0
  60. package/dist/cjs/src/lib/serialization/index.d.ts.map +1 -0
  61. package/dist/cjs/src/lib/serialization/index.js +27 -0
  62. package/dist/cjs/src/lib/serialization/parseWireTransaction.d.ts +9 -0
  63. package/dist/cjs/src/lib/serialization/parseWireTransaction.d.ts.map +1 -0
  64. package/dist/cjs/src/lib/serialization/parseWireTransaction.js +58 -0
  65. package/dist/cjs/src/lib/serialization/wire-transaction.d.ts +14 -0
  66. package/dist/cjs/src/lib/serialization/wire-transaction.d.ts.map +1 -0
  67. package/dist/cjs/src/lib/serialization/wire-transaction.js +51 -0
  68. package/dist/{src → cjs/src}/lib/solInstructionFactory.d.ts +1 -1
  69. package/dist/cjs/src/lib/solInstructionFactory.d.ts.map +1 -0
  70. package/dist/cjs/src/lib/solInstructionFactory.js +1119 -0
  71. package/dist/cjs/src/lib/stakingActivateBuilder.d.ts.map +1 -0
  72. package/dist/cjs/src/lib/stakingActivateBuilder.js +129 -0
  73. package/dist/cjs/src/lib/stakingAuthorizeBuilder.d.ts.map +1 -0
  74. package/dist/cjs/src/lib/stakingAuthorizeBuilder.js +89 -0
  75. package/dist/cjs/src/lib/stakingDeactivateBuilder.d.ts.map +1 -0
  76. package/dist/cjs/src/lib/stakingDeactivateBuilder.js +214 -0
  77. package/dist/cjs/src/lib/stakingDelegateBuilder.d.ts.map +1 -0
  78. package/dist/cjs/src/lib/stakingDelegateBuilder.js +126 -0
  79. package/dist/cjs/src/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
  80. package/dist/cjs/src/lib/stakingRawMsgAuthorizeBuilder.js +110 -0
  81. package/dist/cjs/src/lib/stakingWithdrawBuilder.d.ts.map +1 -0
  82. package/dist/cjs/src/lib/stakingWithdrawBuilder.js +87 -0
  83. package/dist/cjs/src/lib/token2022Resolve.d.ts +106 -0
  84. package/dist/cjs/src/lib/token2022Resolve.d.ts.map +1 -0
  85. package/dist/cjs/src/lib/token2022Resolve.js +199 -0
  86. package/dist/cjs/src/lib/tokenExtensions.d.ts +26 -0
  87. package/dist/cjs/src/lib/tokenExtensions.d.ts.map +1 -0
  88. package/dist/cjs/src/lib/tokenExtensions.js +109 -0
  89. package/dist/{src → cjs/src}/lib/tokenTransferBuilder.d.ts +27 -1
  90. package/dist/cjs/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  91. package/dist/cjs/src/lib/tokenTransferBuilder.js +237 -0
  92. package/dist/{src → cjs/src}/lib/transaction.d.ts +46 -1
  93. package/dist/cjs/src/lib/transaction.d.ts.map +1 -0
  94. package/dist/cjs/src/lib/transaction.js +761 -0
  95. package/dist/{src → cjs/src}/lib/transactionBuilder.d.ts +42 -1
  96. package/dist/cjs/src/lib/transactionBuilder.d.ts.map +1 -0
  97. package/dist/cjs/src/lib/transactionBuilder.js +462 -0
  98. package/dist/{src → cjs/src}/lib/transactionBuilderFactory.d.ts +37 -0
  99. package/dist/cjs/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  100. package/dist/cjs/src/lib/transactionBuilderFactory.js +249 -0
  101. package/dist/cjs/src/lib/transferBuilder.d.ts.map +1 -0
  102. package/dist/cjs/src/lib/transferBuilder.js +81 -0
  103. package/dist/cjs/src/lib/transferBuilderV2.d.ts +69 -0
  104. package/dist/cjs/src/lib/transferBuilderV2.d.ts.map +1 -0
  105. package/dist/cjs/src/lib/transferBuilderV2.js +252 -0
  106. package/dist/{src → cjs/src}/lib/utils.d.ts +16 -0
  107. package/dist/cjs/src/lib/utils.d.ts.map +1 -0
  108. package/dist/cjs/src/lib/utils.js +681 -0
  109. package/dist/cjs/src/lib/v1CustomInstructionBuilder.d.ts +29 -0
  110. package/dist/cjs/src/lib/v1CustomInstructionBuilder.d.ts.map +1 -0
  111. package/dist/cjs/src/lib/v1CustomInstructionBuilder.js +36 -0
  112. package/dist/cjs/src/lib/v1PaymentBuilder.d.ts +36 -0
  113. package/dist/cjs/src/lib/v1PaymentBuilder.d.ts.map +1 -0
  114. package/dist/cjs/src/lib/v1PaymentBuilder.js +70 -0
  115. package/dist/cjs/src/lib/v1TransactionBuilder.d.ts +253 -0
  116. package/dist/cjs/src/lib/v1TransactionBuilder.d.ts.map +1 -0
  117. package/dist/cjs/src/lib/v1TransactionBuilder.js +601 -0
  118. package/dist/cjs/src/lib/walletInitializationBuilder.d.ts.map +1 -0
  119. package/dist/cjs/src/lib/walletInitializationBuilder.js +71 -0
  120. package/dist/cjs/src/register.d.ts +5 -0
  121. package/dist/cjs/src/register.d.ts.map +1 -0
  122. package/dist/cjs/src/register.js +29 -0
  123. package/dist/{src → cjs/src}/sol.d.ts +114 -3
  124. package/dist/cjs/src/sol.d.ts.map +1 -0
  125. package/dist/cjs/src/sol.js +1707 -0
  126. package/dist/{src → cjs/src}/solToken.d.ts +7 -0
  127. package/dist/cjs/src/solToken.d.ts.map +1 -0
  128. package/dist/cjs/src/solToken.js +79 -0
  129. package/dist/cjs/src/tsol.d.ts.map +1 -0
  130. package/dist/cjs/src/tsol.js +24 -0
  131. package/dist/{test → cjs/test}/fixtures/sol.d.ts.map +1 -1
  132. package/dist/cjs/test/fixtures/sol.js +1433 -0
  133. package/dist/{test → cjs/test}/resources/sol.d.ts +29 -29
  134. package/dist/cjs/test/resources/sol.d.ts.map +1 -0
  135. package/dist/cjs/test/resources/sol.js +320 -0
  136. package/dist/cjs/test/unit/ctEnablementVerify.d.ts +2 -0
  137. package/dist/cjs/test/unit/ctEnablementVerify.d.ts.map +1 -0
  138. package/dist/cjs/test/unit/ctEnablementVerify.js +143 -0
  139. package/dist/cjs/test/unit/explainTransactionWasm.d.ts +5 -0
  140. package/dist/cjs/test/unit/explainTransactionWasm.d.ts.map +1 -0
  141. package/dist/cjs/test/unit/explainTransactionWasm.js +66 -0
  142. package/dist/cjs/test/unit/fixtures/solBackupKey.d.ts.map +1 -0
  143. package/dist/cjs/test/unit/fixtures/solBackupKey.js +8 -0
  144. package/dist/cjs/test/unit/getBuilderFactory.d.ts.map +1 -0
  145. package/dist/cjs/test/unit/getBuilderFactory.js +10 -0
  146. package/dist/cjs/test/unit/instructionParamsFactory.d.ts.map +1 -0
  147. package/dist/cjs/test/unit/instructionParamsFactory.js +425 -0
  148. package/dist/cjs/test/unit/instructionParamsFactory.staking.d.ts.map +1 -0
  149. package/dist/cjs/test/unit/instructionParamsFactory.staking.js +1059 -0
  150. package/dist/cjs/test/unit/jitoWasmVerification.d.ts +2 -0
  151. package/dist/cjs/test/unit/jitoWasmVerification.d.ts.map +1 -0
  152. package/dist/cjs/test/unit/jitoWasmVerification.js +78 -0
  153. package/dist/{test → cjs/test}/unit/keyPair.d.ts.map +1 -1
  154. package/dist/cjs/test/unit/keyPair.js +177 -0
  155. package/dist/cjs/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
  156. package/dist/cjs/test/unit/messages/messageBuilderFactory.js +118 -0
  157. package/dist/cjs/test/unit/messages/simpleMessageBuilder.d.ts.map +1 -0
  158. package/dist/cjs/test/unit/messages/simpleMessageBuilder.js +194 -0
  159. package/dist/cjs/test/unit/register.d.ts +2 -0
  160. package/dist/cjs/test/unit/register.d.ts.map +1 -0
  161. package/dist/cjs/test/unit/register.js +65 -0
  162. package/dist/cjs/test/unit/scaledUiAmount.d.ts +2 -0
  163. package/dist/cjs/test/unit/scaledUiAmount.d.ts.map +1 -0
  164. package/dist/cjs/test/unit/scaledUiAmount.js +101 -0
  165. package/dist/cjs/test/unit/serialization/decodeV1Message.d.ts +2 -0
  166. package/dist/cjs/test/unit/serialization/decodeV1Message.d.ts.map +1 -0
  167. package/dist/cjs/test/unit/serialization/decodeV1Message.js +63 -0
  168. package/dist/cjs/test/unit/serialization/exportV1.d.ts +2 -0
  169. package/dist/cjs/test/unit/serialization/exportV1.d.ts.map +1 -0
  170. package/dist/cjs/test/unit/serialization/exportV1.js +21 -0
  171. package/dist/cjs/test/unit/serialization/parseWireTransaction.d.ts +2 -0
  172. package/dist/cjs/test/unit/serialization/parseWireTransaction.d.ts.map +1 -0
  173. package/dist/cjs/test/unit/serialization/parseWireTransaction.js +90 -0
  174. package/dist/cjs/test/unit/serialization/transactionV1.d.ts +2 -0
  175. package/dist/cjs/test/unit/serialization/transactionV1.d.ts.map +1 -0
  176. package/dist/cjs/test/unit/serialization/transactionV1.js +136 -0
  177. package/dist/{test → cjs/test}/unit/sol.d.ts.map +1 -1
  178. package/dist/cjs/test/unit/sol.js +5364 -0
  179. package/dist/cjs/test/unit/solInstructionFactory.d.ts.map +1 -0
  180. package/dist/cjs/test/unit/solInstructionFactory.js +623 -0
  181. package/dist/cjs/test/unit/solIntentVersion.d.ts +2 -0
  182. package/dist/cjs/test/unit/solIntentVersion.d.ts.map +1 -0
  183. package/dist/cjs/test/unit/solIntentVersion.js +59 -0
  184. package/dist/cjs/test/unit/solToken.d.ts.map +1 -0
  185. package/dist/cjs/test/unit/solToken.js +37 -0
  186. package/dist/cjs/test/unit/token2022Resolve.d.ts +2 -0
  187. package/dist/cjs/test/unit/token2022Resolve.d.ts.map +1 -0
  188. package/dist/cjs/test/unit/token2022Resolve.js +252 -0
  189. package/dist/cjs/test/unit/tokenExtensions.d.ts +2 -0
  190. package/dist/cjs/test/unit/tokenExtensions.d.ts.map +1 -0
  191. package/dist/cjs/test/unit/tokenExtensions.js +73 -0
  192. package/dist/cjs/test/unit/transaction.d.ts.map +1 -0
  193. package/dist/cjs/test/unit/transaction.js +1129 -0
  194. package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +1 -0
  195. package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.js +202 -0
  196. package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +1 -0
  197. package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.js +508 -0
  198. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.d.ts +2 -0
  199. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.d.ts.map +1 -0
  200. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.js +343 -0
  201. package/dist/cjs/test/unit/transactionBuilder/computeUnitLimit.d.ts +2 -0
  202. package/dist/cjs/test/unit/transactionBuilder/computeUnitLimit.d.ts.map +1 -0
  203. package/dist/cjs/test/unit/transactionBuilder/computeUnitLimit.js +346 -0
  204. package/dist/cjs/test/unit/transactionBuilder/confidentialEnablementV1.d.ts +2 -0
  205. package/dist/cjs/test/unit/transactionBuilder/confidentialEnablementV1.d.ts.map +1 -0
  206. package/dist/cjs/test/unit/transactionBuilder/confidentialEnablementV1.js +124 -0
  207. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.d.ts +2 -0
  208. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.d.ts.map +1 -0
  209. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.js +922 -0
  210. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1.d.ts +2 -0
  211. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1.d.ts.map +1 -0
  212. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1.js +194 -0
  213. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1Ops.d.ts +2 -0
  214. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1Ops.d.ts.map +1 -0
  215. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1Ops.js +168 -0
  216. package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +1 -0
  217. package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.js +724 -0
  218. package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +1 -0
  219. package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.js +430 -0
  220. package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +1 -0
  221. package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +157 -0
  222. package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +1 -0
  223. package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.js +384 -0
  224. package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +1 -0
  225. package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.js +224 -0
  226. package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
  227. package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +259 -0
  228. package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  229. package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.js +926 -0
  230. package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  231. package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.js +495 -0
  232. package/dist/cjs/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  233. package/dist/cjs/test/unit/transactionBuilder/transferBuilder.js +302 -0
  234. package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +1 -0
  235. package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.js +910 -0
  236. package/dist/cjs/test/unit/transactionBuilder/v1PaymentBuilder.d.ts +2 -0
  237. package/dist/cjs/test/unit/transactionBuilder/v1PaymentBuilder.d.ts.map +1 -0
  238. package/dist/cjs/test/unit/transactionBuilder/v1PaymentBuilder.js +138 -0
  239. package/dist/cjs/test/unit/transactionBuilder/v1TransactionBuilder.d.ts +2 -0
  240. package/dist/cjs/test/unit/transactionBuilder/v1TransactionBuilder.d.ts.map +1 -0
  241. package/dist/cjs/test/unit/transactionBuilder/v1TransactionBuilder.js +331 -0
  242. package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +1 -0
  243. package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.js +259 -0
  244. package/dist/{test → cjs/test}/unit/utils.d.ts.map +1 -1
  245. package/dist/cjs/test/unit/utils.js +663 -0
  246. package/dist/cjs/test/unit/versionedTransaction.d.ts.map +1 -0
  247. package/dist/cjs/test/unit/versionedTransaction.js +207 -0
  248. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  249. package/dist/esm/bigint-buffer-guard.d.ts +1 -0
  250. package/dist/esm/index.d.ts +7 -0
  251. package/dist/esm/index.js +7 -0
  252. package/dist/esm/lib/ataInitializationBuilder.d.ts +58 -0
  253. package/dist/esm/lib/ataInitializationBuilder.d.ts.map +1 -0
  254. package/dist/esm/lib/ataInitializationBuilder.js +191 -0
  255. package/dist/esm/lib/closeAtaBuilder.d.ts +55 -0
  256. package/dist/esm/lib/closeAtaBuilder.d.ts.map +1 -0
  257. package/dist/esm/lib/closeAtaBuilder.js +155 -0
  258. package/dist/esm/lib/confidentialTransferBuilder.d.ts +136 -0
  259. package/dist/esm/lib/confidentialTransferBuilder.d.ts.map +1 -0
  260. package/dist/esm/lib/confidentialTransferBuilder.js +368 -0
  261. package/dist/esm/lib/constants.d.ts +235 -0
  262. package/dist/esm/lib/constants.d.ts.map +1 -0
  263. package/dist/esm/lib/constants.js +274 -0
  264. package/dist/esm/lib/customInstructionBuilder.d.ts +83 -0
  265. package/dist/{src → esm}/lib/customInstructionBuilder.d.ts.map +1 -1
  266. package/dist/esm/lib/customInstructionBuilder.js +385 -0
  267. package/dist/esm/lib/explainTransactionWasm.d.ts +21 -0
  268. package/dist/esm/lib/explainTransactionWasm.d.ts.map +1 -0
  269. package/dist/esm/lib/explainTransactionWasm.js +301 -0
  270. package/dist/esm/lib/iface.d.ts +538 -0
  271. package/dist/esm/lib/iface.d.ts.map +1 -0
  272. package/dist/esm/lib/iface.js +3 -0
  273. package/dist/esm/lib/index.d.ts +31 -0
  274. package/dist/esm/lib/index.d.ts.map +1 -0
  275. package/dist/esm/lib/index.js +31 -0
  276. package/dist/esm/lib/instructionParamsFactory.d.ts +14 -0
  277. package/dist/esm/lib/instructionParamsFactory.d.ts.map +1 -0
  278. package/dist/esm/lib/instructionParamsFactory.js +1276 -0
  279. package/dist/esm/lib/jitoStakePoolOperations.d.ts +113 -0
  280. package/dist/esm/lib/jitoStakePoolOperations.js +189 -0
  281. package/dist/esm/lib/keyPair.d.ts +32 -0
  282. package/dist/esm/lib/keyPair.d.ts.map +1 -0
  283. package/dist/esm/lib/keyPair.js +75 -0
  284. package/dist/esm/lib/messages/index.d.ts +2 -0
  285. package/dist/esm/lib/messages/index.js +2 -0
  286. package/dist/esm/lib/messages/messageBuilderFactory.d.ts +7 -0
  287. package/dist/{src → esm}/lib/messages/messageBuilderFactory.js +5 -9
  288. package/dist/esm/lib/recoverNestedAtaBuilder.d.ts +25 -0
  289. package/dist/esm/lib/recoverNestedAtaBuilder.d.ts.map +1 -0
  290. package/dist/esm/lib/recoverNestedAtaBuilder.js +83 -0
  291. package/dist/esm/lib/scaledUiAmount.d.ts +30 -0
  292. package/dist/esm/lib/scaledUiAmount.d.ts.map +1 -0
  293. package/dist/esm/lib/scaledUiAmount.js +108 -0
  294. package/dist/esm/lib/serialization/codecs/v1/config.d.ts +21 -0
  295. package/dist/esm/lib/serialization/codecs/v1/config.d.ts.map +1 -0
  296. package/dist/esm/lib/serialization/codecs/v1/config.js +30 -0
  297. package/dist/esm/lib/serialization/codecs/v1/instruction.d.ts +14 -0
  298. package/dist/esm/lib/serialization/codecs/v1/instruction.d.ts.map +1 -0
  299. package/dist/esm/lib/serialization/codecs/v1/instruction.js +29 -0
  300. package/dist/esm/lib/serialization/codecs/v1/message.d.ts +27 -0
  301. package/dist/esm/lib/serialization/codecs/v1/message.d.ts.map +1 -0
  302. package/dist/esm/lib/serialization/codecs/v1/message.js +188 -0
  303. package/dist/esm/lib/serialization/compileTransactionMessage.d.ts +36 -0
  304. package/dist/esm/lib/serialization/compileTransactionMessage.d.ts.map +1 -0
  305. package/dist/esm/lib/serialization/compileTransactionMessage.js +208 -0
  306. package/dist/esm/lib/serialization/index.d.ts +5 -0
  307. package/dist/esm/lib/serialization/index.d.ts.map +1 -0
  308. package/dist/esm/lib/serialization/index.js +5 -0
  309. package/dist/esm/lib/serialization/parseWireTransaction.d.ts +9 -0
  310. package/dist/esm/lib/serialization/parseWireTransaction.d.ts.map +1 -0
  311. package/dist/esm/lib/serialization/parseWireTransaction.js +50 -0
  312. package/dist/esm/lib/serialization/wire-transaction.d.ts +14 -0
  313. package/dist/esm/lib/serialization/wire-transaction.d.ts.map +1 -0
  314. package/dist/esm/lib/serialization/wire-transaction.js +48 -0
  315. package/dist/esm/lib/solInstructionFactory.d.ts +10 -0
  316. package/dist/esm/lib/solInstructionFactory.d.ts.map +1 -0
  317. package/dist/esm/lib/solInstructionFactory.js +1113 -0
  318. package/dist/esm/lib/stakingActivateBuilder.d.ts +59 -0
  319. package/dist/{src → esm}/lib/stakingActivateBuilder.d.ts.map +1 -1
  320. package/dist/esm/lib/stakingActivateBuilder.js +122 -0
  321. package/dist/esm/lib/stakingAuthorizeBuilder.d.ts +43 -0
  322. package/dist/esm/lib/stakingAuthorizeBuilder.js +82 -0
  323. package/dist/esm/lib/stakingDeactivateBuilder.d.ts +81 -0
  324. package/dist/{src → esm}/lib/stakingDeactivateBuilder.d.ts.map +1 -1
  325. package/dist/esm/lib/stakingDeactivateBuilder.js +207 -0
  326. package/dist/esm/lib/stakingDelegateBuilder.d.ts +42 -0
  327. package/dist/{src → esm}/lib/stakingDelegateBuilder.d.ts.map +1 -1
  328. package/dist/esm/lib/stakingDelegateBuilder.js +119 -0
  329. package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.d.ts +33 -0
  330. package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.js +103 -0
  331. package/dist/esm/lib/stakingWithdrawBuilder.d.ts +31 -0
  332. package/dist/{src → esm}/lib/stakingWithdrawBuilder.d.ts.map +1 -1
  333. package/dist/esm/lib/stakingWithdrawBuilder.js +80 -0
  334. package/dist/esm/lib/token2022Resolve.d.ts +106 -0
  335. package/dist/esm/lib/token2022Resolve.d.ts.map +1 -0
  336. package/dist/esm/lib/token2022Resolve.js +194 -0
  337. package/dist/esm/lib/tokenExtensions.d.ts +26 -0
  338. package/dist/esm/lib/tokenExtensions.d.ts.map +1 -0
  339. package/dist/esm/lib/tokenExtensions.js +103 -0
  340. package/dist/esm/lib/tokenTransferBuilder.d.ts +67 -0
  341. package/dist/esm/lib/tokenTransferBuilder.d.ts.map +1 -0
  342. package/dist/esm/lib/tokenTransferBuilder.js +230 -0
  343. package/dist/esm/lib/transaction.d.ts +148 -0
  344. package/dist/esm/lib/transaction.d.ts.map +1 -0
  345. package/dist/esm/lib/transaction.js +754 -0
  346. package/dist/esm/lib/transactionBuilder.d.ts +169 -0
  347. package/dist/esm/lib/transactionBuilder.d.ts.map +1 -0
  348. package/dist/esm/lib/transactionBuilder.js +455 -0
  349. package/dist/esm/lib/transactionBuilderFactory.d.ts +152 -0
  350. package/dist/esm/lib/transactionBuilderFactory.d.ts.map +1 -0
  351. package/dist/esm/lib/transactionBuilderFactory.js +245 -0
  352. package/dist/esm/lib/transferBuilder.d.ts +26 -0
  353. package/dist/{src → esm}/lib/transferBuilder.d.ts.map +1 -1
  354. package/dist/esm/lib/transferBuilder.js +74 -0
  355. package/dist/esm/lib/transferBuilderV2.d.ts +69 -0
  356. package/dist/esm/lib/transferBuilderV2.d.ts.map +1 -0
  357. package/dist/esm/lib/transferBuilderV2.js +245 -0
  358. package/dist/esm/lib/utils.d.ts +216 -0
  359. package/dist/{src → esm}/lib/utils.d.ts.map +1 -1
  360. package/dist/esm/lib/utils.js +642 -0
  361. package/dist/esm/lib/v1CustomInstructionBuilder.d.ts +29 -0
  362. package/dist/esm/lib/v1CustomInstructionBuilder.d.ts.map +1 -0
  363. package/dist/esm/lib/v1CustomInstructionBuilder.js +32 -0
  364. package/dist/esm/lib/v1PaymentBuilder.d.ts +36 -0
  365. package/dist/esm/lib/v1PaymentBuilder.d.ts.map +1 -0
  366. package/dist/esm/lib/v1PaymentBuilder.js +63 -0
  367. package/dist/esm/lib/v1TransactionBuilder.d.ts +253 -0
  368. package/dist/esm/lib/v1TransactionBuilder.d.ts.map +1 -0
  369. package/dist/esm/lib/v1TransactionBuilder.js +591 -0
  370. package/dist/esm/lib/walletInitializationBuilder.d.ts +26 -0
  371. package/dist/esm/lib/walletInitializationBuilder.js +64 -0
  372. package/dist/esm/register.d.ts +5 -0
  373. package/dist/esm/register.d.ts.map +1 -0
  374. package/dist/esm/register.js +24 -0
  375. package/dist/esm/sol.d.ts +351 -0
  376. package/dist/esm/sol.d.ts.map +1 -0
  377. package/dist/esm/sol.js +1666 -0
  378. package/dist/esm/solToken.d.ts +44 -0
  379. package/dist/esm/solToken.d.ts.map +1 -0
  380. package/dist/esm/solToken.js +75 -0
  381. package/dist/esm/tsol.d.ts +11 -0
  382. package/dist/esm/tsol.js +20 -0
  383. package/package.json +37 -17
  384. package/dist/src/config/token2022StaticConfig.d.ts +0 -3
  385. package/dist/src/config/token2022StaticConfig.d.ts.map +0 -1
  386. package/dist/src/config/token2022StaticConfig.js +0 -50
  387. package/dist/src/lib/ataInitializationBuilder.d.ts.map +0 -1
  388. package/dist/src/lib/ataInitializationBuilder.js +0 -196
  389. package/dist/src/lib/closeAtaBuilder.d.ts +0 -19
  390. package/dist/src/lib/closeAtaBuilder.d.ts.map +0 -1
  391. package/dist/src/lib/closeAtaBuilder.js +0 -69
  392. package/dist/src/lib/constants.d.ts.map +0 -1
  393. package/dist/src/lib/constants.js +0 -171
  394. package/dist/src/lib/customInstructionBuilder.js +0 -289
  395. package/dist/src/lib/iface.d.ts +0 -244
  396. package/dist/src/lib/iface.d.ts.map +0 -1
  397. package/dist/src/lib/iface.js +0 -7
  398. package/dist/src/lib/index.d.ts.map +0 -1
  399. package/dist/src/lib/index.js +0 -77
  400. package/dist/src/lib/instructionParamsFactory.d.ts.map +0 -1
  401. package/dist/src/lib/instructionParamsFactory.js +0 -1036
  402. package/dist/src/lib/jitoStakePoolOperations.js +0 -200
  403. package/dist/src/lib/keyPair.d.ts.map +0 -1
  404. package/dist/src/lib/keyPair.js +0 -63
  405. package/dist/src/lib/solInstructionFactory.d.ts.map +0 -1
  406. package/dist/src/lib/solInstructionFactory.js +0 -572
  407. package/dist/src/lib/stakingActivateBuilder.js +0 -120
  408. package/dist/src/lib/stakingAuthorizeBuilder.js +0 -89
  409. package/dist/src/lib/stakingDeactivateBuilder.js +0 -208
  410. package/dist/src/lib/stakingDelegateBuilder.js +0 -120
  411. package/dist/src/lib/stakingRawMsgAuthorizeBuilder.js +0 -110
  412. package/dist/src/lib/stakingWithdrawBuilder.js +0 -78
  413. package/dist/src/lib/token2022Config.d.ts +0 -44
  414. package/dist/src/lib/token2022Config.d.ts.map +0 -1
  415. package/dist/src/lib/token2022Config.js +0 -27
  416. package/dist/src/lib/tokenTransferBuilder.d.ts.map +0 -1
  417. package/dist/src/lib/tokenTransferBuilder.js +0 -188
  418. package/dist/src/lib/transaction.d.ts.map +0 -1
  419. package/dist/src/lib/transaction.js +0 -595
  420. package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
  421. package/dist/src/lib/transactionBuilder.js +0 -380
  422. package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
  423. package/dist/src/lib/transactionBuilderFactory.js +0 -202
  424. package/dist/src/lib/transferBuilder.js +0 -70
  425. package/dist/src/lib/transferBuilderV2.d.ts +0 -43
  426. package/dist/src/lib/transferBuilderV2.d.ts.map +0 -1
  427. package/dist/src/lib/transferBuilderV2.js +0 -210
  428. package/dist/src/lib/utils.js +0 -589
  429. package/dist/src/lib/walletInitializationBuilder.js +0 -71
  430. package/dist/src/register.d.ts +0 -3
  431. package/dist/src/register.d.ts.map +0 -1
  432. package/dist/src/register.js +0 -15
  433. package/dist/src/sol.d.ts.map +0 -1
  434. package/dist/src/sol.js +0 -1324
  435. package/dist/src/solToken.d.ts.map +0 -1
  436. package/dist/src/solToken.js +0 -69
  437. package/dist/src/tsol.js +0 -24
  438. package/dist/test/fixtures/sol.js +0 -1433
  439. package/dist/test/resources/sol.d.ts.map +0 -1
  440. package/dist/test/resources/sol.js +0 -320
  441. package/dist/test/unit/fixtures/solBackupKey.d.ts.map +0 -1
  442. package/dist/test/unit/fixtures/solBackupKey.js +0 -8
  443. package/dist/test/unit/getBuilderFactory.d.ts.map +0 -1
  444. package/dist/test/unit/getBuilderFactory.js +0 -10
  445. package/dist/test/unit/instructionParamsFactory.d.ts.map +0 -1
  446. package/dist/test/unit/instructionParamsFactory.js +0 -412
  447. package/dist/test/unit/instructionParamsFactory.staking.d.ts.map +0 -1
  448. package/dist/test/unit/instructionParamsFactory.staking.js +0 -1059
  449. package/dist/test/unit/keyPair.js +0 -177
  450. package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +0 -1
  451. package/dist/test/unit/messages/messageBuilderFactory.js +0 -118
  452. package/dist/test/unit/messages/simpleMessageBuilder.d.ts.map +0 -1
  453. package/dist/test/unit/messages/simpleMessageBuilder.js +0 -194
  454. package/dist/test/unit/sol.js +0 -3180
  455. package/dist/test/unit/solInstructionFactory.d.ts.map +0 -1
  456. package/dist/test/unit/solInstructionFactory.js +0 -454
  457. package/dist/test/unit/solToken.d.ts.map +0 -1
  458. package/dist/test/unit/solToken.js +0 -31
  459. package/dist/test/unit/transaction.d.ts.map +0 -1
  460. package/dist/test/unit/transaction.js +0 -983
  461. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +0 -1
  462. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.js +0 -202
  463. package/dist/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +0 -1
  464. package/dist/test/unit/transactionBuilder/ataInitBuilder.js +0 -471
  465. package/dist/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +0 -1
  466. package/dist/test/unit/transactionBuilder/customInstructionBuilder.js +0 -413
  467. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +0 -1
  468. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.js +0 -430
  469. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +0 -1
  470. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +0 -157
  471. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +0 -1
  472. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.js +0 -384
  473. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +0 -1
  474. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.js +0 -224
  475. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -1
  476. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +0 -259
  477. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +0 -1
  478. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +0 -787
  479. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +0 -1
  480. package/dist/test/unit/transactionBuilder/transactionBuilder.js +0 -495
  481. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +0 -1
  482. package/dist/test/unit/transactionBuilder/transferBuilder.js +0 -286
  483. package/dist/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +0 -1
  484. package/dist/test/unit/transactionBuilder/transferBuilderV2.js +0 -862
  485. package/dist/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +0 -1
  486. package/dist/test/unit/transactionBuilder/walletInitBuilder.js +0 -259
  487. package/dist/test/unit/utils.js +0 -517
  488. package/dist/test/unit/versionedTransaction.d.ts.map +0 -1
  489. package/dist/test/unit/versionedTransaction.js +0 -207
  490. package/dist/tsconfig.tsbuildinfo +0 -1
  491. /package/dist/{src → cjs/src}/bigint-buffer-guard.d.ts +0 -0
  492. /package/dist/{src → cjs/src}/index.d.ts +0 -0
  493. /package/dist/{src → cjs/src}/lib/jitoStakePoolOperations.d.ts +0 -0
  494. /package/dist/{src → cjs/src}/lib/messages/index.d.ts +0 -0
  495. /package/dist/{src → cjs/src}/lib/messages/messageBuilderFactory.d.ts +0 -0
  496. /package/dist/{src → cjs/src}/lib/stakingActivateBuilder.d.ts +0 -0
  497. /package/dist/{src → cjs/src}/lib/stakingAuthorizeBuilder.d.ts +0 -0
  498. /package/dist/{src → cjs/src}/lib/stakingDeactivateBuilder.d.ts +0 -0
  499. /package/dist/{src → cjs/src}/lib/stakingDelegateBuilder.d.ts +0 -0
  500. /package/dist/{src → cjs/src}/lib/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
  501. /package/dist/{src → cjs/src}/lib/stakingWithdrawBuilder.d.ts +0 -0
  502. /package/dist/{src → cjs/src}/lib/transferBuilder.d.ts +0 -0
  503. /package/dist/{src → cjs/src}/lib/walletInitializationBuilder.d.ts +0 -0
  504. /package/dist/{src → cjs/src}/tsol.d.ts +0 -0
  505. /package/dist/{test → cjs/test}/fixtures/sol.d.ts +0 -0
  506. /package/dist/{test → cjs/test}/unit/fixtures/solBackupKey.d.ts +0 -0
  507. /package/dist/{test → cjs/test}/unit/getBuilderFactory.d.ts +0 -0
  508. /package/dist/{test → cjs/test}/unit/instructionParamsFactory.d.ts +0 -0
  509. /package/dist/{test → cjs/test}/unit/instructionParamsFactory.staking.d.ts +0 -0
  510. /package/dist/{test → cjs/test}/unit/keyPair.d.ts +0 -0
  511. /package/dist/{test → cjs/test}/unit/messages/messageBuilderFactory.d.ts +0 -0
  512. /package/dist/{test → cjs/test}/unit/messages/simpleMessageBuilder.d.ts +0 -0
  513. /package/dist/{test → cjs/test}/unit/sol.d.ts +0 -0
  514. /package/dist/{test → cjs/test}/unit/solInstructionFactory.d.ts +0 -0
  515. /package/dist/{test → cjs/test}/unit/solToken.d.ts +0 -0
  516. /package/dist/{test → cjs/test}/unit/transaction.d.ts +0 -0
  517. /package/dist/{test → cjs/test}/unit/transactionBuilder/StakingWithdrawBuilder.d.ts +0 -0
  518. /package/dist/{test → cjs/test}/unit/transactionBuilder/ataInitBuilder.d.ts +0 -0
  519. /package/dist/{test → cjs/test}/unit/transactionBuilder/customInstructionBuilder.d.ts +0 -0
  520. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingActivateBuilder.d.ts +0 -0
  521. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts +0 -0
  522. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDeactivateBuilder.d.ts +0 -0
  523. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDelegateBuilder.d.ts +0 -0
  524. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
  525. /package/dist/{test → cjs/test}/unit/transactionBuilder/tokenTransferBuilder.d.ts +0 -0
  526. /package/dist/{test → cjs/test}/unit/transactionBuilder/transactionBuilder.d.ts +0 -0
  527. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilder.d.ts +0 -0
  528. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilderV2.d.ts +0 -0
  529. /package/dist/{test → cjs/test}/unit/transactionBuilder/walletInitBuilder.d.ts +0 -0
  530. /package/dist/{test → cjs/test}/unit/utils.d.ts +0 -0
  531. /package/dist/{test → cjs/test}/unit/versionedTransaction.d.ts +0 -0
  532. /package/dist/{src → esm}/bigint-buffer-guard.d.ts.map +0 -0
  533. /package/dist/{src → esm}/bigint-buffer-guard.js +0 -0
  534. /package/dist/{src → esm}/index.d.ts.map +0 -0
  535. /package/dist/{src → esm}/lib/jitoStakePoolOperations.d.ts.map +0 -0
  536. /package/dist/{src → esm}/lib/messages/index.d.ts.map +0 -0
  537. /package/dist/{src → esm}/lib/messages/messageBuilderFactory.d.ts.map +0 -0
  538. /package/dist/{src → esm}/lib/stakingAuthorizeBuilder.d.ts.map +0 -0
  539. /package/dist/{src → esm}/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -0
  540. /package/dist/{src → esm}/lib/walletInitializationBuilder.d.ts.map +0 -0
  541. /package/dist/{src → esm}/tsol.d.ts.map +0 -0
@@ -0,0 +1,392 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.CustomInstructionBuilder = void 0;
7
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
8
+ const web3_js_1 = require("@solana/web3.js");
9
+ const transaction_1 = require("./transaction");
10
+ const transactionBuilder_1 = require("./transactionBuilder");
11
+ const constants_1 = require("./constants");
12
+ const utils_1 = require("./utils");
13
+ const assert_1 = __importDefault(require("assert"));
14
+ const bs58_1 = __importDefault(require("bs58"));
15
+ /**
16
+ * Transaction builder for custom Solana instructions.
17
+ * Allows building transactions with any set of raw Solana instructions.
18
+ */
19
+ class CustomInstructionBuilder extends transactionBuilder_1.TransactionBuilder {
20
+ constructor(_coinConfig) {
21
+ super(_coinConfig);
22
+ this._customInstructions = [];
23
+ }
24
+ get transactionType() {
25
+ return sdk_core_1.TransactionType.CustomTx;
26
+ }
27
+ /**
28
+ * Initialize the builder from an existing transaction
29
+ */
30
+ initBuilder(tx) {
31
+ super.initBuilder(tx);
32
+ for (const instruction of this._instructionsData) {
33
+ if (instruction.type === constants_1.InstructionBuilderTypes.CustomInstruction) {
34
+ const customInstruction = instruction;
35
+ this.addCustomInstruction(customInstruction.params);
36
+ }
37
+ else if (instruction.type === constants_1.InstructionBuilderTypes.VersionedCustomInstruction) {
38
+ const versionedCustomInstruction = instruction;
39
+ this.addCustomInstruction(versionedCustomInstruction.params);
40
+ }
41
+ }
42
+ }
43
+ /**
44
+ * Add a custom instruction to the transaction
45
+ * @param instruction - The custom instruction to add
46
+ * @returns This builder instance
47
+ */
48
+ addCustomInstruction(instruction) {
49
+ this.validateInstruction(instruction);
50
+ if ((0, utils_1.isSolLegacyInstruction)(instruction)) {
51
+ const customInstruction = {
52
+ type: constants_1.InstructionBuilderTypes.CustomInstruction,
53
+ params: instruction,
54
+ };
55
+ this._customInstructions.push(customInstruction);
56
+ }
57
+ else {
58
+ const versionedCustomInstruction = {
59
+ type: constants_1.InstructionBuilderTypes.VersionedCustomInstruction,
60
+ params: instruction,
61
+ };
62
+ this._customInstructions.push(versionedCustomInstruction);
63
+ }
64
+ return this;
65
+ }
66
+ /**
67
+ * Add multiple custom instructions to the transaction
68
+ * @param instructions - Array of custom instructions to add
69
+ * @returns This builder instance
70
+ */
71
+ addCustomInstructions(instructions) {
72
+ if (!Array.isArray(instructions)) {
73
+ throw new sdk_core_1.BuildTransactionError('Instructions must be an array');
74
+ }
75
+ for (const instruction of instructions) {
76
+ this.addCustomInstruction(instruction);
77
+ }
78
+ return this;
79
+ }
80
+ /**
81
+ * Build transaction from deconstructed VersionedTransaction data
82
+ * @param data - VersionedTransactionData containing instructions, ALTs, and account keys
83
+ * @returns This builder instance
84
+ */
85
+ fromVersionedTransactionData(data) {
86
+ try {
87
+ if (!data || typeof data !== 'object') {
88
+ throw new sdk_core_1.BuildTransactionError('VersionedTransactionData must be a valid object');
89
+ }
90
+ if (!Array.isArray(data.versionedInstructions) || data.versionedInstructions.length === 0) {
91
+ throw new sdk_core_1.BuildTransactionError('versionedInstructions must be a non-empty array');
92
+ }
93
+ if (!Array.isArray(data.addressLookupTables)) {
94
+ throw new sdk_core_1.BuildTransactionError('addressLookupTables must be an array');
95
+ }
96
+ if (!Array.isArray(data.staticAccountKeys) || data.staticAccountKeys.length === 0) {
97
+ throw new sdk_core_1.BuildTransactionError('staticAccountKeys must be a non-empty array');
98
+ }
99
+ if (!data.messageHeader || typeof data.messageHeader !== 'object') {
100
+ throw new sdk_core_1.BuildTransactionError('messageHeader must be a valid object');
101
+ }
102
+ if (typeof data.messageHeader.numRequiredSignatures !== 'number' ||
103
+ data.messageHeader.numRequiredSignatures < 0) {
104
+ throw new sdk_core_1.BuildTransactionError('messageHeader.numRequiredSignatures must be a non-negative number');
105
+ }
106
+ if (typeof data.messageHeader.numReadonlySignedAccounts !== 'number' ||
107
+ data.messageHeader.numReadonlySignedAccounts < 0) {
108
+ throw new sdk_core_1.BuildTransactionError('messageHeader.numReadonlySignedAccounts must be a non-negative number');
109
+ }
110
+ if (typeof data.messageHeader.numReadonlyUnsignedAccounts !== 'number' ||
111
+ data.messageHeader.numReadonlyUnsignedAccounts < 0) {
112
+ throw new sdk_core_1.BuildTransactionError('messageHeader.numReadonlyUnsignedAccounts must be a non-negative number');
113
+ }
114
+ let processedData = data;
115
+ if (this._nonceInfo && this._nonceInfo.params) {
116
+ processedData = this.injectNonceAdvanceInstruction(data);
117
+ }
118
+ this.addCustomInstructions(processedData.versionedInstructions);
119
+ if (!this._transaction) {
120
+ this._transaction = new transaction_1.Transaction(this._coinConfig);
121
+ }
122
+ this._transaction.setVersionedTransactionData(processedData);
123
+ this._transaction.setTransactionType(sdk_core_1.TransactionType.CustomTx);
124
+ if (!this._sender && processedData.staticAccountKeys.length > 0) {
125
+ this._sender = processedData.staticAccountKeys[0];
126
+ }
127
+ return this;
128
+ }
129
+ catch (error) {
130
+ if (error instanceof sdk_core_1.BuildTransactionError) {
131
+ throw error;
132
+ }
133
+ throw new sdk_core_1.BuildTransactionError(`Failed to process versioned transaction data: ${error.message}`);
134
+ }
135
+ }
136
+ /**
137
+ * Inject nonce advance instruction into versioned transaction data for durable nonce support.
138
+ * Rebuilds the static account keys section by section (writable signers, read-only signers,
139
+ * writable non-signers, read-only non-signers), remaps every instruction index - static and
140
+ * lookup-table - to the new key order, and validates that the result compiles to a MessageV0.
141
+ * @param data - Original versioned transaction data
142
+ * @returns Modified versioned transaction data with the nonce advance instruction first
143
+ * @private
144
+ */
145
+ injectNonceAdvanceInstruction(data) {
146
+ const { walletNonceAddress, authWalletAddress } = this._nonceInfo.params;
147
+ const SYSTEM_PROGRAM = web3_js_1.SystemProgram.programId.toBase58();
148
+ const SYSVAR_RECENT_BLOCKHASHES = web3_js_1.SYSVAR_RECENT_BLOCKHASHES_PUBKEY.toBase58();
149
+ const { numRequiredSignatures, numReadonlySignedAccounts, numReadonlyUnsignedAccounts } = data.messageHeader;
150
+ const oldStaticLen = data.staticAccountKeys.length;
151
+ if (numReadonlySignedAccounts > numRequiredSignatures ||
152
+ numRequiredSignatures + numReadonlyUnsignedAccounts > oldStaticLen) {
153
+ throw new sdk_core_1.BuildTransactionError(`Invalid message header: readonly counts (${numReadonlySignedAccounts}, ${numReadonlyUnsignedAccounts}) ` +
154
+ `are inconsistent with ${numRequiredSignatures} required signatures and ${oldStaticLen} static account keys`);
155
+ }
156
+ // Split the original static keys into the four MessageV0 header sections.
157
+ const writableSigners = data.staticAccountKeys.slice(0, numRequiredSignatures - numReadonlySignedAccounts);
158
+ const readonlySigners = data.staticAccountKeys.slice(numRequiredSignatures - numReadonlySignedAccounts, numRequiredSignatures);
159
+ const writableNonSigners = data.staticAccountKeys.slice(numRequiredSignatures, oldStaticLen - numReadonlyUnsignedAccounts);
160
+ const readonlyNonSigners = data.staticAccountKeys.slice(oldStaticLen - numReadonlyUnsignedAccounts);
161
+ // The nonce authority must be a signer for AdvanceNonceAccount. If it is already present
162
+ // as a non-signer, move it into the signers, keeping its writability (a writable
163
+ // non-signer becomes a writable signer, a read-only one a read-only signer).
164
+ const authorityIsSigner = writableSigners.includes(authWalletAddress) || readonlySigners.includes(authWalletAddress);
165
+ if (!authorityIsSigner) {
166
+ const asReadonlyNonSigner = readonlyNonSigners.indexOf(authWalletAddress);
167
+ const asWritableNonSigner = writableNonSigners.indexOf(authWalletAddress);
168
+ if (asReadonlyNonSigner >= 0) {
169
+ readonlyNonSigners.splice(asReadonlyNonSigner, 1);
170
+ readonlySigners.push(authWalletAddress);
171
+ }
172
+ else if (asWritableNonSigner >= 0) {
173
+ writableNonSigners.splice(asWritableNonSigner, 1);
174
+ writableSigners.push(authWalletAddress);
175
+ }
176
+ else {
177
+ // A brand-new authority is a read-only signer for AdvanceNonceAccount.
178
+ readonlySigners.push(authWalletAddress);
179
+ }
180
+ }
181
+ // The nonce account must be writable for AdvanceNonceAccount. If it is already present,
182
+ // keep it in place when writable, or move it into the writable section when read-only.
183
+ const nonceAsReadonlyNonSigner = readonlyNonSigners.indexOf(walletNonceAddress);
184
+ const nonceAsReadonlySigner = readonlySigners.indexOf(walletNonceAddress);
185
+ if (nonceAsReadonlyNonSigner >= 0) {
186
+ readonlyNonSigners.splice(nonceAsReadonlyNonSigner, 1);
187
+ writableNonSigners.push(walletNonceAddress);
188
+ }
189
+ else if (nonceAsReadonlySigner >= 0) {
190
+ readonlySigners.splice(nonceAsReadonlySigner, 1);
191
+ writableSigners.push(walletNonceAddress);
192
+ }
193
+ else if (!writableSigners.includes(walletNonceAddress) && !writableNonSigners.includes(walletNonceAddress)) {
194
+ writableNonSigners.push(walletNonceAddress);
195
+ }
196
+ // The system program and the recent blockhashes sysvar are read-only non-signers for
197
+ // AdvanceNonceAccount.
198
+ const isPresent = (key) => writableSigners.includes(key) ||
199
+ readonlySigners.includes(key) ||
200
+ writableNonSigners.includes(key) ||
201
+ readonlyNonSigners.includes(key);
202
+ if (!isPresent(SYSTEM_PROGRAM)) {
203
+ readonlyNonSigners.push(SYSTEM_PROGRAM);
204
+ }
205
+ if (!isPresent(SYSVAR_RECENT_BLOCKHASHES)) {
206
+ readonlyNonSigners.push(SYSVAR_RECENT_BLOCKHASHES);
207
+ }
208
+ const newStaticAccountKeys = [...writableSigners, ...readonlySigners, ...writableNonSigners, ...readonlyNonSigners];
209
+ // Build one full old-index to new-index map covering static and lookup-table indexes.
210
+ // Static indexes follow their key to its new position; lookup-table indexes, which are
211
+ // appended after the static keys, shift by the number of inserted static keys.
212
+ const indexMap = new Map();
213
+ data.staticAccountKeys.forEach((key, oldIdx) => indexMap.set(oldIdx, newStaticAccountKeys.indexOf(key)));
214
+ const shift = newStaticAccountKeys.length - oldStaticLen;
215
+ const lookupKeyCount = data.addressLookupTables.reduce((sum, alt) => sum + alt.writableIndexes.length + alt.readonlyIndexes.length, 0);
216
+ for (let i = oldStaticLen; i < oldStaticLen + lookupKeyCount; i++) {
217
+ indexMap.set(i, i + shift);
218
+ }
219
+ const remapIndex = (index) => {
220
+ const mapped = indexMap.get(index);
221
+ if (mapped === undefined) {
222
+ throw new sdk_core_1.BuildTransactionError(`Invalid account key index ${index} in versioned instruction`);
223
+ }
224
+ return mapped;
225
+ };
226
+ const nonceAdvanceInstruction = {
227
+ programIdIndex: newStaticAccountKeys.indexOf(SYSTEM_PROGRAM),
228
+ accountKeyIndexes: [
229
+ newStaticAccountKeys.indexOf(walletNonceAddress),
230
+ newStaticAccountKeys.indexOf(SYSVAR_RECENT_BLOCKHASHES),
231
+ newStaticAccountKeys.indexOf(authWalletAddress),
232
+ ],
233
+ data: '6vx8P', // SystemProgram AdvanceNonceAccount (0x04000000) in base58
234
+ };
235
+ const processed = {
236
+ ...data,
237
+ versionedInstructions: [
238
+ nonceAdvanceInstruction,
239
+ ...data.versionedInstructions.map((inst) => ({
240
+ programIdIndex: remapIndex(inst.programIdIndex),
241
+ accountKeyIndexes: inst.accountKeyIndexes.map(remapIndex),
242
+ data: inst.data,
243
+ })),
244
+ ],
245
+ staticAccountKeys: newStaticAccountKeys,
246
+ messageHeader: {
247
+ numRequiredSignatures: writableSigners.length + readonlySigners.length,
248
+ numReadonlySignedAccounts: readonlySigners.length,
249
+ numReadonlyUnsignedAccounts: readonlyNonSigners.length,
250
+ },
251
+ };
252
+ this.validateInjectedMessage(processed);
253
+ return processed;
254
+ }
255
+ /**
256
+ * Validate the result of injectNonceAdvanceInstruction by compiling it: the MessageV0 built
257
+ * from the new keys, header, lookups and instructions must deserialize and contain no
258
+ * duplicate keys.
259
+ * @param data - Processed versioned transaction data
260
+ * @throws {BuildTransactionError} if the rebuilt message does not compile
261
+ * @private
262
+ */
263
+ validateInjectedMessage(data) {
264
+ if (new Set(data.staticAccountKeys).size !== data.staticAccountKeys.length) {
265
+ throw new sdk_core_1.BuildTransactionError('Injected nonce advance instruction produced duplicate account keys');
266
+ }
267
+ const message = new web3_js_1.MessageV0({
268
+ header: data.messageHeader,
269
+ staticAccountKeys: data.staticAccountKeys.map((key) => new web3_js_1.PublicKey(key)),
270
+ recentBlockhash: data.recentBlockhash ?? this._recentBlockhash,
271
+ compiledInstructions: data.versionedInstructions.map((instruction) => ({
272
+ programIdIndex: instruction.programIdIndex,
273
+ accountKeyIndexes: instruction.accountKeyIndexes,
274
+ data: Buffer.from(bs58_1.default.decode(instruction.data)),
275
+ })),
276
+ addressTableLookups: data.addressLookupTables.map((alt) => ({
277
+ accountKey: new web3_js_1.PublicKey(alt.accountKey),
278
+ writableIndexes: alt.writableIndexes,
279
+ readonlyIndexes: alt.readonlyIndexes,
280
+ })),
281
+ });
282
+ try {
283
+ web3_js_1.MessageV0.deserialize(message.serialize());
284
+ }
285
+ catch (error) {
286
+ throw new sdk_core_1.BuildTransactionError(`Injected nonce advance instruction produced an invalid message: ${error instanceof Error ? error.message : error}`);
287
+ }
288
+ }
289
+ /**
290
+ * Clear all custom instructions and versioned transaction data
291
+ * @returns This builder instance
292
+ */
293
+ clearInstructions() {
294
+ this._customInstructions = [];
295
+ if (this._transaction) {
296
+ this._transaction.setVersionedTransactionData(undefined);
297
+ }
298
+ return this;
299
+ }
300
+ /**
301
+ * Get the current custom instructions
302
+ * @returns Array of custom instructions
303
+ */
304
+ getInstructions() {
305
+ return [...this._customInstructions];
306
+ }
307
+ /**
308
+ * Validate custom instruction format
309
+ * @param instruction - The instruction to validate
310
+ */
311
+ validateInstruction(instruction) {
312
+ if (!instruction) {
313
+ throw new sdk_core_1.BuildTransactionError('Instruction cannot be null or undefined');
314
+ }
315
+ if ((0, utils_1.isSolLegacyInstruction)(instruction)) {
316
+ this.validateSolInstruction(instruction);
317
+ }
318
+ else {
319
+ this.validateVersionedInstruction(instruction);
320
+ }
321
+ }
322
+ /**
323
+ * Validate traditional SolInstruction format
324
+ * @param instruction - The traditional instruction to validate
325
+ */
326
+ validateSolInstruction(instruction) {
327
+ if (!instruction.programId || typeof instruction.programId !== 'string') {
328
+ throw new sdk_core_1.BuildTransactionError('Instruction must have a valid programId string');
329
+ }
330
+ // Validate that programId is a valid Solana public key
331
+ try {
332
+ new web3_js_1.PublicKey(instruction.programId);
333
+ }
334
+ catch (error) {
335
+ throw new sdk_core_1.BuildTransactionError('Invalid programId format');
336
+ }
337
+ if (!instruction.keys || !Array.isArray(instruction.keys)) {
338
+ throw new sdk_core_1.BuildTransactionError('Instruction must have valid keys array');
339
+ }
340
+ // Validate each key
341
+ for (const key of instruction.keys) {
342
+ if (!key.pubkey || typeof key.pubkey !== 'string') {
343
+ throw new sdk_core_1.BuildTransactionError('Each key must have a valid pubkey string');
344
+ }
345
+ try {
346
+ new web3_js_1.PublicKey(key.pubkey);
347
+ }
348
+ catch (error) {
349
+ throw new sdk_core_1.BuildTransactionError('Invalid pubkey format in keys');
350
+ }
351
+ if (typeof key.isSigner !== 'boolean') {
352
+ throw new sdk_core_1.BuildTransactionError('Each key must have a boolean isSigner field');
353
+ }
354
+ if (typeof key.isWritable !== 'boolean') {
355
+ throw new sdk_core_1.BuildTransactionError('Each key must have a boolean isWritable field');
356
+ }
357
+ }
358
+ if (instruction.data === undefined || typeof instruction.data !== 'string') {
359
+ throw new sdk_core_1.BuildTransactionError('Instruction must have valid data string');
360
+ }
361
+ }
362
+ /**
363
+ * Validate versioned instruction format
364
+ * @param instruction - The versioned instruction to validate
365
+ */
366
+ validateVersionedInstruction(instruction) {
367
+ if (typeof instruction.programIdIndex !== 'number' || instruction.programIdIndex < 0) {
368
+ throw new sdk_core_1.BuildTransactionError('Versioned instruction must have a valid programIdIndex number');
369
+ }
370
+ if (!instruction.accountKeyIndexes || !Array.isArray(instruction.accountKeyIndexes)) {
371
+ throw new sdk_core_1.BuildTransactionError('Versioned instruction must have valid accountKeyIndexes array');
372
+ }
373
+ // Validate each account key index
374
+ for (const index of instruction.accountKeyIndexes) {
375
+ if (typeof index !== 'number' || index < 0) {
376
+ throw new sdk_core_1.BuildTransactionError('Each accountKeyIndex must be a non-negative number');
377
+ }
378
+ }
379
+ if (instruction.data === undefined || typeof instruction.data !== 'string') {
380
+ throw new sdk_core_1.BuildTransactionError('Versioned instruction must have valid data string');
381
+ }
382
+ }
383
+ /** @inheritdoc */
384
+ async buildImplementation() {
385
+ (0, assert_1.default)(this._customInstructions.length > 0, 'At least one custom instruction must be specified');
386
+ // Set the instructions data to our custom instructions
387
+ this._instructionsData = [...this._customInstructions];
388
+ return await super.buildImplementation();
389
+ }
390
+ }
391
+ exports.CustomInstructionBuilder = CustomInstructionBuilder;
392
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tSW5zdHJ1Y3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jdXN0b21JbnN0cnVjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsbURBQXVIO0FBQ3ZILDZDQUF3RztBQUN4RywrQ0FBNEM7QUFDNUMsNkRBQTBEO0FBQzFELDJDQUFzRDtBQUV0RCxtQ0FBaUQ7QUFDakQsb0RBQTRCO0FBQzVCLGdEQUEwQjtBQUUxQjs7O0dBR0c7QUFDSCxNQUFhLHdCQUF5QixTQUFRLHVDQUFrQjtJQUc5RCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUhiLHdCQUFtQixHQUF1RCxFQUFFLENBQUM7SUFJckYsQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLDBCQUFlLENBQUMsUUFBUSxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVcsQ0FBQyxFQUFlO1FBQ3pCLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFdEIsS0FBSyxNQUFNLFdBQVcsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNqRCxJQUFJLFdBQVcsQ0FBQyxJQUFJLEtBQUssbUNBQXVCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDbkUsTUFBTSxpQkFBaUIsR0FBRyxXQUFnQyxDQUFDO2dCQUMzRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdEQsQ0FBQztpQkFBTSxJQUFJLFdBQVcsQ0FBQyxJQUFJLEtBQUssbUNBQXVCLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztnQkFDbkYsTUFBTSwwQkFBMEIsR0FBRyxXQUF5QyxDQUFDO2dCQUM3RSxJQUFJLENBQUMsb0JBQW9CLENBQUMsMEJBQTBCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDL0QsQ0FBQztRQUNI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LEtBQUssQ0FBQyxtQkFBbUI7UUFDakMsSUFBQSxnQkFBTSxFQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLG1EQUFtRCxDQUFDLENBQUM7UUFFakcsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFdkQsT0FBTyxNQUFNLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzNDLENBQUM7Q0FDRjtBQXJiRCw0REFxYkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIFNvbEluc3RydWN0aW9uLCBTb2xWZXJzaW9uZWRJbnN0cnVjdGlvbiwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgTWVzc2FnZVYwLCBQdWJsaWNLZXksIFN5c3RlbVByb2dyYW0sIFNZU1ZBUl9SRUNFTlRfQkxPQ0tIQVNIRVNfUFVCS0VZIH0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IEN1c3RvbUluc3RydWN0aW9uLCBWZXJzaW9uZWRDdXN0b21JbnN0cnVjdGlvbiwgVmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBpc1NvbExlZ2FjeUluc3RydWN0aW9uIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgYmFzZTU4IGZyb20gJ2JzNTgnO1xuXG4vKipcbiAqIFRyYW5zYWN0aW9uIGJ1aWxkZXIgZm9yIGN1c3RvbSBTb2xhbmEgaW5zdHJ1Y3Rpb25zLlxuICogQWxsb3dzIGJ1aWxkaW5nIHRyYW5zYWN0aW9ucyB3aXRoIGFueSBzZXQgb2YgcmF3IFNvbGFuYSBpbnN0cnVjdGlvbnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBDdXN0b21JbnN0cnVjdGlvbkJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcml2YXRlIF9jdXN0b21JbnN0cnVjdGlvbnM6IChDdXN0b21JbnN0cnVjdGlvbiB8IFZlcnNpb25lZEN1c3RvbUluc3RydWN0aW9uKVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLkN1c3RvbVR4O1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGJ1aWxkZXIgZnJvbSBhbiBleGlzdGluZyB0cmFuc2FjdGlvblxuICAgKi9cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgc3VwZXIuaW5pdEJ1aWxkZXIodHgpO1xuXG4gICAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiB0aGlzLl9pbnN0cnVjdGlvbnNEYXRhKSB7XG4gICAgICBpZiAoaW5zdHJ1Y3Rpb24udHlwZSA9PT0gSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQ3VzdG9tSW5zdHJ1Y3Rpb24pIHtcbiAgICAgICAgY29uc3QgY3VzdG9tSW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbiBhcyBDdXN0b21JbnN0cnVjdGlvbjtcbiAgICAgICAgdGhpcy5hZGRDdXN0b21JbnN0cnVjdGlvbihjdXN0b21JbnN0cnVjdGlvbi5wYXJhbXMpO1xuICAgICAgfSBlbHNlIGlmIChpbnN0cnVjdGlvbi50eXBlID09PSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5WZXJzaW9uZWRDdXN0b21JbnN0cnVjdGlvbikge1xuICAgICAgICBjb25zdCB2ZXJzaW9uZWRDdXN0b21JbnN0cnVjdGlvbiA9IGluc3RydWN0aW9uIGFzIFZlcnNpb25lZEN1c3RvbUluc3RydWN0aW9uO1xuICAgICAgICB0aGlzLmFkZEN1c3RvbUluc3RydWN0aW9uKHZlcnNpb25lZEN1c3RvbUluc3RydWN0aW9uLnBhcmFtcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGN1c3RvbSBpbnN0cnVjdGlvbiB0byB0aGUgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIGluc3RydWN0aW9uIC0gVGhlIGN1c3RvbSBpbnN0cnVjdGlvbiB0byBhZGRcbiAgICogQHJldHVybnMgVGhpcyBidWlsZGVyIGluc3RhbmNlXG4gICAqL1xuICBhZGRDdXN0b21JbnN0cnVjdGlvbihpbnN0cnVjdGlvbjogU29sSW5zdHJ1Y3Rpb24gfCBTb2xWZXJzaW9uZWRJbnN0cnVjdGlvbik6IHRoaXMge1xuICAgIHRoaXMudmFsaWRhdGVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbik7XG5cbiAgICBpZiAoaXNTb2xMZWdhY3lJbnN0cnVjdGlvbihpbnN0cnVjdGlvbikpIHtcbiAgICAgIGNvbnN0IGN1c3RvbUluc3RydWN0aW9uOiBDdXN0b21JbnN0cnVjdGlvbiA9IHtcbiAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQ3VzdG9tSW5zdHJ1Y3Rpb24sXG4gICAgICAgIHBhcmFtczogaW5zdHJ1Y3Rpb24sXG4gICAgICB9O1xuICAgICAgdGhpcy5fY3VzdG9tSW5zdHJ1Y3Rpb25zLnB1c2goY3VzdG9tSW5zdHJ1Y3Rpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB2ZXJzaW9uZWRDdXN0b21JbnN0cnVjdGlvbjogVmVyc2lvbmVkQ3VzdG9tSW5zdHJ1Y3Rpb24gPSB7XG4gICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlZlcnNpb25lZEN1c3RvbUluc3RydWN0aW9uLFxuICAgICAgICBwYXJhbXM6IGluc3RydWN0aW9uLFxuICAgICAgfTtcbiAgICAgIHRoaXMuX2N1c3RvbUluc3RydWN0aW9ucy5wdXNoKHZlcnNpb25lZEN1c3RvbUluc3RydWN0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgbXVsdGlwbGUgY3VzdG9tIGluc3RydWN0aW9ucyB0byB0aGUgdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIGluc3RydWN0aW9ucyAtIEFycmF5IG9mIGN1c3RvbSBpbnN0cnVjdGlvbnMgdG8gYWRkXG4gICAqIEByZXR1cm5zIFRoaXMgYnVpbGRlciBpbnN0YW5jZVxuICAgKi9cbiAgYWRkQ3VzdG9tSW5zdHJ1Y3Rpb25zKGluc3RydWN0aW9uczogKFNvbEluc3RydWN0aW9uIHwgU29sVmVyc2lvbmVkSW5zdHJ1Y3Rpb24pW10pOiB0aGlzIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoaW5zdHJ1Y3Rpb25zKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW5zdHJ1Y3Rpb25zIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiBpbnN0cnVjdGlvbnMpIHtcbiAgICAgIHRoaXMuYWRkQ3VzdG9tSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb24pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCB0cmFuc2FjdGlvbiBmcm9tIGRlY29uc3RydWN0ZWQgVmVyc2lvbmVkVHJhbnNhY3Rpb24gZGF0YVxuICAgKiBAcGFyYW0gZGF0YSAtIFZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YSBjb250YWluaW5nIGluc3RydWN0aW9ucywgQUxUcywgYW5kIGFjY291bnQga2V5c1xuICAgKiBAcmV0dXJucyBUaGlzIGJ1aWxkZXIgaW5zdGFuY2VcbiAgICovXG4gIGZyb21WZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEoZGF0YTogVmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhKTogdGhpcyB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhIG11c3QgYmUgYSB2YWxpZCBvYmplY3QnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEudmVyc2lvbmVkSW5zdHJ1Y3Rpb25zKSB8fCBkYXRhLnZlcnNpb25lZEluc3RydWN0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcigndmVyc2lvbmVkSW5zdHJ1Y3Rpb25zIG11c3QgYmUgYSBub24tZW1wdHkgYXJyYXknKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEuYWRkcmVzc0xvb2t1cFRhYmxlcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignYWRkcmVzc0xvb2t1cFRhYmxlcyBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gICAgICB9XG5cbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhLnN0YXRpY0FjY291bnRLZXlzKSB8fCBkYXRhLnN0YXRpY0FjY291bnRLZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdzdGF0aWNBY2NvdW50S2V5cyBtdXN0IGJlIGEgbm9uLWVtcHR5IGFycmF5Jyk7XG4gICAgICB9XG5cbiAgICAgIGlmICghZGF0YS5tZXNzYWdlSGVhZGVyIHx8IHR5cGVvZiBkYXRhLm1lc3NhZ2VIZWFkZXIgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ21lc3NhZ2VIZWFkZXIgbXVzdCBiZSBhIHZhbGlkIG9iamVjdCcpO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgZGF0YS5tZXNzYWdlSGVhZGVyLm51bVJlcXVpcmVkU2lnbmF0dXJlcyAhPT0gJ251bWJlcicgfHxcbiAgICAgICAgZGF0YS5tZXNzYWdlSGVhZGVyLm51bVJlcXVpcmVkU2lnbmF0dXJlcyA8IDBcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdtZXNzYWdlSGVhZGVyLm51bVJlcXVpcmVkU2lnbmF0dXJlcyBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlcicpO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgZGF0YS5tZXNzYWdlSGVhZGVyLm51bVJlYWRvbmx5U2lnbmVkQWNjb3VudHMgIT09ICdudW1iZXInIHx8XG4gICAgICAgIGRhdGEubWVzc2FnZUhlYWRlci5udW1SZWFkb25seVNpZ25lZEFjY291bnRzIDwgMFxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ21lc3NhZ2VIZWFkZXIubnVtUmVhZG9ubHlTaWduZWRBY2NvdW50cyBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlcicpO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICB0eXBlb2YgZGF0YS5tZXNzYWdlSGVhZGVyLm51bVJlYWRvbmx5VW5zaWduZWRBY2NvdW50cyAhPT0gJ251bWJlcicgfHxcbiAgICAgICAgZGF0YS5tZXNzYWdlSGVhZGVyLm51bVJlYWRvbmx5VW5zaWduZWRBY2NvdW50cyA8IDBcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdtZXNzYWdlSGVhZGVyLm51bVJlYWRvbmx5VW5zaWduZWRBY2NvdW50cyBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlcicpO1xuICAgICAgfVxuXG4gICAgICBsZXQgcHJvY2Vzc2VkRGF0YSA9IGRhdGE7XG4gICAgICBpZiAodGhpcy5fbm9uY2VJbmZvICYmIHRoaXMuX25vbmNlSW5mby5wYXJhbXMpIHtcbiAgICAgICAgcHJvY2Vzc2VkRGF0YSA9IHRoaXMuaW5qZWN0Tm9uY2VBZHZhbmNlSW5zdHJ1Y3Rpb24oZGF0YSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYWRkQ3VzdG9tSW5zdHJ1Y3Rpb25zKHByb2Nlc3NlZERhdGEudmVyc2lvbmVkSW5zdHJ1Y3Rpb25zKTtcblxuICAgICAgaWYgKCF0aGlzLl90cmFuc2FjdGlvbikge1xuICAgICAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3RyYW5zYWN0aW9uLnNldFZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YShwcm9jZXNzZWREYXRhKTtcblxuICAgICAgdGhpcy5fdHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb25UeXBlKFRyYW5zYWN0aW9uVHlwZS5DdXN0b21UeCk7XG5cbiAgICAgIGlmICghdGhpcy5fc2VuZGVyICYmIHByb2Nlc3NlZERhdGEuc3RhdGljQWNjb3VudEtleXMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLl9zZW5kZXIgPSBwcm9jZXNzZWREYXRhLnN0YXRpY0FjY291bnRLZXlzWzBdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgQnVpbGRUcmFuc2FjdGlvbkVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgRmFpbGVkIHRvIHByb2Nlc3MgdmVyc2lvbmVkIHRyYW5zYWN0aW9uIGRhdGE6ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW5qZWN0IG5vbmNlIGFkdmFuY2UgaW5zdHJ1Y3Rpb24gaW50byB2ZXJzaW9uZWQgdHJhbnNhY3Rpb24gZGF0YSBmb3IgZHVyYWJsZSBub25jZSBzdXBwb3J0LlxuICAgKiBSZWJ1aWxkcyB0aGUgc3RhdGljIGFjY291bnQga2V5cyBzZWN0aW9uIGJ5IHNlY3Rpb24gKHdyaXRhYmxlIHNpZ25lcnMsIHJlYWQtb25seSBzaWduZXJzLFxuICAgKiB3cml0YWJsZSBub24tc2lnbmVycywgcmVhZC1vbmx5IG5vbi1zaWduZXJzKSwgcmVtYXBzIGV2ZXJ5IGluc3RydWN0aW9uIGluZGV4IC0gc3RhdGljIGFuZFxuICAgKiBsb29rdXAtdGFibGUgLSB0byB0aGUgbmV3IGtleSBvcmRlciwgYW5kIHZhbGlkYXRlcyB0aGF0IHRoZSByZXN1bHQgY29tcGlsZXMgdG8gYSBNZXNzYWdlVjAuXG4gICAqIEBwYXJhbSBkYXRhIC0gT3JpZ2luYWwgdmVyc2lvbmVkIHRyYW5zYWN0aW9uIGRhdGFcbiAgICogQHJldHVybnMgTW9kaWZpZWQgdmVyc2lvbmVkIHRyYW5zYWN0aW9uIGRhdGEgd2l0aCB0aGUgbm9uY2UgYWR2YW5jZSBpbnN0cnVjdGlvbiBmaXJzdFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBpbmplY3ROb25jZUFkdmFuY2VJbnN0cnVjdGlvbihkYXRhOiBWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEpOiBWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEge1xuICAgIGNvbnN0IHsgd2FsbGV0Tm9uY2VBZGRyZXNzLCBhdXRoV2FsbGV0QWRkcmVzcyB9ID0gdGhpcy5fbm9uY2VJbmZvIS5wYXJhbXM7XG4gICAgY29uc3QgU1lTVEVNX1BST0dSQU0gPSBTeXN0ZW1Qcm9ncmFtLnByb2dyYW1JZC50b0Jhc2U1OCgpO1xuICAgIGNvbnN0IFNZU1ZBUl9SRUNFTlRfQkxPQ0tIQVNIRVMgPSBTWVNWQVJfUkVDRU5UX0JMT0NLSEFTSEVTX1BVQktFWS50b0Jhc2U1OCgpO1xuXG4gICAgY29uc3QgeyBudW1SZXF1aXJlZFNpZ25hdHVyZXMsIG51bVJlYWRvbmx5U2lnbmVkQWNjb3VudHMsIG51bVJlYWRvbmx5VW5zaWduZWRBY2NvdW50cyB9ID0gZGF0YS5tZXNzYWdlSGVhZGVyO1xuICAgIGNvbnN0IG9sZFN0YXRpY0xlbiA9IGRhdGEuc3RhdGljQWNjb3VudEtleXMubGVuZ3RoO1xuICAgIGlmIChcbiAgICAgIG51bVJlYWRvbmx5U2lnbmVkQWNjb3VudHMgPiBudW1SZXF1aXJlZFNpZ25hdHVyZXMgfHxcbiAgICAgIG51bVJlcXVpcmVkU2lnbmF0dXJlcyArIG51bVJlYWRvbmx5VW5zaWduZWRBY2NvdW50cyA+IG9sZFN0YXRpY0xlblxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgYEludmFsaWQgbWVzc2FnZSBoZWFkZXI6IHJlYWRvbmx5IGNvdW50cyAoJHtudW1SZWFkb25seVNpZ25lZEFjY291bnRzfSwgJHtudW1SZWFkb25seVVuc2lnbmVkQWNjb3VudHN9KSBgICtcbiAgICAgICAgICBgYXJlIGluY29uc2lzdGVudCB3aXRoICR7bnVtUmVxdWlyZWRTaWduYXR1cmVzfSByZXF1aXJlZCBzaWduYXR1cmVzIGFuZCAke29sZFN0YXRpY0xlbn0gc3RhdGljIGFjY291bnQga2V5c2BcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gU3BsaXQgdGhlIG9yaWdpbmFsIHN0YXRpYyBrZXlzIGludG8gdGhlIGZvdXIgTWVzc2FnZVYwIGhlYWRlciBzZWN0aW9ucy5cbiAgICBjb25zdCB3cml0YWJsZVNpZ25lcnMgPSBkYXRhLnN0YXRpY0FjY291bnRLZXlzLnNsaWNlKDAsIG51bVJlcXVpcmVkU2lnbmF0dXJlcyAtIG51bVJlYWRvbmx5U2lnbmVkQWNjb3VudHMpO1xuICAgIGNvbnN0IHJlYWRvbmx5U2lnbmVycyA9IGRhdGEuc3RhdGljQWNjb3VudEtleXMuc2xpY2UoXG4gICAgICBudW1SZXF1aXJlZFNpZ25hdHVyZXMgLSBudW1SZWFkb25seVNpZ25lZEFjY291bnRzLFxuICAgICAgbnVtUmVxdWlyZWRTaWduYXR1cmVzXG4gICAgKTtcbiAgICBjb25zdCB3cml0YWJsZU5vblNpZ25lcnMgPSBkYXRhLnN0YXRpY0FjY291bnRLZXlzLnNsaWNlKFxuICAgICAgbnVtUmVxdWlyZWRTaWduYXR1cmVzLFxuICAgICAgb2xkU3RhdGljTGVuIC0gbnVtUmVhZG9ubHlVbnNpZ25lZEFjY291bnRzXG4gICAgKTtcbiAgICBjb25zdCByZWFkb25seU5vblNpZ25lcnMgPSBkYXRhLnN0YXRpY0FjY291bnRLZXlzLnNsaWNlKG9sZFN0YXRpY0xlbiAtIG51bVJlYWRvbmx5VW5zaWduZWRBY2NvdW50cyk7XG5cbiAgICAvLyBUaGUgbm9uY2UgYXV0aG9yaXR5IG11c3QgYmUgYSBzaWduZXIgZm9yIEFkdmFuY2VOb25jZUFjY291bnQuIElmIGl0IGlzIGFscmVhZHkgcHJlc2VudFxuICAgIC8vIGFzIGEgbm9uLXNpZ25lciwgbW92ZSBpdCBpbnRvIHRoZSBzaWduZXJzLCBrZWVwaW5nIGl0cyB3cml0YWJpbGl0eSAoYSB3cml0YWJsZVxuICAgIC8vIG5vbi1zaWduZXIgYmVjb21lcyBhIHdyaXRhYmxlIHNpZ25lciwgYSByZWFkLW9ubHkgb25lIGEgcmVhZC1vbmx5IHNpZ25lcikuXG4gICAgY29uc3QgYXV0aG9yaXR5SXNTaWduZXIgPVxuICAgICAgd3JpdGFibGVTaWduZXJzLmluY2x1ZGVzKGF1dGhXYWxsZXRBZGRyZXNzKSB8fCByZWFkb25seVNpZ25lcnMuaW5jbHVkZXMoYXV0aFdhbGxldEFkZHJlc3MpO1xuICAgIGlmICghYXV0aG9yaXR5SXNTaWduZXIpIHtcbiAgICAgIGNvbnN0IGFzUmVhZG9ubHlOb25TaWduZXIgPSByZWFkb25seU5vblNpZ25lcnMuaW5kZXhPZihhdXRoV2FsbGV0QWRkcmVzcyk7XG4gICAgICBjb25zdCBhc1dyaXRhYmxlTm9uU2lnbmVyID0gd3JpdGFibGVOb25TaWduZXJzLmluZGV4T2YoYXV0aFdhbGxldEFkZHJlc3MpO1xuICAgICAgaWYgKGFzUmVhZG9ubHlOb25TaWduZXIgPj0gMCkge1xuICAgICAgICByZWFkb25seU5vblNpZ25lcnMuc3BsaWNlKGFzUmVhZG9ubHlOb25TaWduZXIsIDEpO1xuICAgICAgICByZWFkb25seVNpZ25lcnMucHVzaChhdXRoV2FsbGV0QWRkcmVzcyk7XG4gICAgICB9IGVsc2UgaWYgKGFzV3JpdGFibGVOb25TaWduZXIgPj0gMCkge1xuICAgICAgICB3cml0YWJsZU5vblNpZ25lcnMuc3BsaWNlKGFzV3JpdGFibGVOb25TaWduZXIsIDEpO1xuICAgICAgICB3cml0YWJsZVNpZ25lcnMucHVzaChhdXRoV2FsbGV0QWRkcmVzcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBIGJyYW5kLW5ldyBhdXRob3JpdHkgaXMgYSByZWFkLW9ubHkgc2lnbmVyIGZvciBBZHZhbmNlTm9uY2VBY2NvdW50LlxuICAgICAgICByZWFkb25seVNpZ25lcnMucHVzaChhdXRoV2FsbGV0QWRkcmVzcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhlIG5vbmNlIGFjY291bnQgbXVzdCBiZSB3cml0YWJsZSBmb3IgQWR2YW5jZU5vbmNlQWNjb3VudC4gSWYgaXQgaXMgYWxyZWFkeSBwcmVzZW50LFxuICAgIC8vIGtlZXAgaXQgaW4gcGxhY2Ugd2hlbiB3cml0YWJsZSwgb3IgbW92ZSBpdCBpbnRvIHRoZSB3cml0YWJsZSBzZWN0aW9uIHdoZW4gcmVhZC1vbmx5LlxuICAgIGNvbnN0IG5vbmNlQXNSZWFkb25seU5vblNpZ25lciA9IHJlYWRvbmx5Tm9uU2lnbmVycy5pbmRleE9mKHdhbGxldE5vbmNlQWRkcmVzcyk7XG4gICAgY29uc3Qgbm9uY2VBc1JlYWRvbmx5U2lnbmVyID0gcmVhZG9ubHlTaWduZXJzLmluZGV4T2Yod2FsbGV0Tm9uY2VBZGRyZXNzKTtcbiAgICBpZiAobm9uY2VBc1JlYWRvbmx5Tm9uU2lnbmVyID49IDApIHtcbiAgICAgIHJlYWRvbmx5Tm9uU2lnbmVycy5zcGxpY2Uobm9uY2VBc1JlYWRvbmx5Tm9uU2lnbmVyLCAxKTtcbiAgICAgIHdyaXRhYmxlTm9uU2lnbmVycy5wdXNoKHdhbGxldE5vbmNlQWRkcmVzcyk7XG4gICAgfSBlbHNlIGlmIChub25jZUFzUmVhZG9ubHlTaWduZXIgPj0gMCkge1xuICAgICAgcmVhZG9ubHlTaWduZXJzLnNwbGljZShub25jZUFzUmVhZG9ubHlTaWduZXIsIDEpO1xuICAgICAgd3JpdGFibGVTaWduZXJzLnB1c2god2FsbGV0Tm9uY2VBZGRyZXNzKTtcbiAgICB9IGVsc2UgaWYgKCF3cml0YWJsZVNpZ25lcnMuaW5jbHVkZXMod2FsbGV0Tm9uY2VBZGRyZXNzKSAmJiAhd3JpdGFibGVOb25TaWduZXJzLmluY2x1ZGVzKHdhbGxldE5vbmNlQWRkcmVzcykpIHtcbiAgICAgIHdyaXRhYmxlTm9uU2lnbmVycy5wdXNoKHdhbGxldE5vbmNlQWRkcmVzcyk7XG4gICAgfVxuXG4gICAgLy8gVGhlIHN5c3RlbSBwcm9ncmFtIGFuZCB0aGUgcmVjZW50IGJsb2NraGFzaGVzIHN5c3ZhciBhcmUgcmVhZC1vbmx5IG5vbi1zaWduZXJzIGZvclxuICAgIC8vIEFkdmFuY2VOb25jZUFjY291bnQuXG4gICAgY29uc3QgaXNQcmVzZW50ID0gKGtleTogc3RyaW5nKSA9PlxuICAgICAgd3JpdGFibGVTaWduZXJzLmluY2x1ZGVzKGtleSkgfHxcbiAgICAgIHJlYWRvbmx5U2lnbmVycy5pbmNsdWRlcyhrZXkpIHx8XG4gICAgICB3cml0YWJsZU5vblNpZ25lcnMuaW5jbHVkZXMoa2V5KSB8fFxuICAgICAgcmVhZG9ubHlOb25TaWduZXJzLmluY2x1ZGVzKGtleSk7XG4gICAgaWYgKCFpc1ByZXNlbnQoU1lTVEVNX1BST0dSQU0pKSB7XG4gICAgICByZWFkb25seU5vblNpZ25lcnMucHVzaChTWVNURU1fUFJPR1JBTSk7XG4gICAgfVxuICAgIGlmICghaXNQcmVzZW50KFNZU1ZBUl9SRUNFTlRfQkxPQ0tIQVNIRVMpKSB7XG4gICAgICByZWFkb25seU5vblNpZ25lcnMucHVzaChTWVNWQVJfUkVDRU5UX0JMT0NLSEFTSEVTKTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdTdGF0aWNBY2NvdW50S2V5cyA9IFsuLi53cml0YWJsZVNpZ25lcnMsIC4uLnJlYWRvbmx5U2lnbmVycywgLi4ud3JpdGFibGVOb25TaWduZXJzLCAuLi5yZWFkb25seU5vblNpZ25lcnNdO1xuXG4gICAgLy8gQnVpbGQgb25lIGZ1bGwgb2xkLWluZGV4IHRvIG5ldy1pbmRleCBtYXAgY292ZXJpbmcgc3RhdGljIGFuZCBsb29rdXAtdGFibGUgaW5kZXhlcy5cbiAgICAvLyBTdGF0aWMgaW5kZXhlcyBmb2xsb3cgdGhlaXIga2V5IHRvIGl0cyBuZXcgcG9zaXRpb247IGxvb2t1cC10YWJsZSBpbmRleGVzLCB3aGljaCBhcmVcbiAgICAvLyBhcHBlbmRlZCBhZnRlciB0aGUgc3RhdGljIGtleXMsIHNoaWZ0IGJ5IHRoZSBudW1iZXIgb2YgaW5zZXJ0ZWQgc3RhdGljIGtleXMuXG4gICAgY29uc3QgaW5kZXhNYXAgPSBuZXcgTWFwPG51bWJlciwgbnVtYmVyPigpO1xuICAgIGRhdGEuc3RhdGljQWNjb3VudEtleXMuZm9yRWFjaCgoa2V5LCBvbGRJZHgpID0+IGluZGV4TWFwLnNldChvbGRJZHgsIG5ld1N0YXRpY0FjY291bnRLZXlzLmluZGV4T2Yoa2V5KSkpO1xuICAgIGNvbnN0IHNoaWZ0ID0gbmV3U3RhdGljQWNjb3VudEtleXMubGVuZ3RoIC0gb2xkU3RhdGljTGVuO1xuICAgIGNvbnN0IGxvb2t1cEtleUNvdW50ID0gZGF0YS5hZGRyZXNzTG9va3VwVGFibGVzLnJlZHVjZShcbiAgICAgIChzdW0sIGFsdCkgPT4gc3VtICsgYWx0LndyaXRhYmxlSW5kZXhlcy5sZW5ndGggKyBhbHQucmVhZG9ubHlJbmRleGVzLmxlbmd0aCxcbiAgICAgIDBcbiAgICApO1xuICAgIGZvciAobGV0IGkgPSBvbGRTdGF0aWNMZW47IGkgPCBvbGRTdGF0aWNMZW4gKyBsb29rdXBLZXlDb3VudDsgaSsrKSB7XG4gICAgICBpbmRleE1hcC5zZXQoaSwgaSArIHNoaWZ0KTtcbiAgICB9XG4gICAgY29uc3QgcmVtYXBJbmRleCA9IChpbmRleDogbnVtYmVyKTogbnVtYmVyID0+IHtcbiAgICAgIGNvbnN0IG1hcHBlZCA9IGluZGV4TWFwLmdldChpbmRleCk7XG4gICAgICBpZiAobWFwcGVkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcihgSW52YWxpZCBhY2NvdW50IGtleSBpbmRleCAke2luZGV4fSBpbiB2ZXJzaW9uZWQgaW5zdHJ1Y3Rpb25gKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtYXBwZWQ7XG4gICAgfTtcblxuICAgIGNvbnN0IG5vbmNlQWR2YW5jZUluc3RydWN0aW9uOiBTb2xWZXJzaW9uZWRJbnN0cnVjdGlvbiA9IHtcbiAgICAgIHByb2dyYW1JZEluZGV4OiBuZXdTdGF0aWNBY2NvdW50S2V5cy5pbmRleE9mKFNZU1RFTV9QUk9HUkFNKSxcbiAgICAgIGFjY291bnRLZXlJbmRleGVzOiBbXG4gICAgICAgIG5ld1N0YXRpY0FjY291bnRLZXlzLmluZGV4T2Yod2FsbGV0Tm9uY2VBZGRyZXNzKSxcbiAgICAgICAgbmV3U3RhdGljQWNjb3VudEtleXMuaW5kZXhPZihTWVNWQVJfUkVDRU5UX0JMT0NLSEFTSEVTKSxcbiAgICAgICAgbmV3U3RhdGljQWNjb3VudEtleXMuaW5kZXhPZihhdXRoV2FsbGV0QWRkcmVzcyksXG4gICAgICBdLFxuICAgICAgZGF0YTogJzZ2eDhQJywgLy8gU3lzdGVtUHJvZ3JhbSBBZHZhbmNlTm9uY2VBY2NvdW50ICgweDA0MDAwMDAwKSBpbiBiYXNlNThcbiAgICB9O1xuXG4gICAgY29uc3QgcHJvY2Vzc2VkOiBWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEgPSB7XG4gICAgICAuLi5kYXRhLFxuICAgICAgdmVyc2lvbmVkSW5zdHJ1Y3Rpb25zOiBbXG4gICAgICAgIG5vbmNlQWR2YW5jZUluc3RydWN0aW9uLFxuICAgICAgICAuLi5kYXRhLnZlcnNpb25lZEluc3RydWN0aW9ucy5tYXAoKGluc3QpID0+ICh7XG4gICAgICAgICAgcHJvZ3JhbUlkSW5kZXg6IHJlbWFwSW5kZXgoaW5zdC5wcm9ncmFtSWRJbmRleCksXG4gICAgICAgICAgYWNjb3VudEtleUluZGV4ZXM6IGluc3QuYWNjb3VudEtleUluZGV4ZXMubWFwKHJlbWFwSW5kZXgpLFxuICAgICAgICAgIGRhdGE6IGluc3QuZGF0YSxcbiAgICAgICAgfSkpLFxuICAgICAgXSxcbiAgICAgIHN0YXRpY0FjY291bnRLZXlzOiBuZXdTdGF0aWNBY2NvdW50S2V5cyxcbiAgICAgIG1lc3NhZ2VIZWFkZXI6IHtcbiAgICAgICAgbnVtUmVxdWlyZWRTaWduYXR1cmVzOiB3cml0YWJsZVNpZ25lcnMubGVuZ3RoICsgcmVhZG9ubHlTaWduZXJzLmxlbmd0aCxcbiAgICAgICAgbnVtUmVhZG9ubHlTaWduZWRBY2NvdW50czogcmVhZG9ubHlTaWduZXJzLmxlbmd0aCxcbiAgICAgICAgbnVtUmVhZG9ubHlVbnNpZ25lZEFjY291bnRzOiByZWFkb25seU5vblNpZ25lcnMubGVuZ3RoLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgdGhpcy52YWxpZGF0ZUluamVjdGVkTWVzc2FnZShwcm9jZXNzZWQpO1xuICAgIHJldHVybiBwcm9jZXNzZWQ7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhlIHJlc3VsdCBvZiBpbmplY3ROb25jZUFkdmFuY2VJbnN0cnVjdGlvbiBieSBjb21waWxpbmcgaXQ6IHRoZSBNZXNzYWdlVjAgYnVpbHRcbiAgICogZnJvbSB0aGUgbmV3IGtleXMsIGhlYWRlciwgbG9va3VwcyBhbmQgaW5zdHJ1Y3Rpb25zIG11c3QgZGVzZXJpYWxpemUgYW5kIGNvbnRhaW4gbm9cbiAgICogZHVwbGljYXRlIGtleXMuXG4gICAqIEBwYXJhbSBkYXRhIC0gUHJvY2Vzc2VkIHZlcnNpb25lZCB0cmFuc2FjdGlvbiBkYXRhXG4gICAqIEB0aHJvd3Mge0J1aWxkVHJhbnNhY3Rpb25FcnJvcn0gaWYgdGhlIHJlYnVpbHQgbWVzc2FnZSBkb2VzIG5vdCBjb21waWxlXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlSW5qZWN0ZWRNZXNzYWdlKGRhdGE6IFZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YSk6IHZvaWQge1xuICAgIGlmIChuZXcgU2V0KGRhdGEuc3RhdGljQWNjb3VudEtleXMpLnNpemUgIT09IGRhdGEuc3RhdGljQWNjb3VudEtleXMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbmplY3RlZCBub25jZSBhZHZhbmNlIGluc3RydWN0aW9uIHByb2R1Y2VkIGR1cGxpY2F0ZSBhY2NvdW50IGtleXMnKTtcbiAgICB9XG5cbiAgICBjb25zdCBtZXNzYWdlID0gbmV3IE1lc3NhZ2VWMCh7XG4gICAgICBoZWFkZXI6IGRhdGEubWVzc2FnZUhlYWRlcixcbiAgICAgIHN0YXRpY0FjY291bnRLZXlzOiBkYXRhLnN0YXRpY0FjY291bnRLZXlzLm1hcCgoa2V5KSA9PiBuZXcgUHVibGljS2V5KGtleSkpLFxuICAgICAgcmVjZW50QmxvY2toYXNoOiBkYXRhLnJlY2VudEJsb2NraGFzaCA/PyB0aGlzLl9yZWNlbnRCbG9ja2hhc2gsXG4gICAgICBjb21waWxlZEluc3RydWN0aW9uczogZGF0YS52ZXJzaW9uZWRJbnN0cnVjdGlvbnMubWFwKChpbnN0cnVjdGlvbikgPT4gKHtcbiAgICAgICAgcHJvZ3JhbUlkSW5kZXg6IGluc3RydWN0aW9uLnByb2dyYW1JZEluZGV4LFxuICAgICAgICBhY2NvdW50S2V5SW5kZXhlczogaW5zdHJ1Y3Rpb24uYWNjb3VudEtleUluZGV4ZXMsXG4gICAgICAgIGRhdGE6IEJ1ZmZlci5mcm9tKGJhc2U1OC5kZWNvZGUoaW5zdHJ1Y3Rpb24uZGF0YSkpLFxuICAgICAgfSkpLFxuICAgICAgYWRkcmVzc1RhYmxlTG9va3VwczogZGF0YS5hZGRyZXNzTG9va3VwVGFibGVzLm1hcCgoYWx0KSA9PiAoe1xuICAgICAgICBhY2NvdW50S2V5OiBuZXcgUHVibGljS2V5KGFsdC5hY2NvdW50S2V5KSxcbiAgICAgICAgd3JpdGFibGVJbmRleGVzOiBhbHQud3JpdGFibGVJbmRleGVzLFxuICAgICAgICByZWFkb25seUluZGV4ZXM6IGFsdC5yZWFkb25seUluZGV4ZXMsXG4gICAgICB9KSksXG4gICAgfSk7XG5cbiAgICB0cnkge1xuICAgICAgTWVzc2FnZVYwLmRlc2VyaWFsaXplKG1lc3NhZ2Uuc2VyaWFsaXplKCkpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICBgSW5qZWN0ZWQgbm9uY2UgYWR2YW5jZSBpbnN0cnVjdGlvbiBwcm9kdWNlZCBhbiBpbnZhbGlkIG1lc3NhZ2U6ICR7XG4gICAgICAgICAgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBlcnJvclxuICAgICAgICB9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgYWxsIGN1c3RvbSBpbnN0cnVjdGlvbnMgYW5kIHZlcnNpb25lZCB0cmFuc2FjdGlvbiBkYXRhXG4gICAqIEByZXR1cm5zIFRoaXMgYnVpbGRlciBpbnN0YW5jZVxuICAgKi9cbiAgY2xlYXJJbnN0cnVjdGlvbnMoKTogdGhpcyB7XG4gICAgdGhpcy5fY3VzdG9tSW5zdHJ1Y3Rpb25zID0gW107XG4gICAgaWYgKHRoaXMuX3RyYW5zYWN0aW9uKSB7XG4gICAgICB0aGlzLl90cmFuc2FjdGlvbi5zZXRWZXJzaW9uZWRUcmFuc2FjdGlvbkRhdGEodW5kZWZpbmVkKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBjdXJyZW50IGN1c3RvbSBpbnN0cnVjdGlvbnNcbiAgICogQHJldHVybnMgQXJyYXkgb2YgY3VzdG9tIGluc3RydWN0aW9uc1xuICAgKi9cbiAgZ2V0SW5zdHJ1Y3Rpb25zKCk6IChDdXN0b21JbnN0cnVjdGlvbiB8IFZlcnNpb25lZEN1c3RvbUluc3RydWN0aW9uKVtdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuX2N1c3RvbUluc3RydWN0aW9uc107XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgY3VzdG9tIGluc3RydWN0aW9uIGZvcm1hdFxuICAgKiBAcGFyYW0gaW5zdHJ1Y3Rpb24gLSBUaGUgaW5zdHJ1Y3Rpb24gdG8gdmFsaWRhdGVcbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbjogU29sSW5zdHJ1Y3Rpb24gfCBTb2xWZXJzaW9uZWRJbnN0cnVjdGlvbik6IHZvaWQge1xuICAgIGlmICghaW5zdHJ1Y3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0luc3RydWN0aW9uIGNhbm5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCcpO1xuICAgIH1cblxuICAgIGlmIChpc1NvbExlZ2FjeUluc3RydWN0aW9uKGluc3RydWN0aW9uKSkge1xuICAgICAgdGhpcy52YWxpZGF0ZVNvbEluc3RydWN0aW9uKGluc3RydWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWxpZGF0ZVZlcnNpb25lZEluc3RydWN0aW9uKGluc3RydWN0aW9uKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdHJhZGl0aW9uYWwgU29sSW5zdHJ1Y3Rpb24gZm9ybWF0XG4gICAqIEBwYXJhbSBpbnN0cnVjdGlvbiAtIFRoZSB0cmFkaXRpb25hbCBpbnN0cnVjdGlvbiB0byB2YWxpZGF0ZVxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVNvbEluc3RydWN0aW9uKGluc3RydWN0aW9uOiBTb2xJbnN0cnVjdGlvbik6IHZvaWQge1xuICAgIGlmICghaW5zdHJ1Y3Rpb24ucHJvZ3JhbUlkIHx8IHR5cGVvZiBpbnN0cnVjdGlvbi5wcm9ncmFtSWQgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnN0cnVjdGlvbiBtdXN0IGhhdmUgYSB2YWxpZCBwcm9ncmFtSWQgc3RyaW5nJyk7XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgdGhhdCBwcm9ncmFtSWQgaXMgYSB2YWxpZCBTb2xhbmEgcHVibGljIGtleVxuICAgIHRyeSB7XG4gICAgICBuZXcgUHVibGljS2V5KGluc3RydWN0aW9uLnByb2dyYW1JZCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgcHJvZ3JhbUlkIGZvcm1hdCcpO1xuICAgIH1cblxuICAgIGlmICghaW5zdHJ1Y3Rpb24ua2V5cyB8fCAhQXJyYXkuaXNBcnJheShpbnN0cnVjdGlvbi5rZXlzKSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW5zdHJ1Y3Rpb24gbXVzdCBoYXZlIHZhbGlkIGtleXMgYXJyYXknKTtcbiAgICB9XG5cbiAgICAvLyBWYWxpZGF0ZSBlYWNoIGtleVxuICAgIGZvciAoY29uc3Qga2V5IG9mIGluc3RydWN0aW9uLmtleXMpIHtcbiAgICAgIGlmICgha2V5LnB1YmtleSB8fCB0eXBlb2Yga2V5LnB1YmtleSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignRWFjaCBrZXkgbXVzdCBoYXZlIGEgdmFsaWQgcHVia2V5IHN0cmluZycpO1xuICAgICAgfVxuXG4gICAgICB0cnkge1xuICAgICAgICBuZXcgUHVibGljS2V5KGtleS5wdWJrZXkpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBwdWJrZXkgZm9ybWF0IGluIGtleXMnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBrZXkuaXNTaWduZXIgIT09ICdib29sZWFuJykge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFYWNoIGtleSBtdXN0IGhhdmUgYSBib29sZWFuIGlzU2lnbmVyIGZpZWxkJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2Yga2V5LmlzV3JpdGFibGUgIT09ICdib29sZWFuJykge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFYWNoIGtleSBtdXN0IGhhdmUgYSBib29sZWFuIGlzV3JpdGFibGUgZmllbGQnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaW5zdHJ1Y3Rpb24uZGF0YSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBpbnN0cnVjdGlvbi5kYXRhICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW5zdHJ1Y3Rpb24gbXVzdCBoYXZlIHZhbGlkIGRhdGEgc3RyaW5nJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHZlcnNpb25lZCBpbnN0cnVjdGlvbiBmb3JtYXRcbiAgICogQHBhcmFtIGluc3RydWN0aW9uIC0gVGhlIHZlcnNpb25lZCBpbnN0cnVjdGlvbiB0byB2YWxpZGF0ZVxuICAgKi9cbiAgcHJpdmF0ZSB2YWxpZGF0ZVZlcnNpb25lZEluc3RydWN0aW9uKGluc3RydWN0aW9uOiBTb2xWZXJzaW9uZWRJbnN0cnVjdGlvbik6IHZvaWQge1xuICAgIGlmICh0eXBlb2YgaW5zdHJ1Y3Rpb24ucHJvZ3JhbUlkSW5kZXggIT09ICdudW1iZXInIHx8IGluc3RydWN0aW9uLnByb2dyYW1JZEluZGV4IDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVmVyc2lvbmVkIGluc3RydWN0aW9uIG11c3QgaGF2ZSBhIHZhbGlkIHByb2dyYW1JZEluZGV4IG51bWJlcicpO1xuICAgIH1cblxuICAgIGlmICghaW5zdHJ1Y3Rpb24uYWNjb3VudEtleUluZGV4ZXMgfHwgIUFycmF5LmlzQXJyYXkoaW5zdHJ1Y3Rpb24uYWNjb3VudEtleUluZGV4ZXMpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdWZXJzaW9uZWQgaW5zdHJ1Y3Rpb24gbXVzdCBoYXZlIHZhbGlkIGFjY291bnRLZXlJbmRleGVzIGFycmF5Jyk7XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgZWFjaCBhY2NvdW50IGtleSBpbmRleFxuICAgIGZvciAoY29uc3QgaW5kZXggb2YgaW5zdHJ1Y3Rpb24uYWNjb3VudEtleUluZGV4ZXMpIHtcbiAgICAgIGlmICh0eXBlb2YgaW5kZXggIT09ICdudW1iZXInIHx8IGluZGV4IDwgMCkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdFYWNoIGFjY291bnRLZXlJbmRleCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlcicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpbnN0cnVjdGlvbi5kYXRhID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIGluc3RydWN0aW9uLmRhdGEgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdWZXJzaW9uZWQgaW5zdHJ1Y3Rpb24gbXVzdCBoYXZlIHZhbGlkIGRhdGEgc3RyaW5nJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+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":"AASA,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;AA0MD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,6BAA6B,GAAG,4BAA4B,CAoJzG"}