@bitgo-beta/sdk-coin-sol 7.6.4-beta.78 → 7.6.4-beta.781

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 (542) 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/LICENSE +0 -191
  385. package/dist/src/config/token2022StaticConfig.d.ts +0 -3
  386. package/dist/src/config/token2022StaticConfig.d.ts.map +0 -1
  387. package/dist/src/config/token2022StaticConfig.js +0 -50
  388. package/dist/src/lib/ataInitializationBuilder.d.ts.map +0 -1
  389. package/dist/src/lib/ataInitializationBuilder.js +0 -196
  390. package/dist/src/lib/closeAtaBuilder.d.ts +0 -19
  391. package/dist/src/lib/closeAtaBuilder.d.ts.map +0 -1
  392. package/dist/src/lib/closeAtaBuilder.js +0 -69
  393. package/dist/src/lib/constants.d.ts.map +0 -1
  394. package/dist/src/lib/constants.js +0 -171
  395. package/dist/src/lib/customInstructionBuilder.js +0 -289
  396. package/dist/src/lib/iface.d.ts +0 -244
  397. package/dist/src/lib/iface.d.ts.map +0 -1
  398. package/dist/src/lib/iface.js +0 -7
  399. package/dist/src/lib/index.d.ts.map +0 -1
  400. package/dist/src/lib/index.js +0 -77
  401. package/dist/src/lib/instructionParamsFactory.d.ts.map +0 -1
  402. package/dist/src/lib/instructionParamsFactory.js +0 -1036
  403. package/dist/src/lib/jitoStakePoolOperations.js +0 -200
  404. package/dist/src/lib/keyPair.d.ts.map +0 -1
  405. package/dist/src/lib/keyPair.js +0 -63
  406. package/dist/src/lib/solInstructionFactory.d.ts.map +0 -1
  407. package/dist/src/lib/solInstructionFactory.js +0 -572
  408. package/dist/src/lib/stakingActivateBuilder.js +0 -120
  409. package/dist/src/lib/stakingAuthorizeBuilder.js +0 -89
  410. package/dist/src/lib/stakingDeactivateBuilder.js +0 -208
  411. package/dist/src/lib/stakingDelegateBuilder.js +0 -120
  412. package/dist/src/lib/stakingRawMsgAuthorizeBuilder.js +0 -110
  413. package/dist/src/lib/stakingWithdrawBuilder.js +0 -78
  414. package/dist/src/lib/token2022Config.d.ts +0 -44
  415. package/dist/src/lib/token2022Config.d.ts.map +0 -1
  416. package/dist/src/lib/token2022Config.js +0 -27
  417. package/dist/src/lib/tokenTransferBuilder.d.ts.map +0 -1
  418. package/dist/src/lib/tokenTransferBuilder.js +0 -188
  419. package/dist/src/lib/transaction.d.ts.map +0 -1
  420. package/dist/src/lib/transaction.js +0 -595
  421. package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
  422. package/dist/src/lib/transactionBuilder.js +0 -380
  423. package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
  424. package/dist/src/lib/transactionBuilderFactory.js +0 -202
  425. package/dist/src/lib/transferBuilder.js +0 -70
  426. package/dist/src/lib/transferBuilderV2.d.ts +0 -43
  427. package/dist/src/lib/transferBuilderV2.d.ts.map +0 -1
  428. package/dist/src/lib/transferBuilderV2.js +0 -210
  429. package/dist/src/lib/utils.js +0 -589
  430. package/dist/src/lib/walletInitializationBuilder.js +0 -71
  431. package/dist/src/register.d.ts +0 -3
  432. package/dist/src/register.d.ts.map +0 -1
  433. package/dist/src/register.js +0 -15
  434. package/dist/src/sol.d.ts.map +0 -1
  435. package/dist/src/sol.js +0 -1324
  436. package/dist/src/solToken.d.ts.map +0 -1
  437. package/dist/src/solToken.js +0 -69
  438. package/dist/src/tsol.js +0 -24
  439. package/dist/test/fixtures/sol.js +0 -1433
  440. package/dist/test/resources/sol.d.ts.map +0 -1
  441. package/dist/test/resources/sol.js +0 -320
  442. package/dist/test/unit/fixtures/solBackupKey.d.ts.map +0 -1
  443. package/dist/test/unit/fixtures/solBackupKey.js +0 -8
  444. package/dist/test/unit/getBuilderFactory.d.ts.map +0 -1
  445. package/dist/test/unit/getBuilderFactory.js +0 -10
  446. package/dist/test/unit/instructionParamsFactory.d.ts.map +0 -1
  447. package/dist/test/unit/instructionParamsFactory.js +0 -412
  448. package/dist/test/unit/instructionParamsFactory.staking.d.ts.map +0 -1
  449. package/dist/test/unit/instructionParamsFactory.staking.js +0 -1059
  450. package/dist/test/unit/keyPair.js +0 -177
  451. package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +0 -1
  452. package/dist/test/unit/messages/messageBuilderFactory.js +0 -118
  453. package/dist/test/unit/messages/simpleMessageBuilder.d.ts.map +0 -1
  454. package/dist/test/unit/messages/simpleMessageBuilder.js +0 -194
  455. package/dist/test/unit/sol.js +0 -3180
  456. package/dist/test/unit/solInstructionFactory.d.ts.map +0 -1
  457. package/dist/test/unit/solInstructionFactory.js +0 -454
  458. package/dist/test/unit/solToken.d.ts.map +0 -1
  459. package/dist/test/unit/solToken.js +0 -31
  460. package/dist/test/unit/transaction.d.ts.map +0 -1
  461. package/dist/test/unit/transaction.js +0 -983
  462. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +0 -1
  463. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.js +0 -202
  464. package/dist/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +0 -1
  465. package/dist/test/unit/transactionBuilder/ataInitBuilder.js +0 -471
  466. package/dist/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +0 -1
  467. package/dist/test/unit/transactionBuilder/customInstructionBuilder.js +0 -413
  468. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +0 -1
  469. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.js +0 -430
  470. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +0 -1
  471. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +0 -157
  472. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +0 -1
  473. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.js +0 -384
  474. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +0 -1
  475. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.js +0 -224
  476. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -1
  477. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +0 -259
  478. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +0 -1
  479. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +0 -787
  480. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +0 -1
  481. package/dist/test/unit/transactionBuilder/transactionBuilder.js +0 -495
  482. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +0 -1
  483. package/dist/test/unit/transactionBuilder/transferBuilder.js +0 -286
  484. package/dist/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +0 -1
  485. package/dist/test/unit/transactionBuilder/transferBuilderV2.js +0 -862
  486. package/dist/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +0 -1
  487. package/dist/test/unit/transactionBuilder/walletInitBuilder.js +0 -259
  488. package/dist/test/unit/utils.js +0 -517
  489. package/dist/test/unit/versionedTransaction.d.ts.map +0 -1
  490. package/dist/test/unit/versionedTransaction.js +0 -207
  491. package/dist/tsconfig.tsbuildinfo +0 -1
  492. /package/dist/{src → cjs/src}/bigint-buffer-guard.d.ts +0 -0
  493. /package/dist/{src → cjs/src}/index.d.ts +0 -0
  494. /package/dist/{src → cjs/src}/lib/jitoStakePoolOperations.d.ts +0 -0
  495. /package/dist/{src → cjs/src}/lib/messages/index.d.ts +0 -0
  496. /package/dist/{src → cjs/src}/lib/messages/messageBuilderFactory.d.ts +0 -0
  497. /package/dist/{src → cjs/src}/lib/stakingActivateBuilder.d.ts +0 -0
  498. /package/dist/{src → cjs/src}/lib/stakingAuthorizeBuilder.d.ts +0 -0
  499. /package/dist/{src → cjs/src}/lib/stakingDeactivateBuilder.d.ts +0 -0
  500. /package/dist/{src → cjs/src}/lib/stakingDelegateBuilder.d.ts +0 -0
  501. /package/dist/{src → cjs/src}/lib/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
  502. /package/dist/{src → cjs/src}/lib/stakingWithdrawBuilder.d.ts +0 -0
  503. /package/dist/{src → cjs/src}/lib/transferBuilder.d.ts +0 -0
  504. /package/dist/{src → cjs/src}/lib/walletInitializationBuilder.d.ts +0 -0
  505. /package/dist/{src → cjs/src}/tsol.d.ts +0 -0
  506. /package/dist/{test → cjs/test}/fixtures/sol.d.ts +0 -0
  507. /package/dist/{test → cjs/test}/unit/fixtures/solBackupKey.d.ts +0 -0
  508. /package/dist/{test → cjs/test}/unit/getBuilderFactory.d.ts +0 -0
  509. /package/dist/{test → cjs/test}/unit/instructionParamsFactory.d.ts +0 -0
  510. /package/dist/{test → cjs/test}/unit/instructionParamsFactory.staking.d.ts +0 -0
  511. /package/dist/{test → cjs/test}/unit/keyPair.d.ts +0 -0
  512. /package/dist/{test → cjs/test}/unit/messages/messageBuilderFactory.d.ts +0 -0
  513. /package/dist/{test → cjs/test}/unit/messages/simpleMessageBuilder.d.ts +0 -0
  514. /package/dist/{test → cjs/test}/unit/sol.d.ts +0 -0
  515. /package/dist/{test → cjs/test}/unit/solInstructionFactory.d.ts +0 -0
  516. /package/dist/{test → cjs/test}/unit/solToken.d.ts +0 -0
  517. /package/dist/{test → cjs/test}/unit/transaction.d.ts +0 -0
  518. /package/dist/{test → cjs/test}/unit/transactionBuilder/StakingWithdrawBuilder.d.ts +0 -0
  519. /package/dist/{test → cjs/test}/unit/transactionBuilder/ataInitBuilder.d.ts +0 -0
  520. /package/dist/{test → cjs/test}/unit/transactionBuilder/customInstructionBuilder.d.ts +0 -0
  521. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingActivateBuilder.d.ts +0 -0
  522. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts +0 -0
  523. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDeactivateBuilder.d.ts +0 -0
  524. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDelegateBuilder.d.ts +0 -0
  525. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
  526. /package/dist/{test → cjs/test}/unit/transactionBuilder/tokenTransferBuilder.d.ts +0 -0
  527. /package/dist/{test → cjs/test}/unit/transactionBuilder/transactionBuilder.d.ts +0 -0
  528. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilder.d.ts +0 -0
  529. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilderV2.d.ts +0 -0
  530. /package/dist/{test → cjs/test}/unit/transactionBuilder/walletInitBuilder.d.ts +0 -0
  531. /package/dist/{test → cjs/test}/unit/utils.d.ts +0 -0
  532. /package/dist/{test → cjs/test}/unit/versionedTransaction.d.ts +0 -0
  533. /package/dist/{src → esm}/bigint-buffer-guard.d.ts.map +0 -0
  534. /package/dist/{src → esm}/bigint-buffer-guard.js +0 -0
  535. /package/dist/{src → esm}/index.d.ts.map +0 -0
  536. /package/dist/{src → esm}/lib/jitoStakePoolOperations.d.ts.map +0 -0
  537. /package/dist/{src → esm}/lib/messages/index.d.ts.map +0 -0
  538. /package/dist/{src → esm}/lib/messages/messageBuilderFactory.d.ts.map +0 -0
  539. /package/dist/{src → esm}/lib/stakingAuthorizeBuilder.d.ts.map +0 -0
  540. /package/dist/{src → esm}/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -0
  541. /package/dist/{src → esm}/lib/walletInitializationBuilder.d.ts.map +0 -0
  542. /package/dist/{src → esm}/tsol.d.ts.map +0 -0
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=v1PaymentBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v1PaymentBuilder.d.ts","sourceRoot":"","sources":["../../../../../test/unit/transactionBuilder/v1PaymentBuilder.ts"],"names":[],"mappings":""}
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const should_1 = __importDefault(require("should"));
40
+ const tweetnacl_1 = __importDefault(require("tweetnacl"));
41
+ const statics_1 = require("@bitgo-beta/statics");
42
+ const web3_js_1 = require("@solana/web3.js");
43
+ const src_1 = require("../../../src");
44
+ const parseWireTransaction_1 = require("../../../src/lib/serialization/parseWireTransaction");
45
+ const testData = __importStar(require("../../resources/sol"));
46
+ describe('Solana V1 Payment Builder (SIMD-0296/0385) — server-side construction surface', () => {
47
+ const coinConfig = statics_1.coins.get('tsol');
48
+ const user = new src_1.KeyPair(testData.authAccount).getKeys();
49
+ const gasTank = new src_1.KeyPair({ prv: testData.prvKeys.prvKey1.base58 }).getKeys();
50
+ const nonceAccount = new src_1.KeyPair(testData.nonceAccount).getKeys();
51
+ const recipient = 'ENn8a2tGMS9bR5XV7smGHJvNgzkyxJmnD2eUvQxY5jSP';
52
+ const recentBlockHash = 'GHtXQBsoZHVnNFa9YevAzFr17DJjgHXk3ycTKD5xD3Zi';
53
+ const amount = '300000';
54
+ const v1Config = {
55
+ computeUnitLimit: 200000,
56
+ heapSize: 32768,
57
+ loadedAccountsDataSizeLimit: 65536,
58
+ priorityFee: 5000,
59
+ };
60
+ const newBuilder = () => {
61
+ const builder = new src_1.V1PaymentBuilder(coinConfig);
62
+ builder.sender(user.pub);
63
+ builder.send({ address: recipient, amount });
64
+ builder.nonce(recentBlockHash);
65
+ builder.transactionConfig(v1Config);
66
+ return builder;
67
+ };
68
+ const signWith = (keyPair, messageBytes) => {
69
+ const prv = keyPair.prv;
70
+ if (typeof prv !== 'string') {
71
+ throw new Error('Missing private key for test signer');
72
+ }
73
+ const kp = new src_1.KeyPair({ prv });
74
+ return tweetnacl_1.default.sign.detached(messageBytes, kp.getKeys(true).prv);
75
+ };
76
+ it('exposes the structured send() surface', () => {
77
+ const builder = newBuilder();
78
+ builder.send({ address: recipient, amount }).should.equal(builder);
79
+ });
80
+ it('builds a v1 transfer message + signed wire and round-trips through parse', async () => {
81
+ const builder = newBuilder();
82
+ builder.sign({ key: user.prv });
83
+ const tx = (await builder.build());
84
+ tx.v1MessageBytes[0].should.equal(0x81);
85
+ tx.v1TransactionBytes.length.should.equal(tx.v1MessageBytes.length + 64);
86
+ tx.signablePayload.equals(Buffer.from(tx.v1MessageBytes)).should.be.true();
87
+ // the transfer instruction is a SystemProgram transfer (discriminator 2)
88
+ const decoded = (0, src_1.decodeV1Message)(tx.v1MessageBytes);
89
+ decoded.compiledInstructions[0].data[0].should.equal(2);
90
+ decoded.staticAccounts[decoded.compiledInstructions[0].programAddressIndex].should.equal(web3_js_1.SystemProgram.programId.toBase58());
91
+ const parsed = (0, src_1.parseWireTransaction)(tx.v1TransactionBytes);
92
+ parsed.signerPublicKeys.should.deepEqual([user.pub]);
93
+ (0, parseWireTransaction_1.verifyV1Signatures)(parsed.messageBytes, parsed.signatures, parsed.signerPublicKeys);
94
+ });
95
+ it('injects the AdvanceNonceAccount instruction and assembles user + gas-tank signatures in signer order', async () => {
96
+ const builder = newBuilder();
97
+ builder.nonce(recentBlockHash, {
98
+ walletNonceAddress: nonceAccount.pub,
99
+ authWalletAddress: gasTank.pub,
100
+ });
101
+ builder.sign({ key: user.prv });
102
+ const unsigned = (await builder.build());
103
+ const messageBytes = unsigned.v1MessageBytes;
104
+ // 2 required signers: user (fee payer) + gas-tank nonce authority
105
+ messageBytes[1].should.equal(2);
106
+ const decoded = (0, src_1.decodeV1Message)(messageBytes);
107
+ // nonce hash occupies the blockhash field
108
+ decoded.blockhash.should.equal(recentBlockHash);
109
+ // first instruction is AdvanceNonceAccount (System Program, discriminator 4)
110
+ decoded.compiledInstructions[0].data[0].should.equal(4);
111
+ decoded.staticAccounts[decoded.compiledInstructions[0].programAddressIndex].should.equal(web3_js_1.SystemProgram.programId.toBase58());
112
+ // signer order: fee payer (user) first, then gas tank
113
+ decoded.staticAccounts.slice(0, 2).should.deepEqual([user.pub, gasTank.pub]);
114
+ // attach the gas-tank HSM signature over the same message bytes
115
+ const gasTankSig = signWith(gasTank, messageBytes);
116
+ builder.addSignature({ pub: gasTank.pub }, Buffer.from(gasTankSig));
117
+ const signed = (await builder.build());
118
+ // message byte-identity between build and sign
119
+ Buffer.from(signed.v1MessageBytes).equals(Buffer.from(messageBytes)).should.be.true();
120
+ signed.v1TransactionBytes.length.should.equal(messageBytes.length + 2 * 64);
121
+ const parsed = (0, src_1.parseWireTransaction)(signed.v1TransactionBytes);
122
+ parsed.signerPublicKeys.should.deepEqual([user.pub, gasTank.pub]);
123
+ (0, parseWireTransaction_1.verifyV1Signatures)(parsed.messageBytes, parsed.signatures, parsed.signerPublicKeys);
124
+ });
125
+ it('throws when transactionConfig is missing', async () => {
126
+ const builder = new src_1.V1PaymentBuilder(coinConfig);
127
+ builder.sender(user.pub);
128
+ builder.send({ address: recipient, amount });
129
+ builder.nonce(recentBlockHash);
130
+ await builder.build().should.be.rejectedWith(/transactionConfig is required/);
131
+ });
132
+ it('validates recipient address and amount', () => {
133
+ const builder = new src_1.V1PaymentBuilder(coinConfig);
134
+ should_1.default.throws(() => builder.send({ address: 'not-an-address', amount }), /address/);
135
+ should_1.default.throws(() => builder.send({ address: recipient, amount: 'abc' }), /amount/);
136
+ });
137
+ });
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjFQYXltZW50QnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvdjFQYXltZW50QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QiwwREFBNkI7QUFDN0IsaURBQTRDO0FBQzVDLDZDQUFnRDtBQUNoRCxzQ0FBNkc7QUFDN0csOEZBQXlGO0FBRXpGLDhEQUFnRDtBQUVoRCxRQUFRLENBQUMsK0VBQStFLEVBQUUsR0FBRyxFQUFFO0lBQzdGLE1BQU0sVUFBVSxHQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckMsTUFBTSxJQUFJLEdBQUcsSUFBSSxhQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3pELE1BQU0sT0FBTyxHQUFHLElBQUksYUFBTyxDQUFDLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEYsTUFBTSxZQUFZLEdBQUcsSUFBSSxhQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xFLE1BQU0sU0FBUyxHQUFHLDhDQUE4QyxDQUFDO0lBQ2pFLE1BQU0sZUFBZSxHQUFHLDhDQUE4QyxDQUFDO0lBQ3ZFLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQztJQUV4QixNQUFNLFFBQVEsR0FBRztRQUNmLGdCQUFnQixFQUFFLE1BQU87UUFDekIsUUFBUSxFQUFFLEtBQU07UUFDaEIsMkJBQTJCLEVBQUUsS0FBTTtRQUNuQyxXQUFXLEVBQUUsSUFBSztLQUNuQixDQUFDO0lBRUYsTUFBTSxVQUFVLEdBQUcsR0FBRyxFQUFFO1FBQ3RC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cnQgbmFjbCBmcm9tICd0d2VldG5hY2wnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IFN5c3RlbVByb2dyYW0gfSBmcm9tICdAc29sYW5hL3dlYjMuanMnO1xuaW1wb3J0IHsgZGVjb2RlVjFNZXNzYWdlLCBLZXlQYWlyLCBwYXJzZVdpcmVUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb24sIFYxUGF5bWVudEJ1aWxkZXIgfSBmcm9tICcuLi8uLi8uLi9zcmMnO1xuaW1wb3J0IHsgdmVyaWZ5VjFTaWduYXR1cmVzIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYi9zZXJpYWxpemF0aW9uL3BhcnNlV2lyZVRyYW5zYWN0aW9uJztcbmltcG9ydCB7IFNvbGFuYUtleXMgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliL2lmYWNlJztcbmltcG9ydCAqIGFzIHRlc3REYXRhIGZyb20gJy4uLy4uL3Jlc291cmNlcy9zb2wnO1xuXG5kZXNjcmliZSgnU29sYW5hIFYxIFBheW1lbnQgQnVpbGRlciAoU0lNRC0wMjk2LzAzODUpIOKAlCBzZXJ2ZXItc2lkZSBjb25zdHJ1Y3Rpb24gc3VyZmFjZScsICgpID0+IHtcbiAgY29uc3QgY29pbkNvbmZpZyA9IGNvaW5zLmdldCgndHNvbCcpO1xuICBjb25zdCB1c2VyID0gbmV3IEtleVBhaXIodGVzdERhdGEuYXV0aEFjY291bnQpLmdldEtleXMoKTtcbiAgY29uc3QgZ2FzVGFuayA9IG5ldyBLZXlQYWlyKHsgcHJ2OiB0ZXN0RGF0YS5wcnZLZXlzLnBydktleTEuYmFzZTU4IH0pLmdldEtleXMoKTtcbiAgY29uc3Qgbm9uY2VBY2NvdW50ID0gbmV3IEtleVBhaXIodGVzdERhdGEubm9uY2VBY2NvdW50KS5nZXRLZXlzKCk7XG4gIGNvbnN0IHJlY2lwaWVudCA9ICdFTm44YTJ0R01TOWJSNVhWN3NtR0hKdk5nemt5eEptbkQyZVV2UXhZNWpTUCc7XG4gIGNvbnN0IHJlY2VudEJsb2NrSGFzaCA9ICdHSHRYUUJzb1pIVm5ORmE5WWV2QXpGcjE3REpqZ0hYazN5Y1RLRDV4RDNaaSc7XG4gIGNvbnN0IGFtb3VudCA9ICczMDAwMDAnO1xuXG4gIGNvbnN0IHYxQ29uZmlnID0ge1xuICAgIGNvbXB1dGVVbml0TGltaXQ6IDIwMF8wMDAsXG4gICAgaGVhcFNpemU6IDMyXzc2OCxcbiAgICBsb2FkZWRBY2NvdW50c0RhdGFTaXplTGltaXQ6IDY1XzUzNixcbiAgICBwcmlvcml0eUZlZTogNV8wMDAsXG4gIH07XG5cbiAgY29uc3QgbmV3QnVpbGRlciA9ICgpID0+IHtcbiAgICBjb25zdCBidWlsZGVyID0gbmV3IFYxUGF5bWVudEJ1aWxkZXIoY29pbkNvbmZpZyk7XG4gICAgYnVpbGRlci5zZW5kZXIodXNlci5wdWIpO1xuICAgIGJ1aWxkZXIuc2VuZCh7IGFkZHJlc3M6IHJlY2lwaWVudCwgYW1vdW50IH0pO1xuICAgIGJ1aWxkZXIubm9uY2UocmVjZW50QmxvY2tIYXNoKTtcbiAgICBidWlsZGVyLnRyYW5zYWN0aW9uQ29uZmlnKHYxQ29uZmlnKTtcbiAgICByZXR1cm4gYnVpbGRlcjtcbiAgfTtcblxuICBjb25zdCBzaWduV2l0aCA9IChrZXlQYWlyOiBTb2xhbmFLZXlzLCBtZXNzYWdlQnl0ZXM6IFVpbnQ4QXJyYXkpOiBVaW50OEFycmF5ID0+IHtcbiAgICBjb25zdCBwcnYgPSBrZXlQYWlyLnBydjtcbiAgICBpZiAodHlwZW9mIHBydiAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBwcml2YXRlIGtleSBmb3IgdGVzdCBzaWduZXInKTtcbiAgICB9XG4gICAgY29uc3Qga3AgPSBuZXcgS2V5UGFpcih7IHBydiB9KTtcbiAgICByZXR1cm4gbmFjbC5zaWduLmRldGFjaGVkKG1lc3NhZ2VCeXRlcywga3AuZ2V0S2V5cyh0cnVlKS5wcnYgYXMgVWludDhBcnJheSk7XG4gIH07XG5cbiAgaXQoJ2V4cG9zZXMgdGhlIHN0cnVjdHVyZWQgc2VuZCgpIHN1cmZhY2UnLCAoKSA9PiB7XG4gICAgY29uc3QgYnVpbGRlciA9IG5ld0J1aWxkZXIoKTtcbiAgICBidWlsZGVyLnNlbmQoeyBhZGRyZXNzOiByZWNpcGllbnQsIGFtb3VudCB9KS5zaG91bGQuZXF1YWwoYnVpbGRlcik7XG4gIH0pO1xuXG4gIGl0KCdidWlsZHMgYSB2MSB0cmFuc2ZlciBtZXNzYWdlICsgc2lnbmVkIHdpcmUgYW5kIHJvdW5kLXRyaXBzIHRocm91Z2ggcGFyc2UnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYnVpbGRlciA9IG5ld0J1aWxkZXIoKTtcbiAgICBidWlsZGVyLnNpZ24oeyBrZXk6IHVzZXIucHJ2IH0pO1xuICAgIGNvbnN0IHR4ID0gKGF3YWl0IGJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNhY3Rpb247XG5cbiAgICB0eC52MU1lc3NhZ2VCeXRlcyFbMF0uc2hvdWxkLmVxdWFsKDB4ODEpO1xuICAgIHR4LnYxVHJhbnNhY3Rpb25CeXRlcyEubGVuZ3RoLnNob3VsZC5lcXVhbCh0eC52MU1lc3NhZ2VCeXRlcyEubGVuZ3RoICsgNjQpO1xuICAgIHR4LnNpZ25hYmxlUGF5bG9hZC5lcXVhbHMoQnVmZmVyLmZyb20odHgudjFNZXNzYWdlQnl0ZXMhKSkuc2hvdWxkLmJlLnRydWUoKTtcblxuICAgIC8vIHRoZSB0cmFuc2ZlciBpbnN0cnVjdGlvbiBpcyBhIFN5c3RlbVByb2dyYW0gdHJhbnNmZXIgKGRpc2NyaW1pbmF0b3IgMilcbiAgICBjb25zdCBkZWNvZGVkID0gZGVjb2RlVjFNZXNzYWdlKHR4LnYxTWVzc2FnZUJ5dGVzISk7XG4gICAgZGVjb2RlZC5jb21waWxlZEluc3RydWN0aW9uc1swXS5kYXRhWzBdLnNob3VsZC5lcXVhbCgyKTtcbiAgICBkZWNvZGVkLnN0YXRpY0FjY291bnRzW2RlY29kZWQuY29tcGlsZWRJbnN0cnVjdGlvbnNbMF0ucHJvZ3JhbUFkZHJlc3NJbmRleF0uc2hvdWxkLmVxdWFsKFxuICAgICAgU3lzdGVtUHJvZ3JhbS5wcm9ncmFtSWQudG9CYXNlNTgoKVxuICAgICk7XG5cbiAgICBjb25zdCBwYXJzZWQgPSBwYXJzZVdpcmVUcmFuc2FjdGlvbih0eC52MVRyYW5zYWN0aW9uQnl0ZXMhKTtcbiAgICBwYXJzZWQuc2lnbmVyUHVibGljS2V5cy5zaG91bGQuZGVlcEVxdWFsKFt1c2VyLnB1Yl0pO1xuICAgIHZlcmlmeVYxU2lnbmF0dXJlcyhwYXJzZWQubWVzc2FnZUJ5dGVzLCBwYXJzZWQuc2lnbmF0dXJlcywgcGFyc2VkLnNpZ25lclB1YmxpY0tleXMpO1xuICB9KTtcblxuICBpdCgnaW5qZWN0cyB0aGUgQWR2YW5jZU5vbmNlQWNjb3VudCBpbnN0cnVjdGlvbiBhbmQgYXNzZW1ibGVzIHVzZXIgKyBnYXMtdGFuayBzaWduYXR1cmVzIGluIHNpZ25lciBvcmRlcicsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBidWlsZGVyID0gbmV3QnVpbGRlcigpO1xuICAgIGJ1aWxkZXIubm9uY2UocmVjZW50QmxvY2tIYXNoLCB7XG4gICAgICB3YWxsZXROb25jZUFkZHJlc3M6IG5vbmNlQWNjb3VudC5wdWIsXG4gICAgICBhdXRoV2FsbGV0QWRkcmVzczogZ2FzVGFuay5wdWIsXG4gICAgfSk7XG4gICAgYnVpbGRlci5zaWduKHsga2V5OiB1c2VyLnBydiB9KTtcblxuICAgIGNvbnN0IHVuc2lnbmVkID0gKGF3YWl0IGJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNhY3Rpb247XG4gICAgY29uc3QgbWVzc2FnZUJ5dGVzID0gdW5zaWduZWQudjFNZXNzYWdlQnl0ZXMhO1xuXG4gICAgLy8gMiByZXF1aXJlZCBzaWduZXJzOiB1c2VyIChmZWUgcGF5ZXIpICsgZ2FzLXRhbmsgbm9uY2UgYXV0aG9yaXR5XG4gICAgbWVzc2FnZUJ5dGVzWzFdLnNob3VsZC5lcXVhbCgyKTtcblxuICAgIGNvbnN0IGRlY29kZWQgPSBkZWNvZGVWMU1lc3NhZ2UobWVzc2FnZUJ5dGVzKTtcbiAgICAvLyBub25jZSBoYXNoIG9jY3VwaWVzIHRoZSBibG9ja2hhc2ggZmllbGRcbiAgICBkZWNvZGVkLmJsb2NraGFzaC5zaG91bGQuZXF1YWwocmVjZW50QmxvY2tIYXNoKTtcbiAgICAvLyBmaXJzdCBpbnN0cnVjdGlvbiBpcyBBZHZhbmNlTm9uY2VBY2NvdW50IChTeXN0ZW0gUHJvZ3JhbSwgZGlzY3JpbWluYXRvciA0KVxuICAgIGRlY29kZWQuY29tcGlsZWRJbnN0cnVjdGlvbnNbMF0uZGF0YVswXS5zaG91bGQuZXF1YWwoNCk7XG4gICAgZGVjb2RlZC5zdGF0aWNBY2NvdW50c1tkZWNvZGVkLmNvbXBpbGVkSW5zdHJ1Y3Rpb25zWzBdLnByb2dyYW1BZGRyZXNzSW5kZXhdLnNob3VsZC5lcXVhbChcbiAgICAgIFN5c3RlbVByb2dyYW0ucHJvZ3JhbUlkLnRvQmFzZTU4KClcbiAgICApO1xuICAgIC8vIHNpZ25lciBvcmRlcjogZmVlIHBheWVyICh1c2VyKSBmaXJzdCwgdGhlbiBnYXMgdGFua1xuICAgIGRlY29kZWQuc3RhdGljQWNjb3VudHMuc2xpY2UoMCwgMikuc2hvdWxkLmRlZXBFcXVhbChbdXNlci5wdWIsIGdhc1RhbmsucHViXSk7XG5cbiAgICAvLyBhdHRhY2ggdGhlIGdhcy10YW5rIEhTTSBzaWduYXR1cmUgb3ZlciB0aGUgc2FtZSBtZXNzYWdlIGJ5dGVzXG4gICAgY29uc3QgZ2FzVGFua1NpZyA9IHNpZ25XaXRoKGdhc1RhbmssIG1lc3NhZ2VCeXRlcyk7XG4gICAgYnVpbGRlci5hZGRTaWduYXR1cmUoeyBwdWI6IGdhc1RhbmsucHViIH0sIEJ1ZmZlci5mcm9tKGdhc1RhbmtTaWcpKTtcbiAgICBjb25zdCBzaWduZWQgPSAoYXdhaXQgYnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2FjdGlvbjtcblxuICAgIC8vIG1lc3NhZ2UgYnl0ZS1pZGVudGl0eSBiZXR3ZWVuIGJ1aWxkIGFuZCBzaWduXG4gICAgQnVmZmVyLmZyb20oc2lnbmVkLnYxTWVzc2FnZUJ5dGVzISkuZXF1YWxzKEJ1ZmZlci5mcm9tKG1lc3NhZ2VCeXRlcykpLnNob3VsZC5iZS50cnVlKCk7XG4gICAgc2lnbmVkLnYxVHJhbnNhY3Rpb25CeXRlcyEubGVuZ3RoLnNob3VsZC5lcXVhbChtZXNzYWdlQnl0ZXMubGVuZ3RoICsgMiAqIDY0KTtcblxuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlV2lyZVRyYW5zYWN0aW9uKHNpZ25lZC52MVRyYW5zYWN0aW9uQnl0ZXMhKTtcbiAgICBwYXJzZWQuc2lnbmVyUHVibGljS2V5cy5zaG91bGQuZGVlcEVxdWFsKFt1c2VyLnB1YiwgZ2FzVGFuay5wdWJdKTtcbiAgICB2ZXJpZnlWMVNpZ25hdHVyZXMocGFyc2VkLm1lc3NhZ2VCeXRlcywgcGFyc2VkLnNpZ25hdHVyZXMsIHBhcnNlZC5zaWduZXJQdWJsaWNLZXlzKTtcbiAgfSk7XG5cbiAgaXQoJ3Rocm93cyB3aGVuIHRyYW5zYWN0aW9uQ29uZmlnIGlzIG1pc3NpbmcnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBWMVBheW1lbnRCdWlsZGVyKGNvaW5Db25maWcpO1xuICAgIGJ1aWxkZXIuc2VuZGVyKHVzZXIucHViKTtcbiAgICBidWlsZGVyLnNlbmQoeyBhZGRyZXNzOiByZWNpcGllbnQsIGFtb3VudCB9KTtcbiAgICBidWlsZGVyLm5vbmNlKHJlY2VudEJsb2NrSGFzaCk7XG4gICAgYXdhaXQgYnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL3RyYW5zYWN0aW9uQ29uZmlnIGlzIHJlcXVpcmVkLyk7XG4gIH0pO1xuXG4gIGl0KCd2YWxpZGF0ZXMgcmVjaXBpZW50IGFkZHJlc3MgYW5kIGFtb3VudCcsICgpID0+IHtcbiAgICBjb25zdCBidWlsZGVyID0gbmV3IFYxUGF5bWVudEJ1aWxkZXIoY29pbkNvbmZpZyk7XG4gICAgc2hvdWxkLnRocm93cygoKSA9PiBidWlsZGVyLnNlbmQoeyBhZGRyZXNzOiAnbm90LWFuLWFkZHJlc3MnLCBhbW91bnQgfSksIC9hZGRyZXNzLyk7XG4gICAgc2hvdWxkLnRocm93cygoKSA9PiBidWlsZGVyLnNlbmQoeyBhZGRyZXNzOiByZWNpcGllbnQsIGFtb3VudDogJ2FiYycgfSksIC9hbW91bnQvKTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=v1TransactionBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v1TransactionBuilder.d.ts","sourceRoot":"","sources":["../../../../../test/unit/transactionBuilder/v1TransactionBuilder.ts"],"names":[],"mappings":""}
@@ -0,0 +1,331 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const should_1 = __importDefault(require("should"));
40
+ const tweetnacl_1 = __importDefault(require("tweetnacl"));
41
+ const statics_1 = require("@bitgo-beta/statics");
42
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
43
+ const web3_js_1 = require("@solana/web3.js");
44
+ const bs58_1 = __importDefault(require("bs58"));
45
+ const src_1 = require("../../../src");
46
+ const parseWireTransaction_1 = require("../../../src/lib/serialization/parseWireTransaction");
47
+ const constants_1 = require("../../../src/lib/constants");
48
+ const v1CustomInstructionBuilder_1 = require("../../../src/lib/v1CustomInstructionBuilder");
49
+ const testData = __importStar(require("../../resources/sol"));
50
+ class TestV1Builder extends src_1.V1TransactionBuilder {
51
+ get transactionType() {
52
+ return sdk_core_1.TransactionType.Send;
53
+ }
54
+ }
55
+ describe('Solana V1 Transaction Builder (SIMD-0296/0385)', () => {
56
+ const coinConfig = statics_1.coins.get('tsol');
57
+ const user = new src_1.KeyPair(testData.authAccount).getKeys();
58
+ const gasTank = new src_1.KeyPair({ prv: testData.prvKeys.prvKey1.base58 }).getKeys();
59
+ const nonceAccount = new src_1.KeyPair(testData.nonceAccount).getKeys();
60
+ const recipient = 'ENn8a2tGMS9bR5XV7smGHJvNgzkyxJmnD2eUvQxY5jSP';
61
+ const recentBlockHash = 'GHtXQBsoZHVnNFa9YevAzFr17DJjgHXk3ycTKD5xD3Zi';
62
+ const amount = '300000';
63
+ const v1Config = {
64
+ computeUnitLimit: 200000,
65
+ heapSize: 32768,
66
+ loadedAccountsDataSizeLimit: 65536,
67
+ priorityFee: 5000,
68
+ };
69
+ const transfer = {
70
+ type: constants_1.InstructionBuilderTypes.Transfer,
71
+ params: { fromAddress: user.pub, toAddress: recipient, amount },
72
+ };
73
+ const newBuilder = () => {
74
+ const builder = new TestV1Builder(coinConfig);
75
+ builder.sender(user.pub);
76
+ builder.nonce(recentBlockHash);
77
+ builder.instructions([transfer]);
78
+ builder.transactionConfig(v1Config);
79
+ return builder;
80
+ };
81
+ const signWith = (keyPair, messageBytes) => {
82
+ const prv = keyPair.prv;
83
+ if (typeof prv !== 'string') {
84
+ throw new Error('Missing private key for test signer');
85
+ }
86
+ const kp = new src_1.KeyPair({ prv });
87
+ return tweetnacl_1.default.sign.detached(messageBytes, kp.getKeys(true).prv);
88
+ };
89
+ describe('single signer', () => {
90
+ it('builds a v1 message + signed wire and round-trips through parse', async () => {
91
+ const builder = newBuilder();
92
+ builder.sign({ key: user.prv });
93
+ const tx = (await builder.build());
94
+ tx.v1MessageBytes[0].should.equal(0x81);
95
+ tx.v1TransactionBytes.length.should.equal(tx.v1MessageBytes.length + 64);
96
+ // signable payload is the message bytes
97
+ tx.signablePayload.equals(Buffer.from(tx.v1MessageBytes)).should.be.true();
98
+ const parsed = (0, src_1.parseWireTransaction)(tx.v1TransactionBytes);
99
+ parsed.signerPublicKeys.should.deepEqual([user.pub]);
100
+ (0, parseWireTransaction_1.verifyV1Signatures)(parsed.messageBytes, parsed.signatures, parsed.signerPublicKeys);
101
+ // broadcast format round-trips through from()
102
+ const raw = tx.toBroadcastFormat();
103
+ const reparsed = new TestV1Builder(coinConfig);
104
+ reparsed.from(raw);
105
+ reparsed.transaction.toBroadcastFormat().should.equal(raw);
106
+ });
107
+ it('throws when transactionConfig is missing', async () => {
108
+ const builder = new TestV1Builder(coinConfig);
109
+ builder.sender(user.pub);
110
+ builder.nonce(recentBlockHash);
111
+ builder.instructions([transfer]);
112
+ await builder.build().should.be.rejectedWith(/transactionConfig is required/);
113
+ });
114
+ });
115
+ describe('durable nonce (2 signatures)', () => {
116
+ it('injects the AdvanceNonceAccount instruction and assembles user + gas-tank signatures in signer order', async () => {
117
+ const builder = newBuilder();
118
+ builder.nonce(recentBlockHash, {
119
+ walletNonceAddress: nonceAccount.pub,
120
+ authWalletAddress: gasTank.pub,
121
+ });
122
+ builder.sign({ key: user.prv });
123
+ const unsigned = (await builder.build());
124
+ const messageBytes = unsigned.v1MessageBytes;
125
+ // 2 required signers: user (fee payer) + gas-tank nonce authority
126
+ messageBytes[1].should.equal(2);
127
+ const decoded = (0, src_1.decodeV1Message)(messageBytes);
128
+ // nonce hash occupies the blockhash field
129
+ decoded.blockhash.should.equal(recentBlockHash);
130
+ // first instruction is AdvanceNonceAccount (System Program, discriminator 4)
131
+ decoded.compiledInstructions[0].data[0].should.equal(4);
132
+ decoded.staticAccounts[decoded.compiledInstructions[0].programAddressIndex].should.equal(web3_js_1.SystemProgram.programId.toBase58());
133
+ // signer order: fee payer (user) first, then gas tank
134
+ decoded.staticAccounts.slice(0, 2).should.deepEqual([user.pub, gasTank.pub]);
135
+ // attach the gas-tank HSM signature over the same message bytes
136
+ const gasTankSig = signWith(gasTank, messageBytes);
137
+ builder.addSignature({ pub: gasTank.pub }, Buffer.from(gasTankSig));
138
+ const signed = (await builder.build());
139
+ // message byte-identity between build and sign
140
+ signed.v1MessageBytes.should.deepEqual(messageBytes);
141
+ const parsed = (0, src_1.parseWireTransaction)(signed.v1TransactionBytes);
142
+ parsed.signerPublicKeys.should.deepEqual([user.pub, gasTank.pub]);
143
+ (0, parseWireTransaction_1.verifyV1Signatures)(parsed.messageBytes, parsed.signatures, parsed.signerPublicKeys);
144
+ });
145
+ it('orders signatures by the compiled message when the gas tank is the fee payer', async () => {
146
+ const builder = newBuilder();
147
+ builder.nonce(recentBlockHash, {
148
+ walletNonceAddress: nonceAccount.pub,
149
+ authWalletAddress: gasTank.pub,
150
+ });
151
+ builder.feePayer(gasTank.pub);
152
+ builder.sign({ key: user.prv });
153
+ const unsigned = (await builder.build());
154
+ const messageBytes = unsigned.v1MessageBytes;
155
+ const decoded = (0, src_1.decodeV1Message)(messageBytes);
156
+ // gas tank (fee payer) is the first signer, user second
157
+ decoded.staticAccounts.slice(0, 2).should.deepEqual([gasTank.pub, user.pub]);
158
+ const userSig = signWith(user, messageBytes);
159
+ const gasTankSig = signWith(gasTank, messageBytes);
160
+ builder.addSignature({ pub: user.pub }, Buffer.from(userSig));
161
+ builder.addSignature({ pub: gasTank.pub }, Buffer.from(gasTankSig));
162
+ const signed = (await builder.build());
163
+ const parsed = (0, src_1.parseWireTransaction)(signed.v1TransactionBytes);
164
+ parsed.signerPublicKeys.should.deepEqual([gasTank.pub, user.pub]);
165
+ (0, parseWireTransaction_1.verifyV1Signatures)(parsed.messageBytes, parsed.signatures, parsed.signerPublicKeys);
166
+ });
167
+ it('zero-fills a missing signature slot so the wire shape stays valid', async () => {
168
+ const builder = newBuilder();
169
+ builder.nonce(recentBlockHash, {
170
+ walletNonceAddress: nonceAccount.pub,
171
+ authWalletAddress: gasTank.pub,
172
+ });
173
+ builder.sign({ key: user.prv });
174
+ const tx = (await builder.build());
175
+ const parsed = (0, src_1.parseWireTransaction)(tx.v1TransactionBytes);
176
+ parsed.signerPublicKeys.should.deepEqual([user.pub, gasTank.pub]);
177
+ parsed.signatures[0].some((b) => b !== 0).should.be.true();
178
+ parsed.signatures[1].every((b) => b === 0).should.be.true();
179
+ should_1.default.throws(() => (0, parseWireTransaction_1.verifyV1Signatures)(parsed.messageBytes, parsed.signatures, parsed.signerPublicKeys));
180
+ });
181
+ });
182
+ describe('buildAdvanceNonceAccountInstruction', () => {
183
+ it('constructs the nonce advance instruction with the authority as signer', () => {
184
+ const ix = (0, src_1.buildAdvanceNonceAccountInstruction)(nonceAccount.pub, gasTank.pub);
185
+ ix.programId.toBase58().should.equal(web3_js_1.SystemProgram.programId.toBase58());
186
+ ix.data[0].should.equal(4);
187
+ ix.keys[0].pubkey.toBase58().should.equal(nonceAccount.pub);
188
+ ix.keys[0].isWritable.should.be.true();
189
+ ix.keys[0].isSigner.should.be.false();
190
+ // web3.js nonceAdvance includes the recent-blockhashes sysvar as the second key
191
+ ix.keys[1].pubkey.toBase58().should.equal('SysvarRecentB1ockHashes11111111111111111111');
192
+ ix.keys[2].pubkey.toBase58().should.equal(gasTank.pub);
193
+ ix.keys[2].isSigner.should.be.true();
194
+ });
195
+ });
196
+ describe('nonce validation', () => {
197
+ it('rejects an invalid blockhash', () => {
198
+ const builder = newBuilder();
199
+ should_1.default.throws(() => builder.nonce('not-a-blockhash'), /Invalid or missing blockHash/);
200
+ });
201
+ it('rejects a nonce whose authority equals the nonce account', () => {
202
+ const builder = newBuilder();
203
+ should_1.default.throws(() => builder.nonce(recentBlockHash, { walletNonceAddress: user.pub, authWalletAddress: user.pub }), /walletNonceAddress cannot be equal to authWalletAddress/);
204
+ });
205
+ });
206
+ describe('from()', () => {
207
+ it('parses a signed v1 wire and exposes toJson via the metadata transaction', async () => {
208
+ const builder = newBuilder();
209
+ builder.sign({ key: user.prv });
210
+ const tx = (await builder.build());
211
+ const raw = tx.toBroadcastFormat();
212
+ const reparsed = new TestV1Builder(coinConfig);
213
+ reparsed.from(raw);
214
+ const reparsedTx = reparsed.transaction;
215
+ reparsedTx.toBroadcastFormat().should.equal(raw);
216
+ const json = reparsedTx.toJson();
217
+ json.nonce.should.equal(recentBlockHash);
218
+ json.numSignatures.should.equal(1);
219
+ });
220
+ });
221
+ });
222
+ describe('V1CustomInstructionBuilder', function () {
223
+ const coinConfig = statics_1.coins.get('tsol');
224
+ const user = new src_1.KeyPair(testData.authAccount).getKeys();
225
+ const gasTank = new src_1.KeyPair({ prv: testData.prvKeys.prvKey1.base58 }).getKeys();
226
+ const nonceAccount = new src_1.KeyPair(testData.nonceAccount).getKeys();
227
+ const recentBlockHash = 'GHtXQBsoZHVnNFa9YevAzFr17DJjgHXk3ycTKD5xD3Zi';
228
+ const v1Config = {
229
+ computeUnitLimit: 200000,
230
+ heapSize: 32768,
231
+ loadedAccountsDataSizeLimit: 65536,
232
+ priorityFee: 5000,
233
+ };
234
+ const signWith = (keyPair, messageBytes) => {
235
+ const prv = keyPair.prv;
236
+ if (typeof prv !== 'string') {
237
+ throw new Error('Missing private key for test signer');
238
+ }
239
+ const kp = new src_1.KeyPair({ prv });
240
+ return tweetnacl_1.default.sign.detached(messageBytes, kp.getKeys(true).prv);
241
+ };
242
+ it('builds a v1 transaction from a custom instruction + 2 signatures in signer order', async function () {
243
+ const recipient = 'C3sGf4xZb7kP1mQr8tYw9uVx2nD5hJ6aLcE4oRqS7iB';
244
+ const builder = new v1CustomInstructionBuilder_1.V1CustomInstructionBuilder(coinConfig);
245
+ builder.sender(user.pub);
246
+ builder.nonce(recentBlockHash, { walletNonceAddress: nonceAccount.pub, authWalletAddress: gasTank.pub });
247
+ builder.transactionConfig(v1Config);
248
+ builder.addInstruction(web3_js_1.SystemProgram.transfer({
249
+ fromPubkey: new web3_js_1.PublicKey(user.pub),
250
+ toPubkey: new web3_js_1.PublicKey(recipient),
251
+ lamports: 1000000,
252
+ }));
253
+ builder.sign({ key: user.prv });
254
+ const unsigned = (await builder.build());
255
+ const gasTankSig = signWith(gasTank, unsigned.v1MessageBytes);
256
+ builder.addSignature({ pub: gasTank.pub }, Buffer.from(gasTankSig));
257
+ const signed = (await builder.build());
258
+ const parsed = (0, src_1.parseWireTransaction)(signed.v1TransactionBytes);
259
+ parsed.signerPublicKeys.should.deepEqual([user.pub, gasTank.pub]);
260
+ (0, parseWireTransaction_1.verifyV1Signatures)(parsed.messageBytes, parsed.signatures, parsed.signerPublicKeys);
261
+ });
262
+ });
263
+ describe('V1TransactionBuilder envelope surface (fromVersionedData + SDK injector)', function () {
264
+ const coinConfig = statics_1.coins.get('tsol');
265
+ const user = new src_1.KeyPair(testData.authAccount).getKeys();
266
+ const gasTank = new src_1.KeyPair({ prv: testData.prvKeys.prvKey1.base58 }).getKeys();
267
+ const nonceAccount = new src_1.KeyPair(testData.nonceAccount).getKeys();
268
+ const recentBlockHash = 'GHtXQBsoZHVnNFa9YevAzFr17DJjgHXk3ycTKD5xD3Zi';
269
+ const envelope = {
270
+ version: 1,
271
+ versionedInstructions: [
272
+ { programIdIndex: 1, accountKeyIndexes: [0, 1], data: '2UzHM' }, // base58 of 0x01000000
273
+ ],
274
+ addressLookupTables: [],
275
+ staticAccountKeys: [user.pub, 'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr'],
276
+ messageHeader: { numRequiredSignatures: 1, numReadonlySignedAccounts: 0, numReadonlyUnsignedAccounts: 1 },
277
+ transactionConfig: {
278
+ computeUnitLimit: 200000,
279
+ heapSize: 32768,
280
+ loadedAccountsDataSizeLimit: null,
281
+ priorityFee: null,
282
+ },
283
+ };
284
+ it('fromVersionedData builds the same v1 message as manual addInstruction', async function () {
285
+ const fromData = new v1CustomInstructionBuilder_1.V1CustomInstructionBuilder(coinConfig);
286
+ fromData.fromVersionedData(envelope);
287
+ fromData.nonce(recentBlockHash);
288
+ fromData.sign({ key: user.prv });
289
+ const a = (await fromData.build());
290
+ const manual = new v1CustomInstructionBuilder_1.V1CustomInstructionBuilder(coinConfig);
291
+ manual.sender(user.pub);
292
+ manual.nonce(recentBlockHash);
293
+ manual.transactionConfig({ computeUnitLimit: 200000, heapSize: 32768 });
294
+ for (const ix of envelope.versionedInstructions) {
295
+ manual.addInstruction((0, src_1.toV1TransactionInstruction)(ix, envelope));
296
+ }
297
+ manual.sign({ key: user.prv });
298
+ const b = (await manual.build());
299
+ a.v1MessageBytes.should.deepEqual(b.v1MessageBytes);
300
+ });
301
+ it('SDK injectV1NonceAdvanceInstruction grows the header and promotes the authority', function () {
302
+ const injected = (0, src_1.injectV1NonceAdvanceInstruction)(envelope, {
303
+ walletNonceAddress: nonceAccount.pub,
304
+ authWalletAddress: gasTank.pub,
305
+ });
306
+ injected.messageHeader.numRequiredSignatures.should.equal(2);
307
+ injected.messageHeader.numReadonlySignedAccounts.should.equal(1);
308
+ injected.messageHeader.numReadonlyUnsignedAccounts.should.equal(3);
309
+ const nonceIx = injected.versionedInstructions[0];
310
+ injected.staticAccountKeys[nonceIx.programIdIndex].should.equal(web3_js_1.SystemProgram.programId.toBase58());
311
+ Buffer.from(bs58_1.default.decode(nonceIx.data))
312
+ .equals(Buffer.from([4, 0, 0, 0]))
313
+ .should.be.true();
314
+ // idempotent on a second pass
315
+ const twice = (0, src_1.injectV1NonceAdvanceInstruction)(injected, {
316
+ walletNonceAddress: nonceAccount.pub,
317
+ authWalletAddress: gasTank.pub,
318
+ });
319
+ twice.versionedInstructions.length.should.equal(injected.versionedInstructions.length);
320
+ });
321
+ it('transactionConfig coerces unset fields to null (SDK serializer contract)', async function () {
322
+ const builder = new v1CustomInstructionBuilder_1.V1CustomInstructionBuilder(coinConfig);
323
+ builder.fromVersionedData(envelope);
324
+ builder.nonce(recentBlockHash);
325
+ builder.transactionConfig({ computeUnitLimit: 200000 });
326
+ const tx = (await builder.build());
327
+ const decoded = (0, src_1.decodeV1Message)(tx.v1MessageBytes);
328
+ decoded.configValues.some((v) => v.kind === 'u32' && v.value === 200000).should.be.true();
329
+ });
330
+ });
331
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjFUcmFuc2FjdGlvbkJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL3YxVHJhbnNhY3Rpb25CdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLDBEQUE2QjtBQUM3QixpREFBNEM7QUFDNUMsbURBQXlGO0FBQ3pGLDZDQUEyRDtBQUMzRCxnREFBMEI7QUFDMUIsc0NBU3NCO0FBQ3RCLDhGQUF5RjtBQUN6RiwwREFBcUU7QUFDckUsNEZBQXlGO0FBRXpGLDhEQUFnRDtBQUVoRCxNQUFNLGFBQWMsU0FBUSwwQkFBb0I7SUFDOUMsSUFBYyxlQUFlO1FBQzNCLE9BQU8sMEJBQWUsQ0FBQyxJQUFJLENBQUM7SUFDOUIsQ0FBQztDQUNGO0FBRUQsUUFBUSxDQUFDLGdEQUFnRCxFQUFFLEdBQUcsRUFBRTtJQUM5RCxNQUFNLFVBQVUsR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sSUFBSSxHQUFHLElBQUksYUFBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN6RCxNQUFNLE9BQU8sR0FBRyxJQUFJLGFBQU8sQ0FBQyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2hGLE1BQU0sWUFBWSxHQUFHLElBQUksYUFBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsRSxNQUFNLFNBQVMsR0FBRyw4Q0FBOEMsQ0FBQztJQUNqRSxNQUFNLGVBQWUsR0FBRyw4Q0FBOEMsQ0FBQztJQUN2RSxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7SUFF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QUFBLHFCQUFlLEVBQUMsRUFBRSxDQUFDLGNBQWUsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsS0FBSyxLQUFLLE1BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0YsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzaG91bGQgZnJvbSAnc2hvdWxkJztcbmltcG9ydCBuYWNsIGZyb20gJ3R3ZWV0bmFjbCc7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlLCB0eXBlIFNvbFZlcnNpb25lZFRyYW5zYWN0aW9uRGF0YSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFB1YmxpY0tleSwgU3lzdGVtUHJvZ3JhbSB9IGZyb20gJ0Bzb2xhbmEvd2ViMy5qcyc7XG5pbXBvcnQgYmFzZTU4IGZyb20gJ2JzNTgnO1xuaW1wb3J0IHtcbiAgYnVpbGRBZHZhbmNlTm9uY2VBY2NvdW50SW5zdHJ1Y3Rpb24sXG4gIGRlY29kZVYxTWVzc2FnZSxcbiAgaW5qZWN0VjFOb25jZUFkdmFuY2VJbnN0cnVjdGlvbixcbiAgS2V5UGFpcixcbiAgcGFyc2VXaXJlVHJhbnNhY3Rpb24sXG4gIFRyYW5zYWN0aW9uLFxuICBWMVRyYW5zYWN0aW9uQnVpbGRlcixcbiAgdG9WMVRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb24sXG59IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgeyB2ZXJpZnlWMVNpZ25hdHVyZXMgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliL3NlcmlhbGl6YXRpb24vcGFyc2VXaXJlVHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBWMUN1c3RvbUluc3RydWN0aW9uQnVpbGRlciB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWIvdjFDdXN0b21JbnN0cnVjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgU29sYW5hS2V5cywgVHJhbnNmZXIgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliL2lmYWNlJztcbmltcG9ydCAqIGFzIHRlc3REYXRhIGZyb20gJy4uLy4uL3Jlc291cmNlcy9zb2wnO1xuXG5jbGFzcyBUZXN0VjFCdWlsZGVyIGV4dGVuZHMgVjFUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgfVxufVxuXG5kZXNjcmliZSgnU29sYW5hIFYxIFRyYW5zYWN0aW9uIEJ1aWxkZXIgKFNJTUQtMDI5Ni8wMzg1KScsICgpID0+IHtcbiAgY29uc3QgY29pbkNvbmZpZyA9IGNvaW5zLmdldCgndHNvbCcpO1xuICBjb25zdCB1c2VyID0gbmV3IEtleVBhaXIodGVzdERhdGEuYXV0aEFjY291bnQpLmdldEtleXMoKTtcbiAgY29uc3QgZ2FzVGFuayA9IG5ldyBLZXlQYWlyKHsgcHJ2OiB0ZXN0RGF0YS5wcnZLZXlzLnBydktleTEuYmFzZTU4IH0pLmdldEtleXMoKTtcbiAgY29uc3Qgbm9uY2VBY2NvdW50ID0gbmV3IEtleVBhaXIodGVzdERhdGEubm9uY2VBY2NvdW50KS5nZXRLZXlzKCk7XG4gIGNvbnN0IHJlY2lwaWVudCA9ICdFTm44YTJ0R01TOWJSNVhWN3NtR0hKdk5nemt5eEptbkQyZVV2UXhZNWpTUCc7XG4gIGNvbnN0IHJlY2VudEJsb2NrSGFzaCA9ICdHSHRYUUJzb1pIVm5ORmE5WWV2QXpGcjE3REpqZ0hYazN5Y1RLRDV4RDNaaSc7XG4gIGNvbnN0IGFtb3VudCA9ICczMDAwMDAnO1xuXG4gIGNvbnN0IHYxQ29uZmlnID0ge1xuICAgIGNvbXB1dGVVbml0TGltaXQ6IDIwMF8wMDAsXG4gICAgaGVhcFNpemU6IDMyXzc2OCxcbiAgICBsb2FkZWRBY2NvdW50c0RhdGFTaXplTGltaXQ6IDY1XzUzNixcbiAgICBwcmlvcml0eUZlZTogNV8wMDAsXG4gIH07XG5cbiAgY29uc3QgdHJhbnNmZXI6IFRyYW5zZmVyID0ge1xuICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlRyYW5zZmVyLFxuICAgIHBhcmFtczogeyBmcm9tQWRkcmVzczogdXNlci5wdWIsIHRvQWRkcmVzczogcmVjaXBpZW50LCBhbW91bnQgfSxcbiAgfTtcblxuICBjb25zdCBuZXdCdWlsZGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVGVzdFYxQnVpbGRlcihjb2luQ29uZmlnKTtcbiAgICBidWlsZGVyLnNlbmRlcih1c2VyLnB1Yik7XG4gICAgYnVpbGRlci5ub25jZShyZWNlbnRCbG9ja0hhc2gpO1xuICAgIGJ1aWxkZXIuaW5zdHJ1Y3Rpb25zKFt0cmFuc2Zlcl0pO1xuICAgIGJ1aWxkZXIudHJhbnNhY3Rpb25Db25maWcodjFDb25maWcpO1xuICAgIHJldHVybiBidWlsZGVyO1xuICB9O1xuXG4gIGNvbnN0IHNpZ25XaXRoID0gKGtleVBhaXI6IFNvbGFuYUtleXMsIG1lc3NhZ2VCeXRlczogVWludDhBcnJheSk6IFVpbnQ4QXJyYXkgPT4ge1xuICAgIGNvbnN0IHBydiA9IGtleVBhaXIucHJ2O1xuICAgIGlmICh0eXBlb2YgcHJ2ICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHByaXZhdGUga2V5IGZvciB0ZXN0IHNpZ25lcicpO1xuICAgIH1cbiAgICBjb25zdCBrcCA9IG5ldyBLZXlQYWlyKHsgcHJ2IH0pO1xuICAgIHJldHVybiBuYWNsLnNpZ24uZGV0YWNoZWQobWVzc2FnZUJ5dGVzLCBrcC5nZXRLZXlzKHRydWUpLnBydiBhcyBVaW50OEFycmF5KTtcbiAgfTtcblxuICBkZXNjcmliZSgnc2luZ2xlIHNpZ25lcicsICgpID0+IHtcbiAgICBpdCgnYnVpbGRzIGEgdjEgbWVzc2FnZSArIHNpZ25lZCB3aXJlIGFuZCByb3VuZC10cmlwcyB0aHJvdWdoIHBhcnNlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ld0J1aWxkZXIoKTtcbiAgICAgIGJ1aWxkZXIuc2lnbih7IGtleTogdXNlci5wcnYgfSk7XG4gICAgICBjb25zdCB0eCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuXG4gICAgICB0eC52MU1lc3NhZ2VCeXRlcyFbMF0uc2hvdWxkLmVxdWFsKDB4ODEpO1xuICAgICAgdHgudjFUcmFuc2FjdGlvbkJ5dGVzIS5sZW5ndGguc2hvdWxkLmVxdWFsKHR4LnYxTWVzc2FnZUJ5dGVzIS5sZW5ndGggKyA2NCk7XG4gICAgICAvLyBzaWduYWJsZSBwYXlsb2FkIGlzIHRoZSBtZXNzYWdlIGJ5dGVzXG4gICAgICB0eC5zaWduYWJsZVBheWxvYWQuZXF1YWxzKEJ1ZmZlci5mcm9tKHR4LnYxTWVzc2FnZUJ5dGVzISkpLnNob3VsZC5iZS50cnVlKCk7XG5cbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlV2lyZVRyYW5zYWN0aW9uKHR4LnYxVHJhbnNhY3Rpb25CeXRlcyEpO1xuICAgICAgcGFyc2VkLnNpZ25lclB1YmxpY0tleXMuc2hvdWxkLmRlZXBFcXVhbChbdXNlci5wdWJdKTtcbiAgICAgIHZlcmlmeVYxU2lnbmF0dXJlcyhwYXJzZWQubWVzc2FnZUJ5dGVzLCBwYXJzZWQuc2lnbmF0dXJlcywgcGFyc2VkLnNpZ25lclB1YmxpY0tleXMpO1xuXG4gICAgICAvLyBicm9hZGNhc3QgZm9ybWF0IHJvdW5kLXRyaXBzIHRocm91Z2ggZnJvbSgpXG4gICAgICBjb25zdCByYXcgPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgY29uc3QgcmVwYXJzZWQgPSBuZXcgVGVzdFYxQnVpbGRlcihjb2luQ29uZmlnKTtcbiAgICAgIHJlcGFyc2VkLmZyb20ocmF3KTtcbiAgICAgIChyZXBhcnNlZCBhcyB1bmtub3duIGFzIHsgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uIH0pLnRyYW5zYWN0aW9uLnRvQnJvYWRjYXN0Rm9ybWF0KCkuc2hvdWxkLmVxdWFsKHJhdyk7XG4gICAgfSk7XG5cbiAgICBpdCgndGhyb3dzIHdoZW4gdHJhbnNhY3Rpb25Db25maWcgaXMgbWlzc2luZycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVGVzdFYxQnVpbGRlcihjb2luQ29uZmlnKTtcbiAgICAgIGJ1aWxkZXIuc2VuZGVyKHVzZXIucHViKTtcbiAgICAgIGJ1aWxkZXIubm9uY2UocmVjZW50QmxvY2tIYXNoKTtcbiAgICAgIGJ1aWxkZXIuaW5zdHJ1Y3Rpb25zKFt0cmFuc2Zlcl0pO1xuICAgICAgYXdhaXQgYnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL3RyYW5zYWN0aW9uQ29uZmlnIGlzIHJlcXVpcmVkLyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdkdXJhYmxlIG5vbmNlICgyIHNpZ25hdHVyZXMpJywgKCkgPT4ge1xuICAgIGl0KCdpbmplY3RzIHRoZSBBZHZhbmNlTm9uY2VBY2NvdW50IGluc3RydWN0aW9uIGFuZCBhc3NlbWJsZXMgdXNlciArIGdhcy10YW5rIHNpZ25hdHVyZXMgaW4gc2lnbmVyIG9yZGVyJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ld0J1aWxkZXIoKTtcbiAgICAgIGJ1aWxkZXIubm9uY2UocmVjZW50QmxvY2tIYXNoLCB7XG4gICAgICAgIHdhbGxldE5vbmNlQWRkcmVzczogbm9uY2VBY2NvdW50LnB1YixcbiAgICAgICAgYXV0aFdhbGxldEFkZHJlc3M6IGdhc1RhbmsucHViLFxuICAgICAgfSk7XG4gICAgICBidWlsZGVyLnNpZ24oeyBrZXk6IHVzZXIucHJ2IH0pO1xuXG4gICAgICBjb25zdCB1bnNpZ25lZCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuICAgICAgY29uc3QgbWVzc2FnZUJ5dGVzID0gdW5zaWduZWQudjFNZXNzYWdlQnl0ZXMhO1xuXG4gICAgICAvLyAyIHJlcXVpcmVkIHNpZ25lcnM6IHVzZXIgKGZlZSBwYXllcikgKyBnYXMtdGFuayBub25jZSBhdXRob3JpdHlcbiAgICAgIG1lc3NhZ2VCeXRlc1sxXS5zaG91bGQuZXF1YWwoMik7XG5cbiAgICAgIGNvbnN0IGRlY29kZWQgPSBkZWNvZGVWMU1lc3NhZ2UobWVzc2FnZUJ5dGVzKTtcbiAgICAgIC8vIG5vbmNlIGhhc2ggb2NjdXBpZXMgdGhlIGJsb2NraGFzaCBmaWVsZFxuICAgICAgZGVjb2RlZC5ibG9ja2hhc2guc2hvdWxkLmVxdWFsKHJlY2VudEJsb2NrSGFzaCk7XG4gICAgICAvLyBmaXJzdCBpbnN0cnVjdGlvbiBpcyBBZHZhbmNlTm9uY2VBY2NvdW50IChTeXN0ZW0gUHJvZ3JhbSwgZGlzY3JpbWluYXRvciA0KVxuICAgICAgZGVjb2RlZC5jb21waWxlZEluc3RydWN0aW9uc1swXS5kYXRhWzBdLnNob3VsZC5lcXVhbCg0KTtcbiAgICAgIGRlY29kZWQuc3RhdGljQWNjb3VudHNbZGVjb2RlZC5jb21waWxlZEluc3RydWN0aW9uc1swXS5wcm9ncmFtQWRkcmVzc0luZGV4XS5zaG91bGQuZXF1YWwoXG4gICAgICAgIFN5c3RlbVByb2dyYW0ucHJvZ3JhbUlkLnRvQmFzZTU4KClcbiAgICAgICk7XG4gICAgICAvLyBzaWduZXIgb3JkZXI6IGZlZSBwYXllciAodXNlcikgZmlyc3QsIHRoZW4gZ2FzIHRhbmtcbiAgICAgIGRlY29kZWQuc3RhdGljQWNjb3VudHMuc2xpY2UoMCwgMikuc2hvdWxkLmRlZXBFcXVhbChbdXNlci5wdWIsIGdhc1RhbmsucHViXSk7XG5cbiAgICAgIC8vIGF0dGFjaCB0aGUgZ2FzLXRhbmsgSFNNIHNpZ25hdHVyZSBvdmVyIHRoZSBzYW1lIG1lc3NhZ2UgYnl0ZXNcbiAgICAgIGNvbnN0IGdhc1RhbmtTaWcgPSBzaWduV2l0aChnYXNUYW5rLCBtZXNzYWdlQnl0ZXMpO1xuICAgICAgYnVpbGRlci5hZGRTaWduYXR1cmUoeyBwdWI6IGdhc1RhbmsucHViIH0sIEJ1ZmZlci5mcm9tKGdhc1RhbmtTaWcpKTtcbiAgICAgIGNvbnN0IHNpZ25lZCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuXG4gICAgICAvLyBtZXNzYWdlIGJ5dGUtaWRlbnRpdHkgYmV0d2VlbiBidWlsZCBhbmQgc2lnblxuICAgICAgc2lnbmVkLnYxTWVzc2FnZUJ5dGVzIS5zaG91bGQuZGVlcEVxdWFsKG1lc3NhZ2VCeXRlcyk7XG5cbiAgICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlV2lyZVRyYW5zYWN0aW9uKHNpZ25lZC52MVRyYW5zYWN0aW9uQnl0ZXMhKTtcbiAgICAgIHBhcnNlZC5zaWduZXJQdWJsaWNLZXlzLnNob3VsZC5kZWVwRXF1YWwoW3VzZXIucHViLCBnYXNUYW5rLnB1Yl0pO1xuICAgICAgdmVyaWZ5VjFTaWduYXR1cmVzKHBhcnNlZC5tZXNzYWdlQnl0ZXMsIHBhcnNlZC5zaWduYXR1cmVzLCBwYXJzZWQuc2lnbmVyUHVibGljS2V5cyk7XG4gICAgfSk7XG5cbiAgICBpdCgnb3JkZXJzIHNpZ25hdHVyZXMgYnkgdGhlIGNvbXBpbGVkIG1lc3NhZ2Ugd2hlbiB0aGUgZ2FzIHRhbmsgaXMgdGhlIGZlZSBwYXllcicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXdCdWlsZGVyKCk7XG4gICAgICBidWlsZGVyLm5vbmNlKHJlY2VudEJsb2NrSGFzaCwge1xuICAgICAgICB3YWxsZXROb25jZUFkZHJlc3M6IG5vbmNlQWNjb3VudC5wdWIsXG4gICAgICAgIGF1dGhXYWxsZXRBZGRyZXNzOiBnYXNUYW5rLnB1YixcbiAgICAgIH0pO1xuICAgICAgYnVpbGRlci5mZWVQYXllcihnYXNUYW5rLnB1Yik7XG4gICAgICBidWlsZGVyLnNpZ24oeyBrZXk6IHVzZXIucHJ2IH0pO1xuXG4gICAgICBjb25zdCB1bnNpZ25lZCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuICAgICAgY29uc3QgbWVzc2FnZUJ5dGVzID0gdW5zaWduZWQudjFNZXNzYWdlQnl0ZXMhO1xuICAgICAgY29uc3QgZGVjb2RlZCA9IGRlY29kZVYxTWVzc2FnZShtZXNzYWdlQnl0ZXMpO1xuICAgICAgLy8gZ2FzIHRhbmsgKGZlZSBwYXllcikgaXMgdGhlIGZpcnN0IHNpZ25lciwgdXNlciBzZWNvbmRcbiAgICAgIGRlY29kZWQuc3RhdGljQWNjb3VudHMuc2xpY2UoMCwgMikuc2hvdWxkLmRlZXBFcXVhbChbZ2FzVGFuay5wdWIsIHVzZXIucHViXSk7XG5cbiAgICAgIGNvbnN0IHVzZXJTaWcgPSBzaWduV2l0aCh1c2VyLCBtZXNzYWdlQnl0ZXMpO1xuICAgICAgY29uc3QgZ2FzVGFua1NpZyA9IHNpZ25XaXRoKGdhc1RhbmssIG1lc3NhZ2VCeXRlcyk7XG4gICAgICBidWlsZGVyLmFkZFNpZ25hdHVyZSh7IHB1YjogdXNlci5wdWIgfSwgQnVmZmVyLmZyb20odXNlclNpZykpO1xuICAgICAgYnVpbGRlci5hZGRTaWduYXR1cmUoeyBwdWI6IGdhc1RhbmsucHViIH0sIEJ1ZmZlci5mcm9tKGdhc1RhbmtTaWcpKTtcbiAgICAgIGNvbnN0IHNpZ25lZCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuXG4gICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZVdpcmVUcmFuc2FjdGlvbihzaWduZWQudjFUcmFuc2FjdGlvbkJ5dGVzISk7XG4gICAgICBwYXJzZWQuc2lnbmVyUHVibGljS2V5cy5zaG91bGQuZGVlcEVxdWFsKFtnYXNUYW5rLnB1YiwgdXNlci5wdWJdKTtcbiAgICAgIHZlcmlmeVYxU2lnbmF0dXJlcyhwYXJzZWQubWVzc2FnZUJ5dGVzLCBwYXJzZWQuc2lnbmF0dXJlcywgcGFyc2VkLnNpZ25lclB1YmxpY0tleXMpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3plcm8tZmlsbHMgYSBtaXNzaW5nIHNpZ25hdHVyZSBzbG90IHNvIHRoZSB3aXJlIHNoYXBlIHN0YXlzIHZhbGlkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ld0J1aWxkZXIoKTtcbiAgICAgIGJ1aWxkZXIubm9uY2UocmVjZW50QmxvY2tIYXNoLCB7XG4gICAgICAgIHdhbGxldE5vbmNlQWRkcmVzczogbm9uY2VBY2NvdW50LnB1YixcbiAgICAgICAgYXV0aFdhbGxldEFkZHJlc3M6IGdhc1RhbmsucHViLFxuICAgICAgfSk7XG4gICAgICBidWlsZGVyLnNpZ24oeyBrZXk6IHVzZXIucHJ2IH0pO1xuXG4gICAgICBjb25zdCB0eCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VXaXJlVHJhbnNhY3Rpb24odHgudjFUcmFuc2FjdGlvbkJ5dGVzISk7XG4gICAgICBwYXJzZWQuc2lnbmVyUHVibGljS2V5cy5zaG91bGQuZGVlcEVxdWFsKFt1c2VyLnB1YiwgZ2FzVGFuay5wdWJdKTtcbiAgICAgIHBhcnNlZC5zaWduYXR1cmVzWzBdLnNvbWUoKGIpID0+IGIgIT09IDApLnNob3VsZC5iZS50cnVlKCk7XG4gICAgICBwYXJzZWQuc2lnbmF0dXJlc1sxXS5ldmVyeSgoYikgPT4gYiA9PT0gMCkuc2hvdWxkLmJlLnRydWUoKTtcbiAgICAgIHNob3VsZC50aHJvd3MoKCkgPT4gdmVyaWZ5VjFTaWduYXR1cmVzKHBhcnNlZC5tZXNzYWdlQnl0ZXMsIHBhcnNlZC5zaWduYXR1cmVzLCBwYXJzZWQuc2lnbmVyUHVibGljS2V5cykpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnYnVpbGRBZHZhbmNlTm9uY2VBY2NvdW50SW5zdHJ1Y3Rpb24nLCAoKSA9PiB7XG4gICAgaXQoJ2NvbnN0cnVjdHMgdGhlIG5vbmNlIGFkdmFuY2UgaW5zdHJ1Y3Rpb24gd2l0aCB0aGUgYXV0aG9yaXR5IGFzIHNpZ25lcicsICgpID0+IHtcbiAgICAgIGNvbnN0IGl4ID0gYnVpbGRBZHZhbmNlTm9uY2VBY2NvdW50SW5zdHJ1Y3Rpb24obm9uY2VBY2NvdW50LnB1YiwgZ2FzVGFuay5wdWIpO1xuICAgICAgaXgucHJvZ3JhbUlkLnRvQmFzZTU4KCkuc2hvdWxkLmVxdWFsKFN5c3RlbVByb2dyYW0ucHJvZ3JhbUlkLnRvQmFzZTU4KCkpO1xuICAgICAgaXguZGF0YVswXS5zaG91bGQuZXF1YWwoNCk7XG4gICAgICBpeC5rZXlzWzBdLnB1YmtleS50b0Jhc2U1OCgpLnNob3VsZC5lcXVhbChub25jZUFjY291bnQucHViKTtcbiAgICAgIGl4LmtleXNbMF0uaXNXcml0YWJsZS5zaG91bGQuYmUudHJ1ZSgpO1xuICAgICAgaXgua2V5c1swXS5pc1NpZ25lci5zaG91bGQuYmUuZmFsc2UoKTtcbiAgICAgIC8vIHdlYjMuanMgbm9uY2VBZHZhbmNlIGluY2x1ZGVzIHRoZSByZWNlbnQtYmxvY2toYXNoZXMgc3lzdmFyIGFzIHRoZSBzZWNvbmQga2V5XG4gICAgICBpeC5rZXlzWzFdLnB1YmtleS50b0Jhc2U1OCgpLnNob3VsZC5lcXVhbCgnU3lzdmFyUmVjZW50QjFvY2tIYXNoZXMxMTExMTExMTExMTExMTExMTExMScpO1xuICAgICAgaXgua2V5c1syXS5wdWJrZXkudG9CYXNlNTgoKS5zaG91bGQuZXF1YWwoZ2FzVGFuay5wdWIpO1xuICAgICAgaXgua2V5c1syXS5pc1NpZ25lci5zaG91bGQuYmUudHJ1ZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnbm9uY2UgdmFsaWRhdGlvbicsICgpID0+IHtcbiAgICBpdCgncmVqZWN0cyBhbiBpbnZhbGlkIGJsb2NraGFzaCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXdCdWlsZGVyKCk7XG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IGJ1aWxkZXIubm9uY2UoJ25vdC1hLWJsb2NraGFzaCcpLCAvSW52YWxpZCBvciBtaXNzaW5nIGJsb2NrSGFzaC8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlamVjdHMgYSBub25jZSB3aG9zZSBhdXRob3JpdHkgZXF1YWxzIHRoZSBub25jZSBhY2NvdW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IG5ld0J1aWxkZXIoKTtcbiAgICAgIHNob3VsZC50aHJvd3MoXG4gICAgICAgICgpID0+IGJ1aWxkZXIubm9uY2UocmVjZW50QmxvY2tIYXNoLCB7IHdhbGxldE5vbmNlQWRkcmVzczogdXNlci5wdWIsIGF1dGhXYWxsZXRBZGRyZXNzOiB1c2VyLnB1YiB9KSxcbiAgICAgICAgL3dhbGxldE5vbmNlQWRkcmVzcyBjYW5ub3QgYmUgZXF1YWwgdG8gYXV0aFdhbGxldEFkZHJlc3MvXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZnJvbSgpJywgKCkgPT4ge1xuICAgIGl0KCdwYXJzZXMgYSBzaWduZWQgdjEgd2lyZSBhbmQgZXhwb3NlcyB0b0pzb24gdmlhIHRoZSBtZXRhZGF0YSB0cmFuc2FjdGlvbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXdCdWlsZGVyKCk7XG4gICAgICBidWlsZGVyLnNpZ24oeyBrZXk6IHVzZXIucHJ2IH0pO1xuICAgICAgY29uc3QgdHggPSAoYXdhaXQgYnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2FjdGlvbjtcbiAgICAgIGNvbnN0IHJhdyA9IHR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICAgIGNvbnN0IHJlcGFyc2VkID0gbmV3IFRlc3RWMUJ1aWxkZXIoY29pbkNvbmZpZyk7XG4gICAgICByZXBhcnNlZC5mcm9tKHJhdyk7XG4gICAgICBjb25zdCByZXBhcnNlZFR4ID0gKHJlcGFyc2VkIGFzIHVua25vd24gYXMgeyB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24gfSkudHJhbnNhY3Rpb247XG4gICAgICByZXBhcnNlZFR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkuc2hvdWxkLmVxdWFsKHJhdyk7XG5cbiAgICAgIGNvbnN0IGpzb24gPSByZXBhcnNlZFR4LnRvSnNvbigpO1xuICAgICAganNvbi5ub25jZS5zaG91bGQuZXF1YWwocmVjZW50QmxvY2tIYXNoKTtcbiAgICAgIGpzb24ubnVtU2lnbmF0dXJlcy5zaG91bGQuZXF1YWwoMSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdWMUN1c3RvbUluc3RydWN0aW9uQnVpbGRlcicsIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgY29pbkNvbmZpZyA9IGNvaW5zLmdldCgndHNvbCcpO1xuICBjb25zdCB1c2VyID0gbmV3IEtleVBhaXIodGVzdERhdGEuYXV0aEFjY291bnQpLmdldEtleXMoKTtcbiAgY29uc3QgZ2FzVGFuayA9IG5ldyBLZXlQYWlyKHsgcHJ2OiB0ZXN0RGF0YS5wcnZLZXlzLnBydktleTEuYmFzZTU4IH0pLmdldEtleXMoKTtcbiAgY29uc3Qgbm9uY2VBY2NvdW50ID0gbmV3IEtleVBhaXIodGVzdERhdGEubm9uY2VBY2NvdW50KS5nZXRLZXlzKCk7XG4gIGNvbnN0IHJlY2VudEJsb2NrSGFzaCA9ICdHSHRYUUJzb1pIVm5ORmE5WWV2QXpGcjE3REpqZ0hYazN5Y1RLRDV4RDNaaSc7XG4gIGNvbnN0IHYxQ29uZmlnID0ge1xuICAgIGNvbXB1dGVVbml0TGltaXQ6IDIwMF8wMDAsXG4gICAgaGVhcFNpemU6IDMyXzc2OCxcbiAgICBsb2FkZWRBY2NvdW50c0RhdGFTaXplTGltaXQ6IDY1XzUzNixcbiAgICBwcmlvcml0eUZlZTogNV8wMDAsXG4gIH07XG5cbiAgY29uc3Qgc2lnbldpdGggPSAoa2V5UGFpcjogU29sYW5hS2V5cywgbWVzc2FnZUJ5dGVzOiBVaW50OEFycmF5KTogVWludDhBcnJheSA9PiB7XG4gICAgY29uc3QgcHJ2ID0ga2V5UGFpci5wcnY7XG4gICAgaWYgKHR5cGVvZiBwcnYgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcHJpdmF0ZSBrZXkgZm9yIHRlc3Qgc2lnbmVyJyk7XG4gICAgfVxuICAgIGNvbnN0IGtwID0gbmV3IEtleVBhaXIoeyBwcnYgfSk7XG4gICAgcmV0dXJuIG5hY2wuc2lnbi5kZXRhY2hlZChtZXNzYWdlQnl0ZXMsIGtwLmdldEtleXModHJ1ZSkucHJ2IGFzIFVpbnQ4QXJyYXkpO1xuICB9O1xuXG4gIGl0KCdidWlsZHMgYSB2MSB0cmFuc2FjdGlvbiBmcm9tIGEgY3VzdG9tIGluc3RydWN0aW9uICsgMiBzaWduYXR1cmVzIGluIHNpZ25lciBvcmRlcicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCByZWNpcGllbnQgPSAnQzNzR2Y0eFpiN2tQMW1Rcjh0WXc5dVZ4Mm5ENWhKNmFMY0U0b1JxUzdpQic7XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBWMUN1c3RvbUluc3RydWN0aW9uQnVpbGRlcihjb2luQ29uZmlnKTtcbiAgICBidWlsZGVyLnNlbmRlcih1c2VyLnB1Yik7XG4gICAgYnVpbGRlci5ub25jZShyZWNlbnRCbG9ja0hhc2gsIHsgd2FsbGV0Tm9uY2VBZGRyZXNzOiBub25jZUFjY291bnQucHViLCBhdXRoV2FsbGV0QWRkcmVzczogZ2FzVGFuay5wdWIgfSk7XG4gICAgYnVpbGRlci50cmFuc2FjdGlvbkNvbmZpZyh2MUNvbmZpZyk7XG4gICAgYnVpbGRlci5hZGRJbnN0cnVjdGlvbihcbiAgICAgIFN5c3RlbVByb2dyYW0udHJhbnNmZXIoe1xuICAgICAgICBmcm9tUHVia2V5OiBuZXcgUHVibGljS2V5KHVzZXIucHViKSxcbiAgICAgICAgdG9QdWJrZXk6IG5ldyBQdWJsaWNLZXkocmVjaXBpZW50KSxcbiAgICAgICAgbGFtcG9ydHM6IDFfMDAwXzAwMCxcbiAgICAgIH0pXG4gICAgKTtcbiAgICBidWlsZGVyLnNpZ24oeyBrZXk6IHVzZXIucHJ2IH0pO1xuXG4gICAgY29uc3QgdW5zaWduZWQgPSAoYXdhaXQgYnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2FjdGlvbjtcbiAgICBjb25zdCBnYXNUYW5rU2lnID0gc2lnbldpdGgoZ2FzVGFuaywgdW5zaWduZWQudjFNZXNzYWdlQnl0ZXMhKTtcbiAgICBidWlsZGVyLmFkZFNpZ25hdHVyZSh7IHB1YjogZ2FzVGFuay5wdWIgfSwgQnVmZmVyLmZyb20oZ2FzVGFua1NpZykpO1xuICAgIGNvbnN0IHNpZ25lZCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuXG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VXaXJlVHJhbnNhY3Rpb24oc2lnbmVkLnYxVHJhbnNhY3Rpb25CeXRlcyEpO1xuICAgIHBhcnNlZC5zaWduZXJQdWJsaWNLZXlzLnNob3VsZC5kZWVwRXF1YWwoW3VzZXIucHViLCBnYXNUYW5rLnB1Yl0pO1xuICAgIHZlcmlmeVYxU2lnbmF0dXJlcyhwYXJzZWQubWVzc2FnZUJ5dGVzLCBwYXJzZWQuc2lnbmF0dXJlcywgcGFyc2VkLnNpZ25lclB1YmxpY0tleXMpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnVjFUcmFuc2FjdGlvbkJ1aWxkZXIgZW52ZWxvcGUgc3VyZmFjZSAoZnJvbVZlcnNpb25lZERhdGEgKyBTREsgaW5qZWN0b3IpJywgZnVuY3Rpb24gKCkge1xuICBjb25zdCBjb2luQ29uZmlnID0gY29pbnMuZ2V0KCd0c29sJyk7XG4gIGNvbnN0IHVzZXIgPSBuZXcgS2V5UGFpcih0ZXN0RGF0YS5hdXRoQWNjb3VudCkuZ2V0S2V5cygpO1xuICBjb25zdCBnYXNUYW5rID0gbmV3IEtleVBhaXIoeyBwcnY6IHRlc3REYXRhLnBydktleXMucHJ2S2V5MS5iYXNlNTggfSkuZ2V0S2V5cygpO1xuICBjb25zdCBub25jZUFjY291bnQgPSBuZXcgS2V5UGFpcih0ZXN0RGF0YS5ub25jZUFjY291bnQpLmdldEtleXMoKTtcbiAgY29uc3QgcmVjZW50QmxvY2tIYXNoID0gJ0dIdFhRQnNvWkhWbk5GYTlZZXZBekZyMTdESmpnSFhrM3ljVEtENXhEM1ppJztcblxuICBjb25zdCBlbnZlbG9wZTogU29sVmVyc2lvbmVkVHJhbnNhY3Rpb25EYXRhID0ge1xuICAgIHZlcnNpb246IDEsXG4gICAgdmVyc2lvbmVkSW5zdHJ1Y3Rpb25zOiBbXG4gICAgICB7IHByb2dyYW1JZEluZGV4OiAxLCBhY2NvdW50S2V5SW5kZXhlczogWzAsIDFdLCBkYXRhOiAnMlV6SE0nIH0sIC8vIGJhc2U1OCBvZiAweDAxMDAwMDAwXG4gICAgXSxcbiAgICBhZGRyZXNzTG9va3VwVGFibGVzOiBbXSxcbiAgICBzdGF0aWNBY2NvdW50S2V5czogW3VzZXIucHViLCAnTWVtb1NxNGdxQUJBWEtiOTZxbkg4VHlzTmNXeE15V0NxWGdETEdtZmNIciddLFxuICAgIG1lc3NhZ2VIZWFkZXI6IHsgbnVtUmVxdWlyZWRTaWduYXR1cmVzOiAxLCBudW1SZWFkb25seVNpZ25lZEFjY291bnRzOiAwLCBudW1SZWFkb25seVVuc2lnbmVkQWNjb3VudHM6IDEgfSxcbiAgICB0cmFuc2FjdGlvbkNvbmZpZzoge1xuICAgICAgY29tcHV0ZVVuaXRMaW1pdDogMjAwXzAwMCxcbiAgICAgIGhlYXBTaXplOiAzMl83NjgsXG4gICAgICBsb2FkZWRBY2NvdW50c0RhdGFTaXplTGltaXQ6IG51bGwsXG4gICAgICBwcmlvcml0eUZlZTogbnVsbCxcbiAgICB9LFxuICB9O1xuXG4gIGl0KCdmcm9tVmVyc2lvbmVkRGF0YSBidWlsZHMgdGhlIHNhbWUgdjEgbWVzc2FnZSBhcyBtYW51YWwgYWRkSW5zdHJ1Y3Rpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgZnJvbURhdGEgPSBuZXcgVjFDdXN0b21JbnN0cnVjdGlvbkJ1aWxkZXIoY29pbkNvbmZpZyk7XG4gICAgZnJvbURhdGEuZnJvbVZlcnNpb25lZERhdGEoZW52ZWxvcGUpO1xuICAgIGZyb21EYXRhLm5vbmNlKHJlY2VudEJsb2NrSGFzaCk7XG4gICAgZnJvbURhdGEuc2lnbih7IGtleTogdXNlci5wcnYgfSk7XG4gICAgY29uc3QgYSA9IChhd2FpdCBmcm9tRGF0YS5idWlsZCgpKSBhcyBUcmFuc2FjdGlvbjtcblxuICAgIGNvbnN0IG1hbnVhbCA9IG5ldyBWMUN1c3RvbUluc3RydWN0aW9uQnVpbGRlcihjb2luQ29uZmlnKTtcbiAgICBtYW51YWwuc2VuZGVyKHVzZXIucHViKTtcbiAgICBtYW51YWwubm9uY2UocmVjZW50QmxvY2tIYXNoKTtcbiAgICBtYW51YWwudHJhbnNhY3Rpb25Db25maWcoeyBjb21wdXRlVW5pdExpbWl0OiAyMDBfMDAwLCBoZWFwU2l6ZTogMzJfNzY4IH0pO1xuICAgIGZvciAoY29uc3QgaXggb2YgZW52ZWxvcGUudmVyc2lvbmVkSW5zdHJ1Y3Rpb25zKSB7XG4gICAgICBtYW51YWwuYWRkSW5zdHJ1Y3Rpb24odG9WMVRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb24oaXgsIGVudmVsb3BlKSk7XG4gICAgfVxuICAgIG1hbnVhbC5zaWduKHsga2V5OiB1c2VyLnBydiB9KTtcbiAgICBjb25zdCBiID0gKGF3YWl0IG1hbnVhbC5idWlsZCgpKSBhcyBUcmFuc2FjdGlvbjtcblxuICAgIGEudjFNZXNzYWdlQnl0ZXMhLnNob3VsZC5kZWVwRXF1YWwoYi52MU1lc3NhZ2VCeXRlcyEpO1xuICB9KTtcblxuICBpdCgnU0RLIGluamVjdFYxTm9uY2VBZHZhbmNlSW5zdHJ1Y3Rpb24gZ3Jvd3MgdGhlIGhlYWRlciBhbmQgcHJvbW90ZXMgdGhlIGF1dGhvcml0eScsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBpbmplY3RlZCA9IGluamVjdFYxTm9uY2VBZHZhbmNlSW5zdHJ1Y3Rpb24oZW52ZWxvcGUsIHtcbiAgICAgIHdhbGxldE5vbmNlQWRkcmVzczogbm9uY2VBY2NvdW50LnB1YixcbiAgICAgIGF1dGhXYWxsZXRBZGRyZXNzOiBnYXNUYW5rLnB1YixcbiAgICB9KTtcbiAgICBpbmplY3RlZC5tZXNzYWdlSGVhZGVyLm51bVJlcXVpcmVkU2lnbmF0dXJlcy5zaG91bGQuZXF1YWwoMik7XG4gICAgaW5qZWN0ZWQubWVzc2FnZUhlYWRlci5udW1SZWFkb25seVNpZ25lZEFjY291bnRzLnNob3VsZC5lcXVhbCgxKTtcbiAgICBpbmplY3RlZC5tZXNzYWdlSGVhZGVyLm51bVJlYWRvbmx5VW5zaWduZWRBY2NvdW50cy5zaG91bGQuZXF1YWwoMyk7XG4gICAgY29uc3Qgbm9uY2VJeCA9IGluamVjdGVkLnZlcnNpb25lZEluc3RydWN0aW9uc1swXTtcbiAgICBpbmplY3RlZC5zdGF0aWNBY2NvdW50S2V5c1tub25jZUl4LnByb2dyYW1JZEluZGV4XS5zaG91bGQuZXF1YWwoU3lzdGVtUHJvZ3JhbS5wcm9ncmFtSWQudG9CYXNlNTgoKSk7XG4gICAgQnVmZmVyLmZyb20oYmFzZTU4LmRlY29kZShub25jZUl4LmRhdGEpKVxuICAgICAgLmVxdWFscyhCdWZmZXIuZnJvbShbNCwgMCwgMCwgMF0pKVxuICAgICAgLnNob3VsZC5iZS50cnVlKCk7XG5cbiAgICAvLyBpZGVtcG90ZW50IG9uIGEgc2Vjb25kIHBhc3NcbiAgICBjb25zdCB0d2ljZSA9IGluamVjdFYxTm9uY2VBZHZhbmNlSW5zdHJ1Y3Rpb24oaW5qZWN0ZWQsIHtcbiAgICAgIHdhbGxldE5vbmNlQWRkcmVzczogbm9uY2VBY2NvdW50LnB1YixcbiAgICAgIGF1dGhXYWxsZXRBZGRyZXNzOiBnYXNUYW5rLnB1YixcbiAgICB9KTtcbiAgICB0d2ljZS52ZXJzaW9uZWRJbnN0cnVjdGlvbnMubGVuZ3RoLnNob3VsZC5lcXVhbChpbmplY3RlZC52ZXJzaW9uZWRJbnN0cnVjdGlvbnMubGVuZ3RoKTtcbiAgfSk7XG5cbiAgaXQoJ3RyYW5zYWN0aW9uQ29uZmlnIGNvZXJjZXMgdW5zZXQgZmllbGRzIHRvIG51bGwgKFNESyBzZXJpYWxpemVyIGNvbnRyYWN0KScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBidWlsZGVyID0gbmV3IFYxQ3VzdG9tSW5zdHJ1Y3Rpb25CdWlsZGVyKGNvaW5Db25maWcpO1xuICAgIGJ1aWxkZXIuZnJvbVZlcnNpb25lZERhdGEoZW52ZWxvcGUpO1xuICAgIGJ1aWxkZXIubm9uY2UocmVjZW50QmxvY2tIYXNoKTtcbiAgICBidWlsZGVyLnRyYW5zYWN0aW9uQ29uZmlnKHsgY29tcHV0ZVVuaXRMaW1pdDogMjAwXzAwMCB9KTtcbiAgICBjb25zdCB0eCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuICAgIGNvbnN0IGRlY29kZWQgPSBkZWNvZGVWMU1lc3NhZ2UodHgudjFNZXNzYWdlQnl0ZXMhKTtcbiAgICBkZWNvZGVkLmNvbmZpZ1ZhbHVlcy5zb21lKCh2KSA9PiB2LmtpbmQgPT09ICd1MzInICYmIHYudmFsdWUgPT09IDIwMF8wMDApLnNob3VsZC5iZS50cnVlKCk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walletInitBuilder.d.ts","sourceRoot":"","sources":["../../../../../test/unit/transactionBuilder/walletInitBuilder.ts"],"names":[],"mappings":""}