@bitgo-beta/sdk-coin-sol 7.6.4-beta.77 → 7.6.4-beta.770

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,136 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import { SolTransactionVersion, SolV1TransactionConfig, TransactionType } from '@bitgo-beta/sdk-core';
3
+ import { Transaction } from './transaction';
4
+ import { TransactionBuilder } from './transactionBuilder';
5
+ import { ApplyPendingBalance, AtaInit, ConfidentialDeposit, ConfidentialTransfer, ConfidentialWithdraw, ConfigureConfidentialTransferAccount, VerifyEqualityProof, VerifyPubkeyValidity, VerifyRangeProof, VerifyValidityProof } from './iface';
6
+ /**
7
+ * Builder for Token-2022 confidential transfer transactions.
8
+ *
9
+ * Provides type-safe fluent setters for the following CT instructions:
10
+ * - CreateAssociatedTokenAccount (CT enablement: ATA under Token-2022 before ConfigureAccount)
11
+ * - ConfigureAccount (standalone, with VerifyPubkeyValidity proof)
12
+ * - ApplyPendingBalance (always instruction #1 in v1 spend txs, idempotent)
13
+ * - Deposit (public → confidential conversion)
14
+ * - Withdraw (confidential → public conversion, with equality + range proofs)
15
+ * - Transfer (confidential → confidential, with equality + validity + range proofs)
16
+ * - VerifyPubkeyValidity / VerifyEquality / VerifyValidity / VerifyRange proof instructions
17
+ *
18
+ * Instruction builders are v0/v1-agnostic: they produce instruction data and
19
+ * account metas only. The caller (Wallet Platform) assembles them into v1
20
+ * transactions in the correct order.
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * const builder = factory.getConfidentialTransferBuilder();
25
+ * builder.nonce(recentBlockhash).sender(payer);
26
+ * builder.configureAccount({ tokenAddress, mintAddress, authorityAddress, ... });
27
+ * builder.verifyPubkeyValidity({ proofData });
28
+ * const tx = await builder.build();
29
+ * ```
30
+ */
31
+ export declare class ConfidentialTransferBuilder extends TransactionBuilder {
32
+ private _ctInstructions;
33
+ private _version?;
34
+ private _v1TransactionConfig?;
35
+ constructor(_coinConfig: Readonly<CoinConfig>);
36
+ protected get transactionType(): TransactionType;
37
+ /**
38
+ * Set the Solana transaction version.
39
+ *
40
+ * Defaults to legacy until set. When set to `1`, the builder assembles a v1
41
+ * (SIMD-0296/0385) transaction: version byte `0x81`, an inline `transactionConfig`
42
+ * instead of ComputeBudget instructions, no address lookup tables, and a
43
+ * message-first wire format with signatures appended.
44
+ *
45
+ * @param version - the transaction version (0 = v0, 1 = v1)
46
+ * @returns {this} This builder
47
+ */
48
+ version(version: SolTransactionVersion): this;
49
+ /**
50
+ * Set the v1 transaction config (compute unit limit, heap size, loaded accounts
51
+ * data size limit, and priority fee as total lamports). Required when
52
+ * `version(1)` is set.
53
+ *
54
+ * @param config - the v1 transaction config
55
+ * @returns {this} This builder
56
+ */
57
+ transactionConfig(config: SolV1TransactionConfig): this;
58
+ /**
59
+ * Override the zk-elgamal-proof program id.
60
+ *
61
+ * Defaults to the canonical on-chain program id (`ZkE1Gama1Proof111...`)
62
+ * which is the same across mainnet, devnet, and testnet. Override only
63
+ * when targeting a custom deployment.
64
+ *
65
+ * @param programId - base58 encoded program id
66
+ */
67
+ zkProofProgramId(programId: string): this;
68
+ /** @inheritDoc */
69
+ initBuilder(tx: Transaction): void;
70
+ /**
71
+ * Add a CreateAssociatedTokenAccount (idempotent) instruction to the transaction.
72
+ * CT enablement only — the ATA must exist before ConfigureAccount; add this
73
+ * first when the ATA is not yet on-chain. For Token-2022 mints pass
74
+ * `programId` so the ATA is created under the Token-2022 program.
75
+ */
76
+ createAta(params: AtaInit['params']): this;
77
+ /**
78
+ * Add a ConfigureAccount instruction to the transaction.
79
+ * One-time ATA setup — registers ElGamal pubkey + AES zero ciphertext.
80
+ * Must be accompanied by a VerifyPubkeyValidity proof instruction.
81
+ */
82
+ configureAccount(params: ConfigureConfidentialTransferAccount['params']): this;
83
+ /**
84
+ * Add an ApplyPendingBalance instruction to the transaction.
85
+ * Credits pending balance into available balance. Idempotent (no-op if 0 pending).
86
+ * In v1 transactions, this should always be instruction #1.
87
+ */
88
+ applyPendingBalance(params: ApplyPendingBalance['params']): this;
89
+ /**
90
+ * Add a Deposit instruction to the transaction.
91
+ * Moves public SPL tokens into confidential pending balance. No proof required.
92
+ */
93
+ confidentialDeposit(params: ConfidentialDeposit['params']): this;
94
+ /**
95
+ * Add a Withdraw instruction to the transaction.
96
+ * Moves confidential available balance to public balance.
97
+ * Requires equality + range proof verification instructions.
98
+ */
99
+ confidentialWithdraw(params: ConfidentialWithdraw['params']): this;
100
+ /**
101
+ * Add a confidential Transfer instruction to the transaction.
102
+ * Requires equality + ciphertext validity + range proof verification instructions.
103
+ */
104
+ confidentialTransfer(params: ConfidentialTransfer['params']): this;
105
+ /**
106
+ * Add a VerifyPubkeyValidity proof instruction (used with ConfigureAccount).
107
+ */
108
+ verifyPubkeyValidity(params: VerifyPubkeyValidity['params']): this;
109
+ /**
110
+ * Add a VerifyCiphertextCommitmentEquality proof instruction (used with Transfer and Withdraw).
111
+ */
112
+ verifyEqualityProof(params: VerifyEqualityProof['params']): this;
113
+ /**
114
+ * Add a VerifyBatchedGroupedCiphertext3HandlesValidity proof instruction (used with Transfer).
115
+ */
116
+ verifyValidityProof(params: VerifyValidityProof['params']): this;
117
+ /**
118
+ * Add a VerifyBatchedRangeProofU128 proof instruction (used with Transfer).
119
+ */
120
+ verifyRangeProof(params: VerifyRangeProof['params']): this;
121
+ /** @inheritdoc */
122
+ protected buildImplementation(): Promise<Transaction>;
123
+ /**
124
+ * Build a v1 (SIMD-0296/0385) confidential transfer transaction.
125
+ *
126
+ * Assembles the CT instructions via the shared instruction factory, compiles
127
+ * and serializes a v1 message with the inline transaction config, signs the
128
+ * message bytes with the builder's signers, and stores the resulting wire
129
+ * bytes for broadcast. Also populates a metadata-only SolTransaction so the
130
+ * transaction JSON and input/output extraction remain usable.
131
+ *
132
+ * @returns {Transaction} The built transaction holding the v1 wire bytes
133
+ */
134
+ private buildV1;
135
+ }
136
+ //# sourceMappingURL=confidentialTransferBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confidentialTransferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/confidentialTransferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAyB,qBAAqB,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG7H,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EACL,mBAAmB,EACnB,OAAO,EACP,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,oCAAoC,EAGpC,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAQjB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,2BAA4B,SAAQ,kBAAkB;IACjE,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,QAAQ,CAAC,CAAwB;IACzC,OAAO,CAAC,oBAAoB,CAAC,CAAyB;gBAE1C,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;;;;;;;OAUG;IACH,OAAO,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI;IAK7C;;;;;;;OAOG;IACH,iBAAiB,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI;IAKvD;;;;;;;;OAQG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAMzC,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAwBlC;;;;;OAKG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI;IAwB1C;;;;OAIG;IACH,gBAAgB,CAAC,MAAM,EAAE,oCAAoC,CAAC,QAAQ,CAAC,GAAG,IAAI;IAe9E;;;;OAIG;IACH,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,GAAG,IAAI;IAahE;;;OAGG;IACH,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,GAAG,IAAI;IAahE;;;;OAIG;IACH,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GAAG,IAAI;IAclE;;;OAGG;IACH,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GAAG,IAAI;IAgBlE;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,GAAG,IAAI;IAQlE;;OAEG;IACH,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,GAAG,IAAI;IAQhE;;OAEG;IACH,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,GAAG,IAAI;IAQhE;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,GAAG,IAAI;IAQ1D,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAY3D;;;;;;;;;;OAUG;IACH,OAAO,CAAC,OAAO;CAwGhB"}
@@ -0,0 +1,368 @@
1
+ import { BuildTransactionError, TransactionType } from '@bitgo-beta/sdk-core';
2
+ import { PublicKey, Transaction as SolTransaction } from '@solana/web3.js';
3
+ import nacl from 'tweetnacl';
4
+ import { Transaction } from './transaction';
5
+ import { TransactionBuilder } from './transactionBuilder';
6
+ import { InstructionBuilderTypes } from './constants';
7
+ import { compileTransactionMessage } from './serialization/compileTransactionMessage';
8
+ import { decodeV1Message } from './serialization/codecs/v1/message';
9
+ import { serializeWireTransaction } from './serialization/wire-transaction';
10
+ import { solInstructionFactory } from './solInstructionFactory';
11
+ import { buildAdvanceNonceAccountInstruction } from './v1TransactionBuilder';
12
+ import assert from 'assert';
13
+ /**
14
+ * Builder for Token-2022 confidential transfer transactions.
15
+ *
16
+ * Provides type-safe fluent setters for the following CT instructions:
17
+ * - CreateAssociatedTokenAccount (CT enablement: ATA under Token-2022 before ConfigureAccount)
18
+ * - ConfigureAccount (standalone, with VerifyPubkeyValidity proof)
19
+ * - ApplyPendingBalance (always instruction #1 in v1 spend txs, idempotent)
20
+ * - Deposit (public → confidential conversion)
21
+ * - Withdraw (confidential → public conversion, with equality + range proofs)
22
+ * - Transfer (confidential → confidential, with equality + validity + range proofs)
23
+ * - VerifyPubkeyValidity / VerifyEquality / VerifyValidity / VerifyRange proof instructions
24
+ *
25
+ * Instruction builders are v0/v1-agnostic: they produce instruction data and
26
+ * account metas only. The caller (Wallet Platform) assembles them into v1
27
+ * transactions in the correct order.
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * const builder = factory.getConfidentialTransferBuilder();
32
+ * builder.nonce(recentBlockhash).sender(payer);
33
+ * builder.configureAccount({ tokenAddress, mintAddress, authorityAddress, ... });
34
+ * builder.verifyPubkeyValidity({ proofData });
35
+ * const tx = await builder.build();
36
+ * ```
37
+ */
38
+ export class ConfidentialTransferBuilder extends TransactionBuilder {
39
+ constructor(_coinConfig) {
40
+ super(_coinConfig);
41
+ this._ctInstructions = [];
42
+ this._transaction = new Transaction(_coinConfig);
43
+ }
44
+ get transactionType() {
45
+ return TransactionType.ConfidentialTransfer;
46
+ }
47
+ /**
48
+ * Set the Solana transaction version.
49
+ *
50
+ * Defaults to legacy until set. When set to `1`, the builder assembles a v1
51
+ * (SIMD-0296/0385) transaction: version byte `0x81`, an inline `transactionConfig`
52
+ * instead of ComputeBudget instructions, no address lookup tables, and a
53
+ * message-first wire format with signatures appended.
54
+ *
55
+ * @param version - the transaction version (0 = v0, 1 = v1)
56
+ * @returns {this} This builder
57
+ */
58
+ version(version) {
59
+ this._version = version;
60
+ return this;
61
+ }
62
+ /**
63
+ * Set the v1 transaction config (compute unit limit, heap size, loaded accounts
64
+ * data size limit, and priority fee as total lamports). Required when
65
+ * `version(1)` is set.
66
+ *
67
+ * @param config - the v1 transaction config
68
+ * @returns {this} This builder
69
+ */
70
+ transactionConfig(config) {
71
+ this._v1TransactionConfig = config;
72
+ return this;
73
+ }
74
+ /**
75
+ * Override the zk-elgamal-proof program id.
76
+ *
77
+ * Defaults to the canonical on-chain program id (`ZkE1Gama1Proof111...`)
78
+ * which is the same across mainnet, devnet, and testnet. Override only
79
+ * when targeting a custom deployment.
80
+ *
81
+ * @param programId - base58 encoded program id
82
+ */
83
+ zkProofProgramId(programId) {
84
+ assert(programId, 'Missing programId param');
85
+ this._zkProofProgramId = programId;
86
+ return this;
87
+ }
88
+ /** @inheritDoc */
89
+ initBuilder(tx) {
90
+ super.initBuilder(tx);
91
+ this._ctInstructions = [];
92
+ for (const instruction of this._instructionsData) {
93
+ switch (instruction.type) {
94
+ case InstructionBuilderTypes.CreateAssociatedTokenAccount:
95
+ case InstructionBuilderTypes.ReallocateConfidentialTransferAccount:
96
+ case InstructionBuilderTypes.ConfigureConfidentialTransferAccount:
97
+ case InstructionBuilderTypes.ApplyPendingBalance:
98
+ case InstructionBuilderTypes.ConfidentialDeposit:
99
+ case InstructionBuilderTypes.ConfidentialWithdraw:
100
+ case InstructionBuilderTypes.ConfidentialTransfer:
101
+ case InstructionBuilderTypes.VerifyPubkeyValidity:
102
+ case InstructionBuilderTypes.VerifyEqualityProof:
103
+ case InstructionBuilderTypes.VerifyValidityProof:
104
+ case InstructionBuilderTypes.VerifyRangeProof:
105
+ this._ctInstructions.push(instruction);
106
+ break;
107
+ default:
108
+ break;
109
+ }
110
+ }
111
+ }
112
+ /**
113
+ * Add a CreateAssociatedTokenAccount (idempotent) instruction to the transaction.
114
+ * CT enablement only — the ATA must exist before ConfigureAccount; add this
115
+ * first when the ATA is not yet on-chain. For Token-2022 mints pass
116
+ * `programId` so the ATA is created under the Token-2022 program.
117
+ */
118
+ createAta(params) {
119
+ assert(params.mintAddress, 'Missing mintAddress param');
120
+ assert(params.ataAddress, 'Missing ataAddress param');
121
+ assert(params.ownerAddress, 'Missing ownerAddress param');
122
+ assert(params.payerAddress, 'Missing payerAddress param');
123
+ this._ctInstructions.push({
124
+ type: InstructionBuilderTypes.CreateAssociatedTokenAccount,
125
+ params,
126
+ });
127
+ // ConfigureAccount requires the ConfidentialTransferAccount extension, which an ATA does
128
+ // not carry — Reallocate adds it and must run before ConfigureAccount.
129
+ this._ctInstructions.push({
130
+ type: InstructionBuilderTypes.ReallocateConfidentialTransferAccount,
131
+ params: {
132
+ tokenAddress: params.ataAddress,
133
+ payerAddress: params.payerAddress,
134
+ ownerAddress: params.ownerAddress,
135
+ programId: params.programId,
136
+ },
137
+ });
138
+ return this;
139
+ }
140
+ /**
141
+ * Add a ConfigureAccount instruction to the transaction.
142
+ * One-time ATA setup — registers ElGamal pubkey + AES zero ciphertext.
143
+ * Must be accompanied by a VerifyPubkeyValidity proof instruction.
144
+ */
145
+ configureAccount(params) {
146
+ assert(params.tokenAddress, 'Missing tokenAddress param');
147
+ assert(params.mintAddress, 'Missing mintAddress param');
148
+ assert(params.authorityAddress, 'Missing authorityAddress param');
149
+ assert(params.elgamalPubkey, 'Missing elgamalPubkey param');
150
+ assert(params.decryptableZeroBalance, 'Missing decryptableZeroBalance param');
151
+ assert(params.maximumPendingBalanceCreditCounter, 'Missing maximumPendingBalanceCreditCounter param');
152
+ this._ctInstructions.push({
153
+ type: InstructionBuilderTypes.ConfigureConfidentialTransferAccount,
154
+ params,
155
+ });
156
+ return this;
157
+ }
158
+ /**
159
+ * Add an ApplyPendingBalance instruction to the transaction.
160
+ * Credits pending balance into available balance. Idempotent (no-op if 0 pending).
161
+ * In v1 transactions, this should always be instruction #1.
162
+ */
163
+ applyPendingBalance(params) {
164
+ assert(params.tokenAddress, 'Missing tokenAddress param');
165
+ assert(params.authorityAddress, 'Missing authorityAddress param');
166
+ assert(params.expectedPendingBalanceCreditCounter, 'Missing expectedPendingBalanceCreditCounter param');
167
+ assert(params.newDecryptableAvailableBalance, 'Missing newDecryptableAvailableBalance param');
168
+ this._ctInstructions.push({
169
+ type: InstructionBuilderTypes.ApplyPendingBalance,
170
+ params,
171
+ });
172
+ return this;
173
+ }
174
+ /**
175
+ * Add a Deposit instruction to the transaction.
176
+ * Moves public SPL tokens into confidential pending balance. No proof required.
177
+ */
178
+ confidentialDeposit(params) {
179
+ assert(params.tokenAddress, 'Missing tokenAddress param');
180
+ assert(params.mintAddress, 'Missing mintAddress param');
181
+ assert(params.authorityAddress, 'Missing authorityAddress param');
182
+ assert(params.amount, 'Missing amount param');
183
+ this._ctInstructions.push({
184
+ type: InstructionBuilderTypes.ConfidentialDeposit,
185
+ params,
186
+ });
187
+ return this;
188
+ }
189
+ /**
190
+ * Add a Withdraw instruction to the transaction.
191
+ * Moves confidential available balance to public balance.
192
+ * Requires equality + range proof verification instructions.
193
+ */
194
+ confidentialWithdraw(params) {
195
+ assert(params.tokenAddress, 'Missing tokenAddress param');
196
+ assert(params.mintAddress, 'Missing mintAddress param');
197
+ assert(params.authorityAddress, 'Missing authorityAddress param');
198
+ assert(params.amount, 'Missing amount param');
199
+ assert(params.newDecryptableAvailableBalance, 'Missing newDecryptableAvailableBalance param');
200
+ this._ctInstructions.push({
201
+ type: InstructionBuilderTypes.ConfidentialWithdraw,
202
+ params,
203
+ });
204
+ return this;
205
+ }
206
+ /**
207
+ * Add a confidential Transfer instruction to the transaction.
208
+ * Requires equality + ciphertext validity + range proof verification instructions.
209
+ */
210
+ confidentialTransfer(params) {
211
+ assert(params.sourceTokenAddress, 'Missing sourceTokenAddress param');
212
+ assert(params.mintAddress, 'Missing mintAddress param');
213
+ assert(params.destinationTokenAddress, 'Missing destinationTokenAddress param');
214
+ assert(params.authorityAddress, 'Missing authorityAddress param');
215
+ assert(params.newSourceDecryptableAvailableBalance, 'Missing newSourceDecryptableAvailableBalance param');
216
+ assert(params.transferAmountAuditorCiphertextLo, 'Missing transferAmountAuditorCiphertextLo param');
217
+ assert(params.transferAmountAuditorCiphertextHi, 'Missing transferAmountAuditorCiphertextHi param');
218
+ this._ctInstructions.push({
219
+ type: InstructionBuilderTypes.ConfidentialTransfer,
220
+ params,
221
+ });
222
+ return this;
223
+ }
224
+ /**
225
+ * Add a VerifyPubkeyValidity proof instruction (used with ConfigureAccount).
226
+ */
227
+ verifyPubkeyValidity(params) {
228
+ this._ctInstructions.push({
229
+ type: InstructionBuilderTypes.VerifyPubkeyValidity,
230
+ params,
231
+ });
232
+ return this;
233
+ }
234
+ /**
235
+ * Add a VerifyCiphertextCommitmentEquality proof instruction (used with Transfer and Withdraw).
236
+ */
237
+ verifyEqualityProof(params) {
238
+ this._ctInstructions.push({
239
+ type: InstructionBuilderTypes.VerifyEqualityProof,
240
+ params,
241
+ });
242
+ return this;
243
+ }
244
+ /**
245
+ * Add a VerifyBatchedGroupedCiphertext3HandlesValidity proof instruction (used with Transfer).
246
+ */
247
+ verifyValidityProof(params) {
248
+ this._ctInstructions.push({
249
+ type: InstructionBuilderTypes.VerifyValidityProof,
250
+ params,
251
+ });
252
+ return this;
253
+ }
254
+ /**
255
+ * Add a VerifyBatchedRangeProofU128 proof instruction (used with Transfer).
256
+ */
257
+ verifyRangeProof(params) {
258
+ this._ctInstructions.push({
259
+ type: InstructionBuilderTypes.VerifyRangeProof,
260
+ params,
261
+ });
262
+ return this;
263
+ }
264
+ /** @inheritdoc */
265
+ async buildImplementation() {
266
+ assert(this._ctInstructions.length > 0, 'At least one confidential transfer instruction must be specified');
267
+ if (this._version === 1) {
268
+ return this.buildV1();
269
+ }
270
+ this._instructionsData = [...this._ctInstructions];
271
+ return await super.buildImplementation();
272
+ }
273
+ /**
274
+ * Build a v1 (SIMD-0296/0385) confidential transfer transaction.
275
+ *
276
+ * Assembles the CT instructions via the shared instruction factory, compiles
277
+ * and serializes a v1 message with the inline transaction config, signs the
278
+ * message bytes with the builder's signers, and stores the resulting wire
279
+ * bytes for broadcast. Also populates a metadata-only SolTransaction so the
280
+ * transaction JSON and input/output extraction remain usable.
281
+ *
282
+ * @returns {Transaction} The built transaction holding the v1 wire bytes
283
+ */
284
+ buildV1() {
285
+ assert(this._sender, new BuildTransactionError('sender is required before building'));
286
+ assert(this._recentBlockhash, new BuildTransactionError('recent blockhash is required before building'));
287
+ assert(this._v1TransactionConfig, 'transactionConfig is required to build a v1 confidential transfer transaction');
288
+ // ApplyPendingBalance must remain instruction #1 in v1 spend txs (it is idempotent),
289
+ // regardless of the order the caller added instructions.
290
+ this._ctInstructions = [
291
+ ...this._ctInstructions.filter((i) => i.type === InstructionBuilderTypes.ApplyPendingBalance),
292
+ ...this._ctInstructions.filter((i) => i.type !== InstructionBuilderTypes.ApplyPendingBalance),
293
+ ];
294
+ const instructions = [];
295
+ // Durable nonce: the AdvanceNonceAccount instruction MUST be part of the
296
+ // message (a bare nonce hash without the instruction is invalid). It is
297
+ // placed first, matching the v0 web3.js and v1 payment-builder convention.
298
+ if (this._nonceInfo) {
299
+ instructions.push(buildAdvanceNonceAccountInstruction(this._nonceInfo.params.walletNonceAddress, this._nonceInfo.params.authWalletAddress));
300
+ }
301
+ for (const instruction of this._ctInstructions) {
302
+ instructions.push(...solInstructionFactory(instruction, this._zkProofProgramId));
303
+ }
304
+ if (this._memo) {
305
+ const memoData = {
306
+ type: InstructionBuilderTypes.Memo,
307
+ params: { memo: this._memo },
308
+ };
309
+ this._ctInstructions.push(memoData);
310
+ instructions.push(...solInstructionFactory(memoData));
311
+ }
312
+ const feePayer = this._feePayer ? new PublicKey(this._feePayer) : new PublicKey(this._sender);
313
+ const messageBytes = compileTransactionMessage({
314
+ version: 1,
315
+ instructions,
316
+ feePayer,
317
+ recentBlockhash: this._recentBlockhash,
318
+ transactionConfig: this._v1TransactionConfig,
319
+ });
320
+ // Signer order comes from the compiled message: the first
321
+ // numSignerAccounts static accounts are the required signers (fee payer
322
+ // first, then the remaining signers in the compiled account order). Missing
323
+ // signatures are zero-filled so unsigned/partial builds keep a valid wire
324
+ // shape for the server-side sign path (not broadcastable until filled).
325
+ const decoded = decodeV1Message(messageBytes);
326
+ const signerAddresses = decoded.staticAccounts.slice(0, decoded.header.numSignerAccounts);
327
+ const signatures = [];
328
+ for (const address of signerAddresses) {
329
+ const keyPair = this._signers.find((signer) => signer.getKeys().pub === address);
330
+ if (keyPair) {
331
+ const secretKey = keyPair.getKeys(true).prv;
332
+ assert(secretKey instanceof Uint8Array, 'Missing private key');
333
+ signatures.push(nacl.sign.detached(messageBytes, secretKey));
334
+ continue;
335
+ }
336
+ const additional = this.getAdditionalSignatures().find((sig) => sig.publicKey.pub === address);
337
+ if (additional) {
338
+ signatures.push(new Uint8Array(additional.signature));
339
+ continue;
340
+ }
341
+ // Missing signature: zero-fill the slot so the wire shape stays valid
342
+ // for partial-sign flows; the transaction is not broadcastable until
343
+ // every required signer has a signature.
344
+ signatures.push(new Uint8Array(64));
345
+ }
346
+ const v1Wire = serializeWireTransaction(messageBytes, signatures);
347
+ this._transaction.v1TransactionBytes = v1Wire;
348
+ this._transaction.v1MessageBytes = messageBytes;
349
+ // Populate a metadata-only SolTransaction so toJson / loadInputsAndOutputs work.
350
+ // The durable nonce is carried via nonceInfo, matching the v0 model.
351
+ const metaTx = new SolTransaction();
352
+ metaTx.feePayer = feePayer;
353
+ metaTx.recentBlockhash = this._recentBlockhash;
354
+ if (this._nonceInfo) {
355
+ metaTx.nonceInfo = {
356
+ nonce: this._recentBlockhash,
357
+ nonceInstruction: buildAdvanceNonceAccountInstruction(this._nonceInfo.params.walletNonceAddress, this._nonceInfo.params.authWalletAddress),
358
+ };
359
+ }
360
+ metaTx.add(...instructions);
361
+ this._transaction.solTransaction = metaTx;
362
+ this._transaction.setTransactionType(this.transactionType);
363
+ this._transaction.setInstructionsData(this._ctInstructions);
364
+ this._transaction.loadInputsAndOutputs();
365
+ return this._transaction;
366
+ }
367
+ }
368
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlkZW50aWFsVHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25maWRlbnRpYWxUcmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHFCQUFxQixFQUFpRCxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3SCxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsSUFBSSxjQUFjLEVBQTBCLE1BQU0saUJBQWlCLENBQUM7QUFDbkcsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBZXRELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCRztBQUNILE1BQU0sT0FBTywyQkFBNEIsU0FBUSxrQkFBa0I7SUFLakUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFMYixvQkFBZSxHQUF3QixFQUFFLENBQUM7UUFNaEQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lB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QkFBa0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBRXpDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsIFNvbFRyYW5zYWN0aW9uVmVyc2lvbiwgU29sVjFUcmFuc2FjdGlvbkNvbmZpZywgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgUHVibGljS2V5LCBUcmFuc2FjdGlvbiBhcyBTb2xUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25JbnN0cnVjdGlvbiB9IGZyb20gJ0Bzb2xhbmEvd2ViMy5qcyc7XG5pbXBvcnQgbmFjbCBmcm9tICd0d2VldG5hY2wnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IEluc3RydWN0aW9uQnVpbGRlclR5cGVzIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgQXBwbHlQZW5kaW5nQmFsYW5jZSxcbiAgQXRhSW5pdCxcbiAgQ29uZmlkZW50aWFsRGVwb3NpdCxcbiAgQ29uZmlkZW50aWFsVHJhbnNmZXIsXG4gIENvbmZpZGVudGlhbFdpdGhkcmF3LFxuICBDb25maWd1cmVDb25maWRlbnRpYWxUcmFuc2ZlckFjY291bnQsXG4gIEluc3RydWN0aW9uUGFyYW1zLFxuICBNZW1vLFxuICBWZXJpZnlFcXVhbGl0eVByb29mLFxuICBWZXJpZnlQdWJrZXlWYWxpZGl0eSxcbiAgVmVyaWZ5UmFuZ2VQcm9vZixcbiAgVmVyaWZ5VmFsaWRpdHlQcm9vZixcbn0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBjb21waWxlVHJhbnNhY3Rpb25NZXNzYWdlIH0gZnJvbSAnLi9zZXJpYWxpemF0aW9uL2NvbXBpbGVUcmFuc2FjdGlvbk1lc3NhZ2UnO1xuaW1wb3J0IHsgZGVjb2RlVjFNZXNzYWdlIH0gZnJvbSAnLi9zZXJpYWxpemF0aW9uL2NvZGVjcy92MS9tZXNzYWdlJztcbmltcG9ydCB7IHNlcmlhbGl6ZVdpcmVUcmFuc2FjdGlvbiB9IGZyb20gJy4vc2VyaWFsaXphdGlvbi93aXJlLXRyYW5zYWN0aW9uJztcbmltcG9ydCB7IHNvbEluc3RydWN0aW9uRmFjdG9yeSB9IGZyb20gJy4vc29sSW5zdHJ1Y3Rpb25GYWN0b3J5JztcbmltcG9ydCB7IGJ1aWxkQWR2YW5jZU5vbmNlQWNjb3VudEluc3RydWN0aW9uIH0gZnJvbSAnLi92MVRyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbi8qKlxuICogQnVpbGRlciBmb3IgVG9rZW4tMjAyMiBjb25maWRlbnRpYWwgdHJhbnNmZXIgdHJhbnNhY3Rpb25zLlxuICpcbiAqIFByb3ZpZGVzIHR5cGUtc2FmZSBmbHVlbnQgc2V0dGVycyBmb3IgdGhlIGZvbGxvd2luZyBDVCBpbnN0cnVjdGlvbnM6XG4gKiAtIENyZWF0ZUFzc29jaWF0ZWRUb2tlbkFjY291bnQgKENUIGVuYWJsZW1lbnQ6IEFUQSB1bmRlciBUb2tlbi0yMDIyIGJlZm9yZSBDb25maWd1cmVBY2NvdW50KVxuICogLSBDb25maWd1cmVBY2NvdW50IChzdGFuZGFsb25lLCB3aXRoIFZlcmlmeVB1YmtleVZhbGlkaXR5IHByb29mKVxuICogLSBBcHBseVBlbmRpbmdCYWxhbmNlIChhbHdheXMgaW5zdHJ1Y3Rpb24gIzEgaW4gdjEgc3BlbmQgdHhzLCBpZGVtcG90ZW50KVxuICogLSBEZXBvc2l0IChwdWJsaWMg4oaSIGNvbmZpZGVudGlhbCBjb252ZXJzaW9uKVxuICogLSBXaXRoZHJhdyAoY29uZmlkZW50aWFsIOKGkiBwdWJsaWMgY29udmVyc2lvbiwgd2l0aCBlcXVhbGl0eSArIHJhbmdlIHByb29mcylcbiAqIC0gVHJhbnNmZXIgKGNvbmZpZGVudGlhbCDihpIgY29uZmlkZW50aWFsLCB3aXRoIGVxdWFsaXR5ICsgdmFsaWRpdHkgKyByYW5nZSBwcm9vZnMpXG4gKiAtIFZlcmlmeVB1YmtleVZhbGlkaXR5IC8gVmVyaWZ5RXF1YWxpdHkgLyBWZXJpZnlWYWxpZGl0eSAvIFZlcmlmeVJhbmdlIHByb29mIGluc3RydWN0aW9uc1xuICpcbiAqIEluc3RydWN0aW9uIGJ1aWxkZXJzIGFyZSB2MC92MS1hZ25vc3RpYzogdGhleSBwcm9kdWNlIGluc3RydWN0aW9uIGRhdGEgYW5kXG4gKiBhY2NvdW50IG1ldGFzIG9ubHkuIFRoZSBjYWxsZXIgKFdhbGxldCBQbGF0Zm9ybSkgYXNzZW1ibGVzIHRoZW0gaW50byB2MVxuICogdHJhbnNhY3Rpb25zIGluIHRoZSBjb3JyZWN0IG9yZGVyLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZ2V0Q29uZmlkZW50aWFsVHJhbnNmZXJCdWlsZGVyKCk7XG4gKiBidWlsZGVyLm5vbmNlKHJlY2VudEJsb2NraGFzaCkuc2VuZGVyKHBheWVyKTtcbiAqIGJ1aWxkZXIuY29uZmlndXJlQWNjb3VudCh7IHRva2VuQWRkcmVzcywgbWludEFkZHJlc3MsIGF1dGhvcml0eUFkZHJlc3MsIC4uLiB9KTtcbiAqIGJ1aWxkZXIudmVyaWZ5UHVia2V5VmFsaWRpdHkoeyBwcm9vZkRhdGEgfSk7XG4gKiBjb25zdCB0eCA9IGF3YWl0IGJ1aWxkZXIuYnVpbGQoKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgQ29uZmlkZW50aWFsVHJhbnNmZXJCdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJpdmF0ZSBfY3RJbnN0cnVjdGlvbnM6IEluc3RydWN0aW9uUGFyYW1zW10gPSBbXTtcbiAgcHJpdmF0ZSBfdmVyc2lvbj86IFNvbFRyYW5zYWN0aW9uVmVyc2lvbjtcbiAgcHJpdmF0ZSBfdjFUcmFuc2FjdGlvbkNvbmZpZz86IFNvbFYxVHJhbnNhY3Rpb25Db25maWc7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uKF9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgdHJhbnNhY3Rpb25UeXBlKCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5Db25maWRlbnRpYWxUcmFuc2ZlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIFNvbGFuYSB0cmFuc2FjdGlvbiB2ZXJzaW9uLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byBsZWdhY3kgdW50aWwgc2V0LiBXaGVuIHNldCB0byBgMWAsIHRoZSBidWlsZGVyIGFzc2VtYmxlcyBhIHYxXG4gICAqIChTSU1ELTAyOTYvMDM4NSkgdHJhbnNhY3Rpb246IHZlcnNpb24gYnl0ZSBgMHg4MWAsIGFuIGlubGluZSBgdHJhbnNhY3Rpb25Db25maWdgXG4gICAqIGluc3RlYWQgb2YgQ29tcHV0ZUJ1ZGdldCBpbnN0cnVjdGlvbnMsIG5vIGFkZHJlc3MgbG9va3VwIHRhYmxlcywgYW5kIGFcbiAgICogbWVzc2FnZS1maXJzdCB3aXJlIGZvcm1hdCB3aXRoIHNpZ25hdHVyZXMgYXBwZW5kZWQuXG4gICAqXG4gICAqIEBwYXJhbSB2ZXJzaW9uIC0gdGhlIHRyYW5zYWN0aW9uIHZlcnNpb24gKDAgPSB2MCwgMSA9IHYxKVxuICAgKiBAcmV0dXJucyB7dGhpc30gVGhpcyBidWlsZGVyXG4gICAqL1xuICB2ZXJzaW9uKHZlcnNpb246IFNvbFRyYW5zYWN0aW9uVmVyc2lvbik6IHRoaXMge1xuICAgIHRoaXMuX3ZlcnNpb24gPSB2ZXJzaW9uO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdjEgdHJhbnNhY3Rpb24gY29uZmlnIChjb21wdXRlIHVuaXQgbGltaXQsIGhlYXAgc2l6ZSwgbG9hZGVkIGFjY291bnRzXG4gICAqIGRhdGEgc2l6ZSBsaW1pdCwgYW5kIHByaW9yaXR5IGZlZSBhcyB0b3RhbCBsYW1wb3J0cykuIFJlcXVpcmVkIHdoZW5cbiAgICogYHZlcnNpb24oMSlgIGlzIHNldC5cbiAgICpcbiAgICogQHBhcmFtIGNvbmZpZyAtIHRoZSB2MSB0cmFuc2FjdGlvbiBjb25maWdcbiAgICogQHJldHVybnMge3RoaXN9IFRoaXMgYnVpbGRlclxuICAgKi9cbiAgdHJhbnNhY3Rpb25Db25maWcoY29uZmlnOiBTb2xWMVRyYW5zYWN0aW9uQ29uZmlnKTogdGhpcyB7XG4gICAgdGhpcy5fdjFUcmFuc2FjdGlvbkNvbmZpZyA9IGNvbmZpZztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBPdmVycmlkZSB0aGUgemstZWxnYW1hbC1wcm9vZiBwcm9ncmFtIGlkLlxuICAgKlxuICAgKiBEZWZhdWx0cyB0byB0aGUgY2Fub25pY2FsIG9uLWNoYWluIHByb2dyYW0gaWQgKGBaa0UxR2FtYTFQcm9vZjExMS4uLmApXG4gICAqIHdoaWNoIGlzIHRoZSBzYW1lIGFjcm9zcyBtYWlubmV0LCBkZXZuZXQsIGFuZCB0ZXN0bmV0LiBPdmVycmlkZSBvbmx5XG4gICAqIHdoZW4gdGFyZ2V0aW5nIGEgY3VzdG9tIGRlcGxveW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9ncmFtSWQgLSBiYXNlNTggZW5jb2RlZCBwcm9ncmFtIGlkXG4gICAqL1xuICB6a1Byb29mUHJvZ3JhbUlkKHByb2dyYW1JZDogc3RyaW5nKTogdGhpcyB7XG4gICAgYXNzZXJ0KHByb2dyYW1JZCwgJ01pc3NpbmcgcHJvZ3JhbUlkIHBhcmFtJyk7XG4gICAgdGhpcy5femtQcm9vZlByb2dyYW1JZCA9IHByb2dyYW1JZDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdGhpcy5fY3RJbnN0cnVjdGlvbnMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGluc3RydWN0aW9uIG9mIHRoaXMuX2luc3RydWN0aW9uc0RhdGEpIHtcbiAgICAgIHN3aXRjaCAoaW5zdHJ1Y3Rpb24udHlwZSkge1xuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkNyZWF0ZUFzc29jaWF0ZWRUb2tlbkFjY291bnQ6XG4gICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuUmVhbGxvY2F0ZUNvbmZpZGVudGlhbFRyYW5zZmVyQWNjb3VudDpcbiAgICAgICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Db25maWd1cmVDb25maWRlbnRpYWxUcmFuc2ZlckFjY291bnQ6XG4gICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQXBwbHlQZW5kaW5nQmFsYW5jZTpcbiAgICAgICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Db25maWRlbnRpYWxEZXBvc2l0OlxuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkNvbmZpZGVudGlhbFdpdGhkcmF3OlxuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkNvbmZpZGVudGlhbFRyYW5zZmVyOlxuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlZlcmlmeVB1YmtleVZhbGlkaXR5OlxuICAgICAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlZlcmlmeUVxdWFsaXR5UHJvb2Y6XG4gICAgICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuVmVyaWZ5VmFsaWRpdHlQcm9vZjpcbiAgICAgICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5WZXJpZnlSYW5nZVByb29mOlxuICAgICAgICAgIHRoaXMuX2N0SW5zdHJ1Y3Rpb25zLnB1c2goaW5zdHJ1Y3Rpb24pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBDcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50IChpZGVtcG90ZW50KSBpbnN0cnVjdGlvbiB0byB0aGUgdHJhbnNhY3Rpb24uXG4gICAqIENUIGVuYWJsZW1lbnQgb25seSDigJQgdGhlIEFUQSBtdXN0IGV4aXN0IGJlZm9yZSBDb25maWd1cmVBY2NvdW50OyBhZGQgdGhpc1xuICAgKiBmaXJzdCB3aGVuIHRoZSBBVEEgaXMgbm90IHlldCBvbi1jaGFpbi4gRm9yIFRva2VuLTIwMjIgbWludHMgcGFzc1xuICAgKiBgcHJvZ3JhbUlkYCBzbyB0aGUgQVRBIGlzIGNyZWF0ZWQgdW5kZXIgdGhlIFRva2VuLTIwMjIgcHJvZ3JhbS5cbiAgICovXG4gIGNyZWF0ZUF0YShwYXJhbXM6IEF0YUluaXRbJ3BhcmFtcyddKTogdGhpcyB7XG4gICAgYXNzZXJ0KHBhcmFtcy5taW50QWRkcmVzcywgJ01pc3NpbmcgbWludEFkZHJlc3MgcGFyYW0nKTtcbiAgICBhc3NlcnQocGFyYW1zLmF0YUFkZHJlc3MsICdNaXNzaW5nIGF0YUFkZHJlc3MgcGFyYW0nKTtcbiAgICBhc3NlcnQocGFyYW1zLm93bmVyQWRkcmVzcywgJ01pc3Npbmcgb3duZXJBZGRyZXNzIHBhcmFtJyk7XG4gICAgYXNzZXJ0KHBhcmFtcy5wYXllckFkZHJlc3MsICdNaXNzaW5nIHBheWVyQWRkcmVzcyBwYXJhbScpO1xuXG4gICAgdGhpcy5fY3RJbnN0cnVjdGlvbnMucHVzaCh7XG4gICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50LFxuICAgICAgcGFyYW1zLFxuICAgIH0pO1xuICAgIC8vIENvbmZpZ3VyZUFjY291bnQgcmVxdWlyZXMgdGhlIENvbmZpZGVudGlhbFRyYW5zZmVyQWNjb3VudCBleHRlbnNpb24sIHdoaWNoIGFuIEFUQSBkb2VzXG4gICAgLy8gbm90IGNhcnJ5IOKAlCBSZWFsbG9jYXRlIGFkZHMgaXQgYW5kIG11c3QgcnVuIGJlZm9yZSBDb25maWd1cmVBY2NvdW50LlxuICAgIHRoaXMuX2N0SW5zdHJ1Y3Rpb25zLnB1c2goe1xuICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuUmVhbGxvY2F0ZUNvbmZpZGVudGlhbFRyYW5zZmVyQWNjb3VudCxcbiAgICAgIHBhcmFtczoge1xuICAgICAgICB0b2tlbkFkZHJlc3M6IHBhcmFtcy5hdGFBZGRyZXNzLFxuICAgICAgICBwYXllckFkZHJlc3M6IHBhcmFtcy5wYXllckFkZHJlc3MsXG4gICAgICAgIG93bmVyQWRkcmVzczogcGFyYW1zLm93bmVyQWRkcmVzcyxcbiAgICAgICAgcHJvZ3JhbUlkOiBwYXJhbXMucHJvZ3JhbUlkLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBDb25maWd1cmVBY2NvdW50IGluc3RydWN0aW9uIHRvIHRoZSB0cmFuc2FjdGlvbi5cbiAgICogT25lLXRpbWUgQVRBIHNldHVwIOKAlCByZWdpc3RlcnMgRWxHYW1hbCBwdWJrZXkgKyBBRVMgemVybyBjaXBoZXJ0ZXh0LlxuICAgKiBNdXN0IGJlIGFjY29tcGFuaWVkIGJ5IGEgVmVyaWZ5UHVia2V5VmFsaWRpdHkgcHJvb2YgaW5zdHJ1Y3Rpb24uXG4gICAqL1xuICBjb25maWd1cmVBY2NvdW50KHBhcmFtczogQ29uZmlndXJlQ29uZmlkZW50aWFsVHJhbnNmZXJBY2NvdW50WydwYXJhbXMnXSk6IHRoaXMge1xuICAgIGFzc2VydChwYXJhbXMudG9rZW5BZGRyZXNzLCAnTWlzc2luZyB0b2tlbkFkZHJlc3MgcGFyYW0nKTtcbiAgICBhc3NlcnQocGFyYW1zLm1pbnRBZGRyZXNzLCAnTWlzc2luZyBtaW50QWRkcmVzcyBwYXJhbScpO1xuICAgIGFzc2VydChwYXJhbXMuYXV0aG9yaXR5QWRkcmVzcywgJ01pc3NpbmcgYXV0aG9yaXR5QWRkcmVzcyBwYXJhbScpO1xuICAgIGFzc2VydChwYXJhbXMuZWxnYW1hbFB1YmtleSwgJ01pc3NpbmcgZWxnYW1hbFB1YmtleSBwYXJhbScpO1xuICAgIGFzc2VydChwYXJhbXMuZGVjcnlwdGFibGVaZXJvQmFsYW5jZSwgJ01pc3NpbmcgZGVjcnlwdGFibGVaZXJvQmFsYW5jZSBwYXJhbScpO1xuICAgIGFzc2VydChwYXJhbXMubWF4aW11bVBlbmRpbmdCYWxhbmNlQ3JlZGl0Q291bnRlciwgJ01pc3NpbmcgbWF4aW11bVBlbmRpbmdCYWxhbmNlQ3JlZGl0Q291bnRlciBwYXJhbScpO1xuXG4gICAgdGhpcy5fY3RJbnN0cnVjdGlvbnMucHVzaCh7XG4gICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Db25maWd1cmVDb25maWRlbnRpYWxUcmFuc2ZlckFjY291bnQsXG4gICAgICBwYXJhbXMsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIEFwcGx5UGVuZGluZ0JhbGFuY2UgaW5zdHJ1Y3Rpb24gdG8gdGhlIHRyYW5zYWN0aW9uLlxuICAgKiBDcmVkaXRzIHBlbmRpbmcgYmFsYW5jZSBpbnRvIGF2YWlsYWJsZSBiYWxhbmNlLiBJZGVtcG90ZW50IChuby1vcCBpZiAwIHBlbmRpbmcpLlxuICAgKiBJbiB2MSB0cmFuc2FjdGlvbnMsIHRoaXMgc2hvdWxkIGFsd2F5cyBiZSBpbnN0cnVjdGlvbiAjMS5cbiAgICovXG4gIGFwcGx5UGVuZGluZ0JhbGFuY2UocGFyYW1zOiBBcHBseVBlbmRpbmdCYWxhbmNlWydwYXJhbXMnXSk6IHRoaXMge1xuICAgIGFzc2VydChwYXJhbXMudG9rZW5BZGRyZXNzLCAnTWlzc2luZyB0b2tlbkFkZHJlc3MgcGFyYW0nKTtcbiAgICBhc3NlcnQocGFyYW1zLmF1dGhvcml0eUFkZHJlc3MsICdNaXNzaW5nIGF1dGhvcml0eUFkZHJlc3MgcGFyYW0nKTtcbiAgICBhc3NlcnQocGFyYW1zLmV4cGVjdGVkUGVuZGluZ0JhbGFuY2VDcmVkaXRDb3VudGVyLCAnTWlzc2luZyBleHBlY3RlZFBlbmRpbmdCYWxhbmNlQ3JlZGl0Q291bnRlciBwYXJhbScpO1xuICAgIGFzc2VydChwYXJhbXMubmV3RGVjcnlwdGFibGVBdmFpbGFibGVCYWxhbmNlLCAnTWlzc2luZyBuZXdEZWNyeXB0YWJsZUF2YWlsYWJsZUJhbGFuY2UgcGFyYW0nKTtcblxuICAgIHRoaXMuX2N0SW5zdHJ1Y3Rpb25zLnB1c2goe1xuICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQXBwbHlQZW5kaW5nQmFsYW5jZSxcbiAgICAgIHBhcmFtcyxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBEZXBvc2l0IGluc3RydWN0aW9uIHRvIHRoZSB0cmFuc2FjdGlvbi5cbiAgICogTW92ZXMgcHVibGljIFNQTCB0b2tlbnMgaW50byBjb25maWRlbnRpYWwgcGVuZGluZyBiYWxhbmNlLiBObyBwcm9vZiByZXF1aXJlZC5cbiAgICovXG4gIGNvbmZpZGVudGlhbERlcG9zaXQocGFyYW1zOiBDb25maWRlbnRpYWxEZXBvc2l0WydwYXJhbXMnXSk6IHRoaXMge1xuICAgIGFzc2VydChwYXJhbXMudG9rZW5BZGRyZXNzLCAnTWlzc2luZyB0b2tlbkFkZHJlc3MgcGFyYW0nKTtcbiAgICBhc3NlcnQocGFyYW1zLm1pbnRBZGRyZXNzLCAnTWlzc2luZyBtaW50QWRkcmVzcyBwYXJhbScpO1xuICAgIGFzc2VydChwYXJhbXMuYXV0aG9yaXR5QWRkcmVzcywgJ01pc3NpbmcgYXV0aG9yaXR5QWRkcmVzcyBwYXJhbScpO1xuICAgIGFzc2VydChwYXJhbXMuYW1vdW50LCAnTWlzc2luZyBhbW91bnQgcGFyYW0nKTtcblxuICAgIHRoaXMuX2N0SW5zdHJ1Y3Rpb25zLnB1c2goe1xuICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQ29uZmlkZW50aWFsRGVwb3NpdCxcbiAgICAgIHBhcmFtcyxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBXaXRoZHJhdyBpbnN0cnVjdGlvbiB0byB0aGUgdHJhbnNhY3Rpb24uXG4gICAqIE1vdmVzIGNvbmZpZGVudGlhbCBhdmFpbGFibGUgYmFsYW5jZSB0byBwdWJsaWMgYmFsYW5jZS5cbiAgICogUmVxdWlyZXMgZXF1YWxpdHkgKyByYW5nZSBwcm9vZiB2ZXJpZmljYXRpb24gaW5zdHJ1Y3Rpb25zLlxuICAgKi9cbiAgY29uZmlkZW50aWFsV2l0aGRyYXcocGFyYW1zOiBDb25maWRlbnRpYWxXaXRoZHJhd1sncGFyYW1zJ10pOiB0aGlzIHtcbiAgICBhc3NlcnQocGFyYW1zLnRva2VuQWRkcmVzcywgJ01pc3NpbmcgdG9rZW5BZGRyZXNzIHBhcmFtJyk7XG4gICAgYXNzZXJ0KHBhcmFtcy5taW50QWRkcmVzcywgJ01pc3NpbmcgbWludEFkZHJlc3MgcGFyYW0nKTtcbiAgICBhc3NlcnQocGFyYW1zLmF1dGhvcml0eUFkZHJlc3MsICdNaXNzaW5nIGF1dGhvcml0eUFkZHJlc3MgcGFyYW0nKTtcbiAgICBhc3NlcnQocGFyYW1zLmFtb3VudCwgJ01pc3NpbmcgYW1vdW50IHBhcmFtJyk7XG4gICAgYXNzZXJ0KHBhcmFtcy5uZXdEZWNyeXB0YWJsZUF2YWlsYWJsZUJhbGFuY2UsICdNaXNzaW5nIG5ld0RlY3J5cHRhYmxlQXZhaWxhYmxlQmFsYW5jZSBwYXJhbScpO1xuXG4gICAgdGhpcy5fY3RJbnN0cnVjdGlvbnMucHVzaCh7XG4gICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Db25maWRlbnRpYWxXaXRoZHJhdyxcbiAgICAgIHBhcmFtcyxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBjb25maWRlbnRpYWwgVHJhbnNmZXIgaW5zdHJ1Y3Rpb24gdG8gdGhlIHRyYW5zYWN0aW9uLlxuICAgKiBSZXF1aXJlcyBlcXVhbGl0eSArIGNpcGhlcnRleHQgdmFsaWRpdHkgKyByYW5nZSBwcm9vZiB2ZXJpZmljYXRpb24gaW5zdHJ1Y3Rpb25zLlxuICAgKi9cbiAgY29uZmlkZW50aWFsVHJhbnNmZXIocGFyYW1zOiBDb25maWRlbnRpYWxUcmFuc2ZlclsncGFyYW1zJ10pOiB0aGlzIHtcbiAgICBhc3NlcnQocGFyYW1zLnNvdXJjZVRva2VuQWRkcmVzcywgJ01pc3Npbmcgc291cmNlVG9rZW5BZGRyZXNzIHBhcmFtJyk7XG4gICAgYXNzZXJ0KHBhcmFtcy5taW50QWRkcmVzcywgJ01pc3NpbmcgbWludEFkZHJlc3MgcGFyYW0nKTtcbiAgICBhc3NlcnQocGFyYW1zLmRlc3RpbmF0aW9uVG9rZW5BZGRyZXNzLCAnTWlzc2luZyBkZXN0aW5hdGlvblRva2VuQWRkcmVzcyBwYXJhbScpO1xuICAgIGFzc2VydChwYXJhbXMuYXV0aG9yaXR5QWRkcmVzcywgJ01pc3NpbmcgYXV0aG9yaXR5QWRkcmVzcyBwYXJhbScpO1xuICAgIGFzc2VydChwYXJhbXMubmV3U291cmNlRGVjcnlwdGFibGVBdmFpbGFibGVCYWxhbmNlLCAnTWlzc2luZyBuZXdTb3VyY2VEZWNyeXB0YWJsZUF2YWlsYWJsZUJhbGFuY2UgcGFyYW0nKTtcbiAgICBhc3NlcnQocGFyYW1zLnRyYW5zZmVyQW1vdW50QXVkaXRvckNpcGhlcnRleHRMbywgJ01pc3NpbmcgdHJhbnNmZXJBbW91bnRBdWRpdG9yQ2lwaGVydGV4dExvIHBhcmFtJyk7XG4gICAgYXNzZXJ0KHBhcmFtcy50cmFuc2ZlckFtb3VudEF1ZGl0b3JDaXBoZXJ0ZXh0SGksICdNaXNzaW5nIHRyYW5zZmVyQW1vdW50QXVkaXRvckNpcGhlcnRleHRIaSBwYXJhbScpO1xuXG4gICAgdGhpcy5fY3RJbnN0cnVjdGlvbnMucHVzaCh7XG4gICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Db25maWRlbnRpYWxUcmFuc2ZlcixcbiAgICAgIHBhcmFtcyxcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBWZXJpZnlQdWJrZXlWYWxpZGl0eSBwcm9vZiBpbnN0cnVjdGlvbiAodXNlZCB3aXRoIENvbmZpZ3VyZUFjY291bnQpLlxuICAgKi9cbiAgdmVyaWZ5UHVia2V5VmFsaWRpdHkocGFyYW1zOiBWZXJpZnlQdWJrZXlWYWxpZGl0eVsncGFyYW1zJ10pOiB0aGlzIHtcbiAgICB0aGlzLl9jdEluc3RydWN0aW9ucy5wdXNoKHtcbiAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlZlcmlmeVB1YmtleVZhbGlkaXR5LFxuICAgICAgcGFyYW1zLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIFZlcmlmeUNpcGhlcnRleHRDb21taXRtZW50RXF1YWxpdHkgcHJvb2YgaW5zdHJ1Y3Rpb24gKHVzZWQgd2l0aCBUcmFuc2ZlciBhbmQgV2l0aGRyYXcpLlxuICAgKi9cbiAgdmVyaWZ5RXF1YWxpdHlQcm9vZihwYXJhbXM6IFZlcmlmeUVxdWFsaXR5UHJvb2ZbJ3BhcmFtcyddKTogdGhpcyB7XG4gICAgdGhpcy5fY3RJbnN0cnVjdGlvbnMucHVzaCh7XG4gICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5WZXJpZnlFcXVhbGl0eVByb29mLFxuICAgICAgcGFyYW1zLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIFZlcmlmeUJhdGNoZWRHcm91cGVkQ2lwaGVydGV4dDNIYW5kbGVzVmFsaWRpdHkgcHJvb2YgaW5zdHJ1Y3Rpb24gKHVzZWQgd2l0aCBUcmFuc2ZlcikuXG4gICAqL1xuICB2ZXJpZnlWYWxpZGl0eVByb29mKHBhcmFtczogVmVyaWZ5VmFsaWRpdHlQcm9vZlsncGFyYW1zJ10pOiB0aGlzIHtcbiAgICB0aGlzLl9jdEluc3RydWN0aW9ucy5wdXNoKHtcbiAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlZlcmlmeVZhbGlkaXR5UHJvb2YsXG4gICAgICBwYXJhbXMsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgVmVyaWZ5QmF0Y2hlZFJhbmdlUHJvb2ZVMTI4IHByb29mIGluc3RydWN0aW9uICh1c2VkIHdpdGggVHJhbnNmZXIpLlxuICAgKi9cbiAgdmVyaWZ5UmFuZ2VQcm9vZihwYXJhbXM6IFZlcmlmeVJhbmdlUHJvb2ZbJ3BhcmFtcyddKTogdGhpcyB7XG4gICAgdGhpcy5fY3RJbnN0cnVjdGlvbnMucHVzaCh7XG4gICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5WZXJpZnlSYW5nZVByb29mLFxuICAgICAgcGFyYW1zLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICBhc3NlcnQodGhpcy5fY3RJbnN0cnVjdGlvbnMubGVuZ3RoID4gMCwgJ0F0IGxlYXN0IG9uZSBjb25maWRlbnRpYWwgdHJhbnNmZXIgaW5zdHJ1Y3Rpb24gbXVzdCBiZSBzcGVjaWZpZWQnKTtcblxuICAgIGlmICh0aGlzLl92ZXJzaW9uID09PSAxKSB7XG4gICAgICByZXR1cm4gdGhpcy5idWlsZFYxKCk7XG4gICAgfVxuXG4gICAgdGhpcy5faW5zdHJ1Y3Rpb25zRGF0YSA9IFsuLi50aGlzLl9jdEluc3RydWN0aW9uc107XG5cbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuYnVpbGRJbXBsZW1lbnRhdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgdjEgKFNJTUQtMDI5Ni8wMzg1KSBjb25maWRlbnRpYWwgdHJhbnNmZXIgdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIEFzc2VtYmxlcyB0aGUgQ1QgaW5zdHJ1Y3Rpb25zIHZpYSB0aGUgc2hhcmVkIGluc3RydWN0aW9uIGZhY3RvcnksIGNvbXBpbGVzXG4gICAqIGFuZCBzZXJpYWxpemVzIGEgdjEgbWVzc2FnZSB3aXRoIHRoZSBpbmxpbmUgdHJhbnNhY3Rpb24gY29uZmlnLCBzaWducyB0aGVcbiAgICogbWVzc2FnZSBieXRlcyB3aXRoIHRoZSBidWlsZGVyJ3Mgc2lnbmVycywgYW5kIHN0b3JlcyB0aGUgcmVzdWx0aW5nIHdpcmVcbiAgICogYnl0ZXMgZm9yIGJyb2FkY2FzdC4gQWxzbyBwb3B1bGF0ZXMgYSBtZXRhZGF0YS1vbmx5IFNvbFRyYW5zYWN0aW9uIHNvIHRoZVxuICAgKiB0cmFuc2FjdGlvbiBKU09OIGFuZCBpbnB1dC9vdXRwdXQgZXh0cmFjdGlvbiByZW1haW4gdXNhYmxlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7VHJhbnNhY3Rpb259IFRoZSBidWlsdCB0cmFuc2FjdGlvbiBob2xkaW5nIHRoZSB2MSB3aXJlIGJ5dGVzXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkVjEoKTogVHJhbnNhY3Rpb24ge1xuICAgIGFzc2VydCh0aGlzLl9zZW5kZXIsIG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ3NlbmRlciBpcyByZXF1aXJlZCBiZWZvcmUgYnVpbGRpbmcnKSk7XG4gICAgYXNzZXJ0KHRoaXMuX3JlY2VudEJsb2NraGFzaCwgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcigncmVjZW50IGJsb2NraGFzaCBpcyByZXF1aXJlZCBiZWZvcmUgYnVpbGRpbmcnKSk7XG4gICAgYXNzZXJ0KHRoaXMuX3YxVHJhbnNhY3Rpb25Db25maWcsICd0cmFuc2FjdGlvbkNvbmZpZyBpcyByZXF1aXJlZCB0byBidWlsZCBhIHYxIGNvbmZpZGVudGlhbCB0cmFuc2ZlciB0cmFuc2FjdGlvbicpO1xuXG4gICAgLy8gQXBwbHlQZW5kaW5nQmFsYW5jZSBtdXN0IHJlbWFpbiBpbnN0cnVjdGlvbiAjMSBpbiB2MSBzcGVuZCB0eHMgKGl0IGlzIGlkZW1wb3RlbnQpLFxuICAgIC8vIHJlZ2FyZGxlc3Mgb2YgdGhlIG9yZGVyIHRoZSBjYWxsZXIgYWRkZWQgaW5zdHJ1Y3Rpb25zLlxuICAgIHRoaXMuX2N0SW5zdHJ1Y3Rpb25zID0gW1xuICAgICAgLi4udGhpcy5fY3RJbnN0cnVjdGlvbnMuZmlsdGVyKChpKSA9PiBpLnR5cGUgPT09IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkFwcGx5UGVuZGluZ0JhbGFuY2UpLFxuICAgICAgLi4udGhpcy5fY3RJbnN0cnVjdGlvbnMuZmlsdGVyKChpKSA9PiBpLnR5cGUgIT09IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkFwcGx5UGVuZGluZ0JhbGFuY2UpLFxuICAgIF07XG5cbiAgICBjb25zdCBpbnN0cnVjdGlvbnM6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSA9IFtdO1xuXG4gICAgLy8gRHVyYWJsZSBub25jZTogdGhlIEFkdmFuY2VOb25jZUFjY291bnQgaW5zdHJ1Y3Rpb24gTVVTVCBiZSBwYXJ0IG9mIHRoZVxuICAgIC8vIG1lc3NhZ2UgKGEgYmFyZSBub25jZSBoYXNoIHdpdGhvdXQgdGhlIGluc3RydWN0aW9uIGlzIGludmFsaWQpLiBJdCBpc1xuICAgIC8vIHBsYWNlZCBmaXJzdCwgbWF0Y2hpbmcgdGhlIHYwIHdlYjMuanMgYW5kIHYxIHBheW1lbnQtYnVpbGRlciBjb252ZW50aW9uLlxuICAgIGlmICh0aGlzLl9ub25jZUluZm8pIHtcbiAgICAgIGluc3RydWN0aW9ucy5wdXNoKFxuICAgICAgICBidWlsZEFkdmFuY2VOb25jZUFjY291bnRJbnN0cnVjdGlvbihcbiAgICAgICAgICB0aGlzLl9ub25jZUluZm8ucGFyYW1zLndhbGxldE5vbmNlQWRkcmVzcyxcbiAgICAgICAgICB0aGlzLl9ub25jZUluZm8ucGFyYW1zLmF1dGhXYWxsZXRBZGRyZXNzXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBpbnN0cnVjdGlvbiBvZiB0aGlzLl9jdEluc3RydWN0aW9ucykge1xuICAgICAgaW5zdHJ1Y3Rpb25zLnB1c2goLi4uc29sSW5zdHJ1Y3Rpb25GYWN0b3J5KGluc3RydWN0aW9uLCB0aGlzLl96a1Byb29mUHJvZ3JhbUlkKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX21lbW8pIHtcbiAgICAgIGNvbnN0IG1lbW9EYXRhOiBNZW1vID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5NZW1vLFxuICAgICAgICBwYXJhbXM6IHsgbWVtbzogdGhpcy5fbWVtbyB9LFxuICAgICAgfTtcbiAgICAgIHRoaXMuX2N0SW5zdHJ1Y3Rpb25zLnB1c2gobWVtb0RhdGEpO1xuICAgICAgaW5zdHJ1Y3Rpb25zLnB1c2goLi4uc29sSW5zdHJ1Y3Rpb25GYWN0b3J5KG1lbW9EYXRhKSk7XG4gICAgfVxuXG4gICAgY29uc3QgZmVlUGF5ZXIgPSB0aGlzLl9mZWVQYXllciA/IG5ldyBQdWJsaWNLZXkodGhpcy5fZmVlUGF5ZXIpIDogbmV3IFB1YmxpY0tleSh0aGlzLl9zZW5kZXIpO1xuICAgIGNvbnN0IG1lc3NhZ2VCeXRlcyA9IGNvbXBpbGVUcmFuc2FjdGlvbk1lc3NhZ2Uoe1xuICAgICAgdmVyc2lvbjogMSxcbiAgICAgIGluc3RydWN0aW9ucyxcbiAgICAgIGZlZVBheWVyLFxuICAgICAgcmVjZW50QmxvY2toYXNoOiB0aGlzLl9yZWNlbnRCbG9ja2hhc2gsXG4gICAgICB0cmFuc2FjdGlvbkNvbmZpZzogdGhpcy5fdjFUcmFuc2FjdGlvbkNvbmZpZyxcbiAgICB9KTtcblxuICAgIC8vIFNpZ25lciBvcmRlciBjb21lcyBmcm9tIHRoZSBjb21waWxlZCBtZXNzYWdlOiB0aGUgZmlyc3RcbiAgICAvLyBudW1TaWduZXJBY2NvdW50cyBzdGF0aWMgYWNjb3VudHMgYXJlIHRoZSByZXF1aXJlZCBzaWduZXJzIChmZWUgcGF5ZXJcbiAgICAvLyBmaXJzdCwgdGhlbiB0aGUgcmVtYWluaW5nIHNpZ25lcnMgaW4gdGhlIGNvbXBpbGVkIGFjY291bnQgb3JkZXIpLiBNaXNzaW5nXG4gICAgLy8gc2lnbmF0dXJlcyBhcmUgemVyby1maWxsZWQgc28gdW5zaWduZWQvcGFydGlhbCBidWlsZHMga2VlcCBhIHZhbGlkIHdpcmVcbiAgICAvLyBzaGFwZSBmb3IgdGhlIHNlcnZlci1zaWRlIHNpZ24gcGF0aCAobm90IGJyb2FkY2FzdGFibGUgdW50aWwgZmlsbGVkKS5cbiAgICBjb25zdCBkZWNvZGVkID0gZGVjb2RlVjFNZXNzYWdlKG1lc3NhZ2VCeXRlcyk7XG4gICAgY29uc3Qgc2lnbmVyQWRkcmVzc2VzID0gZGVjb2RlZC5zdGF0aWNBY2NvdW50cy5zbGljZSgwLCBkZWNvZGVkLmhlYWRlci5udW1TaWduZXJBY2NvdW50cyk7XG5cbiAgICBjb25zdCBzaWduYXR1cmVzOiBVaW50OEFycmF5W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGFkZHJlc3Mgb2Ygc2lnbmVyQWRkcmVzc2VzKSB7XG4gICAgICBjb25zdCBrZXlQYWlyID0gdGhpcy5fc2lnbmVycy5maW5kKChzaWduZXIpID0+IHNpZ25lci5nZXRLZXlzKCkucHViID09PSBhZGRyZXNzKTtcbiAgICAgIGlmIChrZXlQYWlyKSB7XG4gICAgICAgIGNvbnN0IHNlY3JldEtleSA9IGtleVBhaXIuZ2V0S2V5cyh0cnVlKS5wcnY7XG4gICAgICAgIGFzc2VydChzZWNyZXRLZXkgaW5zdGFuY2VvZiBVaW50OEFycmF5LCAnTWlzc2luZyBwcml2YXRlIGtleScpO1xuICAgICAgICBzaWduYXR1cmVzLnB1c2gobmFjbC5zaWduLmRldGFjaGVkKG1lc3NhZ2VCeXRlcywgc2VjcmV0S2V5KSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgYWRkaXRpb25hbCA9IHRoaXMuZ2V0QWRkaXRpb25hbFNpZ25hdHVyZXMoKS5maW5kKChzaWcpID0+IHNpZy5wdWJsaWNLZXkucHViID09PSBhZGRyZXNzKTtcbiAgICAgIGlmIChhZGRpdGlvbmFsKSB7XG4gICAgICAgIHNpZ25hdHVyZXMucHVzaChuZXcgVWludDhBcnJheShhZGRpdGlvbmFsLnNpZ25hdHVyZSkpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIC8vIE1pc3Npbmcgc2lnbmF0dXJlOiB6ZXJvLWZpbGwgdGhlIHNsb3Qgc28gdGhlIHdpcmUgc2hhcGUgc3RheXMgdmFsaWRcbiAgICAgIC8vIGZvciBwYXJ0aWFsLXNpZ24gZmxvd3M7IHRoZSB0cmFuc2FjdGlvbiBpcyBub3QgYnJvYWRjYXN0YWJsZSB1bnRpbFxuICAgICAgLy8gZXZlcnkgcmVxdWlyZWQgc2lnbmVyIGhhcyBhIHNpZ25hdHVyZS5cbiAgICAgIHNpZ25hdHVyZXMucHVzaChuZXcgVWludDhBcnJheSg2NCkpO1xuICAgIH1cblxuICAgIGNvbnN0IHYxV2lyZSA9IHNlcmlhbGl6ZVdpcmVUcmFuc2FjdGlvbihtZXNzYWdlQnl0ZXMsIHNpZ25hdHVyZXMpO1xuXG4gICAgdGhpcy5fdHJhbnNhY3Rpb24udjFUcmFuc2FjdGlvbkJ5dGVzID0gdjFXaXJlO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uLnYxTWVzc2FnZUJ5dGVzID0gbWVzc2FnZUJ5dGVzO1xuXG4gICAgLy8gUG9wdWxhdGUgYSBtZXRhZGF0YS1vbmx5IFNvbFRyYW5zYWN0aW9uIHNvIHRvSnNvbiAvIGxvYWRJbnB1dHNBbmRPdXRwdXRzIHdvcmsuXG4gICAgLy8gVGhlIGR1cmFibGUgbm9uY2UgaXMgY2FycmllZCB2aWEgbm9uY2VJbmZvLCBtYXRjaGluZyB0aGUgdjAgbW9kZWwuXG4gICAgY29uc3QgbWV0YVR4ID0gbmV3IFNvbFRyYW5zYWN0aW9uKCk7XG4gICAgbWV0YVR4LmZlZVBheWVyID0gZmVlUGF5ZXI7XG4gICAgbWV0YVR4LnJlY2VudEJsb2NraGFzaCA9IHRoaXMuX3JlY2VudEJsb2NraGFzaDtcbiAgICBpZiAodGhpcy5fbm9uY2VJbmZvKSB7XG4gICAgICBtZXRhVHgubm9uY2VJbmZvID0ge1xuICAgICAgICBub25jZTogdGhpcy5fcmVjZW50QmxvY2toYXNoLFxuICAgICAgICBub25jZUluc3RydWN0aW9uOiBidWlsZEFkdmFuY2VOb25jZUFjY291bnRJbnN0cnVjdGlvbihcbiAgICAgICAgICB0aGlzLl9ub25jZUluZm8ucGFyYW1zLndhbGxldE5vbmNlQWRkcmVzcyxcbiAgICAgICAgICB0aGlzLl9ub25jZUluZm8ucGFyYW1zLmF1dGhXYWxsZXRBZGRyZXNzXG4gICAgICAgICksXG4gICAgICB9O1xuICAgIH1cbiAgICBtZXRhVHguYWRkKC4uLmluc3RydWN0aW9ucyk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24uc29sVHJhbnNhY3Rpb24gPSBtZXRhVHg7XG5cbiAgICB0aGlzLl90cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvblR5cGUodGhpcy50cmFuc2FjdGlvblR5cGUpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uLnNldEluc3RydWN0aW9uc0RhdGEodGhpcy5fY3RJbnN0cnVjdGlvbnMpO1xuICAgIHRoaXMuX3RyYW5zYWN0aW9uLmxvYWRJbnB1dHNBbmRPdXRwdXRzKCk7XG5cbiAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb247XG4gIH1cbn1cbiJdfQ==