@bitgo-beta/sdk-coin-sol 7.6.4-beta.31 → 7.6.4-beta.310

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 (395) hide show
  1. package/dist/cjs/src/bigint-buffer-guard.d.ts.map +1 -0
  2. package/dist/cjs/src/bigint-buffer-guard.js +29 -0
  3. package/dist/cjs/src/config/token2022StaticConfig.d.ts.map +1 -0
  4. package/dist/cjs/src/config/token2022StaticConfig.js +50 -0
  5. package/dist/cjs/src/index.d.ts.map +1 -0
  6. package/dist/{src → cjs/src}/index.js +1 -1
  7. package/dist/cjs/src/lib/ataInitializationBuilder.d.ts.map +1 -0
  8. package/dist/cjs/src/lib/ataInitializationBuilder.js +196 -0
  9. package/dist/cjs/src/lib/closeAtaBuilder.d.ts.map +1 -0
  10. package/dist/cjs/src/lib/closeAtaBuilder.js +69 -0
  11. package/dist/{src → cjs/src}/lib/constants.d.ts +24 -0
  12. package/dist/cjs/src/lib/constants.d.ts.map +1 -0
  13. package/dist/cjs/src/lib/constants.js +196 -0
  14. package/dist/cjs/src/lib/customInstructionBuilder.d.ts.map +1 -0
  15. package/dist/cjs/src/lib/customInstructionBuilder.js +289 -0
  16. package/dist/cjs/src/lib/explainTransactionWasm.d.ts +21 -0
  17. package/dist/cjs/src/lib/explainTransactionWasm.d.ts.map +1 -0
  18. package/dist/cjs/src/lib/explainTransactionWasm.js +264 -0
  19. package/dist/{src → cjs/src}/lib/iface.d.ts +20 -2
  20. package/dist/cjs/src/lib/iface.d.ts.map +1 -0
  21. package/dist/cjs/src/lib/iface.js +7 -0
  22. package/dist/{src → cjs/src}/lib/index.d.ts +1 -0
  23. package/dist/cjs/src/lib/index.d.ts.map +1 -0
  24. package/dist/{src → cjs/src}/lib/index.js +4 -2
  25. package/dist/{src → cjs/src}/lib/instructionParamsFactory.d.ts +1 -0
  26. package/dist/cjs/src/lib/instructionParamsFactory.d.ts.map +1 -0
  27. package/dist/cjs/src/lib/instructionParamsFactory.js +1059 -0
  28. package/dist/cjs/src/lib/jitoStakePoolOperations.d.ts.map +1 -0
  29. package/dist/cjs/src/lib/jitoStakePoolOperations.js +200 -0
  30. package/dist/cjs/src/lib/keyPair.d.ts.map +1 -0
  31. package/dist/cjs/src/lib/keyPair.js +63 -0
  32. package/dist/cjs/src/lib/messages/index.d.ts.map +1 -0
  33. package/dist/{src → cjs/src}/lib/messages/index.js +1 -1
  34. package/dist/cjs/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
  35. package/dist/cjs/src/lib/messages/messageBuilderFactory.js +19 -0
  36. package/dist/cjs/src/lib/recoverNestedAtaBuilder.d.ts +25 -0
  37. package/dist/cjs/src/lib/recoverNestedAtaBuilder.d.ts.map +1 -0
  38. package/dist/cjs/src/lib/recoverNestedAtaBuilder.js +90 -0
  39. package/dist/cjs/src/lib/solInstructionFactory.d.ts.map +1 -0
  40. package/dist/cjs/src/lib/solInstructionFactory.js +595 -0
  41. package/dist/cjs/src/lib/stakingActivateBuilder.d.ts.map +1 -0
  42. package/dist/cjs/src/lib/stakingActivateBuilder.js +120 -0
  43. package/dist/cjs/src/lib/stakingAuthorizeBuilder.d.ts.map +1 -0
  44. package/dist/cjs/src/lib/stakingAuthorizeBuilder.js +89 -0
  45. package/dist/cjs/src/lib/stakingDeactivateBuilder.d.ts.map +1 -0
  46. package/dist/cjs/src/lib/stakingDeactivateBuilder.js +208 -0
  47. package/dist/cjs/src/lib/stakingDelegateBuilder.d.ts.map +1 -0
  48. package/dist/cjs/src/lib/stakingDelegateBuilder.js +120 -0
  49. package/dist/cjs/src/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
  50. package/dist/cjs/src/lib/stakingRawMsgAuthorizeBuilder.js +110 -0
  51. package/dist/cjs/src/lib/stakingWithdrawBuilder.d.ts.map +1 -0
  52. package/dist/cjs/src/lib/stakingWithdrawBuilder.js +78 -0
  53. package/dist/cjs/src/lib/token2022Config.d.ts.map +1 -0
  54. package/dist/cjs/src/lib/token2022Config.js +27 -0
  55. package/dist/cjs/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  56. package/dist/cjs/src/lib/tokenTransferBuilder.js +188 -0
  57. package/dist/cjs/src/lib/transaction.d.ts.map +1 -0
  58. package/dist/cjs/src/lib/transaction.js +612 -0
  59. package/dist/cjs/src/lib/transactionBuilder.d.ts.map +1 -0
  60. package/dist/cjs/src/lib/transactionBuilder.js +380 -0
  61. package/dist/{src → cjs/src}/lib/transactionBuilderFactory.d.ts +5 -0
  62. package/dist/cjs/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  63. package/dist/cjs/src/lib/transactionBuilderFactory.js +209 -0
  64. package/dist/cjs/src/lib/transferBuilder.d.ts.map +1 -0
  65. package/dist/cjs/src/lib/transferBuilder.js +70 -0
  66. package/dist/cjs/src/lib/transferBuilderV2.d.ts.map +1 -0
  67. package/dist/cjs/src/lib/transferBuilderV2.js +210 -0
  68. package/dist/cjs/src/lib/utils.d.ts.map +1 -0
  69. package/dist/cjs/src/lib/utils.js +595 -0
  70. package/dist/cjs/src/lib/walletInitializationBuilder.d.ts.map +1 -0
  71. package/dist/cjs/src/lib/walletInitializationBuilder.js +71 -0
  72. package/dist/cjs/src/register.d.ts.map +1 -0
  73. package/dist/cjs/src/register.js +15 -0
  74. package/dist/{src → cjs/src}/sol.d.ts +40 -0
  75. package/dist/cjs/src/sol.d.ts.map +1 -0
  76. package/dist/cjs/src/sol.js +1402 -0
  77. package/dist/cjs/src/solToken.d.ts.map +1 -0
  78. package/dist/cjs/src/solToken.js +69 -0
  79. package/dist/cjs/src/tsol.d.ts.map +1 -0
  80. package/dist/cjs/src/tsol.js +24 -0
  81. package/dist/{test → cjs/test}/fixtures/sol.d.ts.map +1 -1
  82. package/dist/cjs/test/fixtures/sol.js +1433 -0
  83. package/dist/{test → cjs/test}/resources/sol.d.ts +27 -27
  84. package/dist/cjs/test/resources/sol.d.ts.map +1 -0
  85. package/dist/cjs/test/resources/sol.js +320 -0
  86. package/dist/cjs/test/unit/explainTransactionWasm.d.ts +5 -0
  87. package/dist/cjs/test/unit/explainTransactionWasm.d.ts.map +1 -0
  88. package/dist/cjs/test/unit/explainTransactionWasm.js +26 -0
  89. package/dist/cjs/test/unit/fixtures/solBackupKey.d.ts.map +1 -0
  90. package/dist/cjs/test/unit/fixtures/solBackupKey.js +8 -0
  91. package/dist/cjs/test/unit/getBuilderFactory.d.ts.map +1 -0
  92. package/dist/cjs/test/unit/getBuilderFactory.js +10 -0
  93. package/dist/cjs/test/unit/instructionParamsFactory.d.ts.map +1 -0
  94. package/dist/cjs/test/unit/instructionParamsFactory.js +412 -0
  95. package/dist/cjs/test/unit/instructionParamsFactory.staking.d.ts.map +1 -0
  96. package/dist/cjs/test/unit/instructionParamsFactory.staking.js +1059 -0
  97. package/dist/cjs/test/unit/jitoWasmVerification.d.ts +2 -0
  98. package/dist/cjs/test/unit/jitoWasmVerification.d.ts.map +1 -0
  99. package/dist/cjs/test/unit/jitoWasmVerification.js +78 -0
  100. package/dist/{test → cjs/test}/unit/keyPair.d.ts.map +1 -1
  101. package/dist/cjs/test/unit/keyPair.js +177 -0
  102. package/dist/cjs/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
  103. package/dist/cjs/test/unit/messages/messageBuilderFactory.js +118 -0
  104. package/dist/cjs/test/unit/messages/simpleMessageBuilder.d.ts.map +1 -0
  105. package/dist/cjs/test/unit/messages/simpleMessageBuilder.js +194 -0
  106. package/dist/{test → cjs/test}/unit/sol.d.ts.map +1 -1
  107. package/dist/cjs/test/unit/sol.js +3326 -0
  108. package/dist/cjs/test/unit/solInstructionFactory.d.ts.map +1 -0
  109. package/dist/cjs/test/unit/solInstructionFactory.js +454 -0
  110. package/dist/cjs/test/unit/solToken.d.ts.map +1 -0
  111. package/dist/cjs/test/unit/solToken.js +31 -0
  112. package/dist/cjs/test/unit/transaction.d.ts.map +1 -0
  113. package/dist/cjs/test/unit/transaction.js +1108 -0
  114. package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +1 -0
  115. package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.js +202 -0
  116. package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +1 -0
  117. package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.js +471 -0
  118. package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +1 -0
  119. package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.js +413 -0
  120. package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +1 -0
  121. package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.js +430 -0
  122. package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +1 -0
  123. package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +157 -0
  124. package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +1 -0
  125. package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.js +384 -0
  126. package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +1 -0
  127. package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.js +224 -0
  128. package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
  129. package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +259 -0
  130. package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  131. package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.js +787 -0
  132. package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  133. package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.js +495 -0
  134. package/dist/cjs/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  135. package/dist/cjs/test/unit/transactionBuilder/transferBuilder.js +286 -0
  136. package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +1 -0
  137. package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.js +862 -0
  138. package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +1 -0
  139. package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.js +259 -0
  140. package/dist/{test → cjs/test}/unit/utils.d.ts.map +1 -1
  141. package/dist/cjs/test/unit/utils.js +517 -0
  142. package/dist/cjs/test/unit/versionedTransaction.d.ts.map +1 -0
  143. package/dist/cjs/test/unit/versionedTransaction.js +207 -0
  144. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  145. package/dist/esm/bigint-buffer-guard.d.ts +1 -0
  146. package/dist/esm/config/token2022StaticConfig.d.ts +3 -0
  147. package/dist/esm/config/token2022StaticConfig.js +47 -0
  148. package/dist/esm/index.d.ts +7 -0
  149. package/dist/esm/index.js +7 -0
  150. package/dist/esm/lib/ataInitializationBuilder.d.ts +47 -0
  151. package/dist/esm/lib/ataInitializationBuilder.js +156 -0
  152. package/dist/esm/lib/closeAtaBuilder.d.ts +19 -0
  153. package/dist/esm/lib/closeAtaBuilder.js +62 -0
  154. package/dist/esm/lib/constants.d.ts +164 -0
  155. package/dist/esm/lib/constants.d.ts.map +1 -0
  156. package/dist/esm/lib/constants.js +193 -0
  157. package/dist/esm/lib/customInstructionBuilder.d.ts +72 -0
  158. package/dist/esm/lib/customInstructionBuilder.js +282 -0
  159. package/dist/esm/lib/explainTransactionWasm.d.ts +21 -0
  160. package/dist/esm/lib/explainTransactionWasm.d.ts.map +1 -0
  161. package/dist/esm/lib/explainTransactionWasm.js +261 -0
  162. package/dist/esm/lib/iface.d.ts +262 -0
  163. package/dist/esm/lib/iface.d.ts.map +1 -0
  164. package/dist/esm/lib/iface.js +3 -0
  165. package/dist/esm/lib/index.d.ts +23 -0
  166. package/dist/{src → esm}/lib/index.d.ts.map +1 -1
  167. package/dist/esm/lib/index.js +23 -0
  168. package/dist/esm/lib/instructionParamsFactory.d.ts +13 -0
  169. package/dist/{src → esm}/lib/instructionParamsFactory.d.ts.map +1 -1
  170. package/dist/esm/lib/instructionParamsFactory.js +1052 -0
  171. package/dist/esm/lib/jitoStakePoolOperations.d.ts +113 -0
  172. package/dist/esm/lib/jitoStakePoolOperations.js +189 -0
  173. package/dist/esm/lib/keyPair.d.ts +26 -0
  174. package/dist/esm/lib/keyPair.js +59 -0
  175. package/dist/esm/lib/messages/index.d.ts +2 -0
  176. package/dist/esm/lib/messages/index.js +2 -0
  177. package/dist/esm/lib/messages/messageBuilderFactory.d.ts +7 -0
  178. package/dist/{src → esm}/lib/messages/messageBuilderFactory.js +5 -9
  179. package/dist/esm/lib/recoverNestedAtaBuilder.d.ts +25 -0
  180. package/dist/esm/lib/recoverNestedAtaBuilder.d.ts.map +1 -0
  181. package/dist/esm/lib/recoverNestedAtaBuilder.js +83 -0
  182. package/dist/esm/lib/solInstructionFactory.d.ts +10 -0
  183. package/dist/esm/lib/solInstructionFactory.d.ts.map +1 -0
  184. package/dist/esm/lib/solInstructionFactory.js +589 -0
  185. package/dist/esm/lib/stakingActivateBuilder.d.ts +59 -0
  186. package/dist/esm/lib/stakingActivateBuilder.js +113 -0
  187. package/dist/esm/lib/stakingAuthorizeBuilder.d.ts +43 -0
  188. package/dist/esm/lib/stakingAuthorizeBuilder.js +82 -0
  189. package/dist/esm/lib/stakingDeactivateBuilder.d.ts +81 -0
  190. package/dist/{src → esm}/lib/stakingDeactivateBuilder.js +31 -38
  191. package/dist/esm/lib/stakingDelegateBuilder.d.ts +42 -0
  192. package/dist/esm/lib/stakingDelegateBuilder.js +113 -0
  193. package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.d.ts +33 -0
  194. package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.js +103 -0
  195. package/dist/esm/lib/stakingWithdrawBuilder.d.ts +31 -0
  196. package/dist/esm/lib/stakingWithdrawBuilder.js +71 -0
  197. package/dist/esm/lib/token2022Config.d.ts +44 -0
  198. package/dist/esm/lib/token2022Config.js +23 -0
  199. package/dist/esm/lib/tokenTransferBuilder.d.ts +41 -0
  200. package/dist/esm/lib/tokenTransferBuilder.js +181 -0
  201. package/dist/esm/lib/transaction.d.ts +103 -0
  202. package/dist/esm/lib/transaction.d.ts.map +1 -0
  203. package/dist/esm/lib/transaction.js +605 -0
  204. package/dist/esm/lib/transactionBuilder.d.ts +128 -0
  205. package/dist/esm/lib/transactionBuilder.js +373 -0
  206. package/dist/esm/lib/transactionBuilderFactory.d.ts +120 -0
  207. package/dist/esm/lib/transactionBuilderFactory.d.ts.map +1 -0
  208. package/dist/esm/lib/transactionBuilderFactory.js +205 -0
  209. package/dist/esm/lib/transferBuilder.d.ts +26 -0
  210. package/dist/esm/lib/transferBuilder.js +63 -0
  211. package/dist/esm/lib/transferBuilderV2.d.ts +43 -0
  212. package/dist/esm/lib/transferBuilderV2.js +203 -0
  213. package/dist/esm/lib/utils.d.ts +200 -0
  214. package/dist/{src → esm}/lib/utils.d.ts.map +1 -1
  215. package/dist/esm/lib/utils.js +558 -0
  216. package/dist/esm/lib/walletInitializationBuilder.d.ts +26 -0
  217. package/dist/esm/lib/walletInitializationBuilder.js +64 -0
  218. package/dist/esm/register.d.ts +3 -0
  219. package/dist/esm/register.js +11 -0
  220. package/dist/esm/sol.d.ts +267 -0
  221. package/dist/esm/sol.d.ts.map +1 -0
  222. package/dist/esm/sol.js +1361 -0
  223. package/dist/esm/solToken.d.ts +37 -0
  224. package/dist/esm/solToken.js +65 -0
  225. package/dist/esm/tsol.d.ts +11 -0
  226. package/dist/esm/tsol.js +20 -0
  227. package/package.json +34 -15
  228. package/dist/src/config/token2022StaticConfig.js +0 -50
  229. package/dist/src/lib/ataInitializationBuilder.js +0 -196
  230. package/dist/src/lib/closeAtaBuilder.js +0 -69
  231. package/dist/src/lib/constants.d.ts.map +0 -1
  232. package/dist/src/lib/constants.js +0 -171
  233. package/dist/src/lib/customInstructionBuilder.js +0 -289
  234. package/dist/src/lib/iface.d.ts.map +0 -1
  235. package/dist/src/lib/iface.js +0 -7
  236. package/dist/src/lib/instructionParamsFactory.js +0 -1036
  237. package/dist/src/lib/jitoStakePoolOperations.js +0 -200
  238. package/dist/src/lib/keyPair.js +0 -63
  239. package/dist/src/lib/solInstructionFactory.d.ts.map +0 -1
  240. package/dist/src/lib/solInstructionFactory.js +0 -572
  241. package/dist/src/lib/stakingActivateBuilder.js +0 -120
  242. package/dist/src/lib/stakingAuthorizeBuilder.js +0 -89
  243. package/dist/src/lib/stakingDelegateBuilder.js +0 -120
  244. package/dist/src/lib/stakingRawMsgAuthorizeBuilder.js +0 -110
  245. package/dist/src/lib/stakingWithdrawBuilder.js +0 -78
  246. package/dist/src/lib/token2022Config.js +0 -27
  247. package/dist/src/lib/tokenTransferBuilder.js +0 -188
  248. package/dist/src/lib/transaction.d.ts.map +0 -1
  249. package/dist/src/lib/transaction.js +0 -595
  250. package/dist/src/lib/transactionBuilder.js +0 -380
  251. package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
  252. package/dist/src/lib/transactionBuilderFactory.js +0 -202
  253. package/dist/src/lib/transferBuilder.js +0 -70
  254. package/dist/src/lib/transferBuilderV2.js +0 -210
  255. package/dist/src/lib/utils.js +0 -589
  256. package/dist/src/lib/walletInitializationBuilder.js +0 -71
  257. package/dist/src/register.js +0 -15
  258. package/dist/src/sol.d.ts.map +0 -1
  259. package/dist/src/sol.js +0 -1285
  260. package/dist/src/solToken.js +0 -69
  261. package/dist/src/tsol.js +0 -24
  262. package/dist/test/fixtures/sol.js +0 -1433
  263. package/dist/test/resources/sol.d.ts.map +0 -1
  264. package/dist/test/resources/sol.js +0 -320
  265. package/dist/test/unit/fixtures/solBackupKey.d.ts.map +0 -1
  266. package/dist/test/unit/fixtures/solBackupKey.js +0 -8
  267. package/dist/test/unit/getBuilderFactory.d.ts.map +0 -1
  268. package/dist/test/unit/getBuilderFactory.js +0 -10
  269. package/dist/test/unit/instructionParamsFactory.d.ts.map +0 -1
  270. package/dist/test/unit/instructionParamsFactory.js +0 -412
  271. package/dist/test/unit/instructionParamsFactory.staking.d.ts.map +0 -1
  272. package/dist/test/unit/instructionParamsFactory.staking.js +0 -1059
  273. package/dist/test/unit/keyPair.js +0 -177
  274. package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +0 -1
  275. package/dist/test/unit/messages/messageBuilderFactory.js +0 -118
  276. package/dist/test/unit/messages/simpleMessageBuilder.d.ts.map +0 -1
  277. package/dist/test/unit/messages/simpleMessageBuilder.js +0 -194
  278. package/dist/test/unit/sol.js +0 -3108
  279. package/dist/test/unit/solInstructionFactory.d.ts.map +0 -1
  280. package/dist/test/unit/solInstructionFactory.js +0 -454
  281. package/dist/test/unit/solToken.d.ts.map +0 -1
  282. package/dist/test/unit/solToken.js +0 -31
  283. package/dist/test/unit/transaction.d.ts.map +0 -1
  284. package/dist/test/unit/transaction.js +0 -983
  285. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +0 -1
  286. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.js +0 -202
  287. package/dist/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +0 -1
  288. package/dist/test/unit/transactionBuilder/ataInitBuilder.js +0 -471
  289. package/dist/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +0 -1
  290. package/dist/test/unit/transactionBuilder/customInstructionBuilder.js +0 -413
  291. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +0 -1
  292. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.js +0 -430
  293. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +0 -1
  294. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +0 -157
  295. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +0 -1
  296. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.js +0 -384
  297. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +0 -1
  298. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.js +0 -224
  299. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -1
  300. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +0 -259
  301. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +0 -1
  302. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +0 -787
  303. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +0 -1
  304. package/dist/test/unit/transactionBuilder/transactionBuilder.js +0 -495
  305. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +0 -1
  306. package/dist/test/unit/transactionBuilder/transferBuilder.js +0 -286
  307. package/dist/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +0 -1
  308. package/dist/test/unit/transactionBuilder/transferBuilderV2.js +0 -862
  309. package/dist/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +0 -1
  310. package/dist/test/unit/transactionBuilder/walletInitBuilder.js +0 -259
  311. package/dist/test/unit/utils.js +0 -517
  312. package/dist/test/unit/versionedTransaction.d.ts.map +0 -1
  313. package/dist/test/unit/versionedTransaction.js +0 -207
  314. package/dist/tsconfig.tsbuildinfo +0 -1
  315. /package/dist/{src → cjs/src}/bigint-buffer-guard.d.ts +0 -0
  316. /package/dist/{src → cjs/src}/config/token2022StaticConfig.d.ts +0 -0
  317. /package/dist/{src → cjs/src}/index.d.ts +0 -0
  318. /package/dist/{src → cjs/src}/lib/ataInitializationBuilder.d.ts +0 -0
  319. /package/dist/{src → cjs/src}/lib/closeAtaBuilder.d.ts +0 -0
  320. /package/dist/{src → cjs/src}/lib/customInstructionBuilder.d.ts +0 -0
  321. /package/dist/{src → cjs/src}/lib/jitoStakePoolOperations.d.ts +0 -0
  322. /package/dist/{src → cjs/src}/lib/keyPair.d.ts +0 -0
  323. /package/dist/{src → cjs/src}/lib/messages/index.d.ts +0 -0
  324. /package/dist/{src → cjs/src}/lib/messages/messageBuilderFactory.d.ts +0 -0
  325. /package/dist/{src → cjs/src}/lib/solInstructionFactory.d.ts +0 -0
  326. /package/dist/{src → cjs/src}/lib/stakingActivateBuilder.d.ts +0 -0
  327. /package/dist/{src → cjs/src}/lib/stakingAuthorizeBuilder.d.ts +0 -0
  328. /package/dist/{src → cjs/src}/lib/stakingDeactivateBuilder.d.ts +0 -0
  329. /package/dist/{src → cjs/src}/lib/stakingDelegateBuilder.d.ts +0 -0
  330. /package/dist/{src → cjs/src}/lib/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
  331. /package/dist/{src → cjs/src}/lib/stakingWithdrawBuilder.d.ts +0 -0
  332. /package/dist/{src → cjs/src}/lib/token2022Config.d.ts +0 -0
  333. /package/dist/{src → cjs/src}/lib/tokenTransferBuilder.d.ts +0 -0
  334. /package/dist/{src → cjs/src}/lib/transaction.d.ts +0 -0
  335. /package/dist/{src → cjs/src}/lib/transactionBuilder.d.ts +0 -0
  336. /package/dist/{src → cjs/src}/lib/transferBuilder.d.ts +0 -0
  337. /package/dist/{src → cjs/src}/lib/transferBuilderV2.d.ts +0 -0
  338. /package/dist/{src → cjs/src}/lib/utils.d.ts +0 -0
  339. /package/dist/{src → cjs/src}/lib/walletInitializationBuilder.d.ts +0 -0
  340. /package/dist/{src → cjs/src}/register.d.ts +0 -0
  341. /package/dist/{src → cjs/src}/solToken.d.ts +0 -0
  342. /package/dist/{src → cjs/src}/tsol.d.ts +0 -0
  343. /package/dist/{test → cjs/test}/fixtures/sol.d.ts +0 -0
  344. /package/dist/{test → cjs/test}/unit/fixtures/solBackupKey.d.ts +0 -0
  345. /package/dist/{test → cjs/test}/unit/getBuilderFactory.d.ts +0 -0
  346. /package/dist/{test → cjs/test}/unit/instructionParamsFactory.d.ts +0 -0
  347. /package/dist/{test → cjs/test}/unit/instructionParamsFactory.staking.d.ts +0 -0
  348. /package/dist/{test → cjs/test}/unit/keyPair.d.ts +0 -0
  349. /package/dist/{test → cjs/test}/unit/messages/messageBuilderFactory.d.ts +0 -0
  350. /package/dist/{test → cjs/test}/unit/messages/simpleMessageBuilder.d.ts +0 -0
  351. /package/dist/{test → cjs/test}/unit/sol.d.ts +0 -0
  352. /package/dist/{test → cjs/test}/unit/solInstructionFactory.d.ts +0 -0
  353. /package/dist/{test → cjs/test}/unit/solToken.d.ts +0 -0
  354. /package/dist/{test → cjs/test}/unit/transaction.d.ts +0 -0
  355. /package/dist/{test → cjs/test}/unit/transactionBuilder/StakingWithdrawBuilder.d.ts +0 -0
  356. /package/dist/{test → cjs/test}/unit/transactionBuilder/ataInitBuilder.d.ts +0 -0
  357. /package/dist/{test → cjs/test}/unit/transactionBuilder/customInstructionBuilder.d.ts +0 -0
  358. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingActivateBuilder.d.ts +0 -0
  359. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts +0 -0
  360. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDeactivateBuilder.d.ts +0 -0
  361. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDelegateBuilder.d.ts +0 -0
  362. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
  363. /package/dist/{test → cjs/test}/unit/transactionBuilder/tokenTransferBuilder.d.ts +0 -0
  364. /package/dist/{test → cjs/test}/unit/transactionBuilder/transactionBuilder.d.ts +0 -0
  365. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilder.d.ts +0 -0
  366. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilderV2.d.ts +0 -0
  367. /package/dist/{test → cjs/test}/unit/transactionBuilder/walletInitBuilder.d.ts +0 -0
  368. /package/dist/{test → cjs/test}/unit/utils.d.ts +0 -0
  369. /package/dist/{test → cjs/test}/unit/versionedTransaction.d.ts +0 -0
  370. /package/dist/{src → esm}/bigint-buffer-guard.d.ts.map +0 -0
  371. /package/dist/{src → esm}/bigint-buffer-guard.js +0 -0
  372. /package/dist/{src → esm}/config/token2022StaticConfig.d.ts.map +0 -0
  373. /package/dist/{src → esm}/index.d.ts.map +0 -0
  374. /package/dist/{src → esm}/lib/ataInitializationBuilder.d.ts.map +0 -0
  375. /package/dist/{src → esm}/lib/closeAtaBuilder.d.ts.map +0 -0
  376. /package/dist/{src → esm}/lib/customInstructionBuilder.d.ts.map +0 -0
  377. /package/dist/{src → esm}/lib/jitoStakePoolOperations.d.ts.map +0 -0
  378. /package/dist/{src → esm}/lib/keyPair.d.ts.map +0 -0
  379. /package/dist/{src → esm}/lib/messages/index.d.ts.map +0 -0
  380. /package/dist/{src → esm}/lib/messages/messageBuilderFactory.d.ts.map +0 -0
  381. /package/dist/{src → esm}/lib/stakingActivateBuilder.d.ts.map +0 -0
  382. /package/dist/{src → esm}/lib/stakingAuthorizeBuilder.d.ts.map +0 -0
  383. /package/dist/{src → esm}/lib/stakingDeactivateBuilder.d.ts.map +0 -0
  384. /package/dist/{src → esm}/lib/stakingDelegateBuilder.d.ts.map +0 -0
  385. /package/dist/{src → esm}/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -0
  386. /package/dist/{src → esm}/lib/stakingWithdrawBuilder.d.ts.map +0 -0
  387. /package/dist/{src → esm}/lib/token2022Config.d.ts.map +0 -0
  388. /package/dist/{src → esm}/lib/tokenTransferBuilder.d.ts.map +0 -0
  389. /package/dist/{src → esm}/lib/transactionBuilder.d.ts.map +0 -0
  390. /package/dist/{src → esm}/lib/transferBuilder.d.ts.map +0 -0
  391. /package/dist/{src → esm}/lib/transferBuilderV2.d.ts.map +0 -0
  392. /package/dist/{src → esm}/lib/walletInitializationBuilder.d.ts.map +0 -0
  393. /package/dist/{src → esm}/register.d.ts.map +0 -0
  394. /package/dist/{src → esm}/solToken.d.ts.map +0 -0
  395. /package/dist/{src → esm}/tsol.d.ts.map +0 -0
@@ -1,430 +0,0 @@
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 testData = __importStar(require("../../resources/sol"));
41
- const getBuilderFactory_1 = require("../getBuilderFactory");
42
- const src_1 = require("../../../src");
43
- const constants_1 = require("../../../src/lib/constants");
44
- const public_types_1 = require("@bitgo/public-types");
45
- describe('Sol Staking Activate Builder', () => {
46
- const factory = (0, getBuilderFactory_1.getBuilderFactory)('tsol');
47
- const stakingBuilder = () => {
48
- const txBuilder = factory.getStakingActivateBuilder();
49
- txBuilder.nonce(recentBlockHash);
50
- txBuilder.sender(wallet.pub);
51
- return txBuilder;
52
- };
53
- // not valid data
54
- const invalidPubKey = testData.pubKeys.invalidPubKeys[0];
55
- const wrongAccount = new src_1.KeyPair({ prv: testData.prvKeys.prvKey1.base58 }).getKeys();
56
- // valid data
57
- const wallet = new src_1.KeyPair(testData.authAccount).getKeys();
58
- const stakeAccount = new src_1.KeyPair(testData.stakeAccount).getKeys();
59
- const validator = testData.validator;
60
- const recentBlockHash = 'GHtXQBsoZHVnNFa9YevAzFr17DJjgHXk3ycTKD5xD3Zi';
61
- const amount = '300000';
62
- const performTest = async ({ signBuilder, knownRawTx, makeUnsignedBuilder, verifyBuiltTransaction, }) => {
63
- // Build transaction
64
- const txBuilder = makeUnsignedBuilder();
65
- const unsignedTx = await txBuilder.build();
66
- const tx = signBuilder ? await signBuilder(txBuilder).build() : unsignedTx;
67
- // Verify built transaction
68
- verifyBuiltTransaction(tx);
69
- // Verify raw transaction
70
- const rawTx = tx.toBroadcastFormat();
71
- should_1.default.equal(src_1.Utils.isValidRawTransaction(rawTx), true);
72
- should_1.default.equal(rawTx, knownRawTx);
73
- // Rebuild transaction and verify
74
- const builderFromRawTx = factory.from(rawTx);
75
- const rebuiltTx = await builderFromRawTx.build();
76
- should_1.default.equal(rebuiltTx.toBroadcastFormat(), unsignedTx.toBroadcastFormat());
77
- should_1.default.equal(rebuiltTx.signablePayload.toString('hex'), unsignedTx.signablePayload.toString('hex'));
78
- should_1.default.deepEqual(rebuiltTx.toJson().instructionsData, tx.toJson().instructionsData);
79
- };
80
- const makeUnsignedBuilderNative = (doMemo) => {
81
- const txBuilder = factory.getStakingActivateBuilder();
82
- txBuilder
83
- .amount(amount)
84
- .sender(wallet.pub)
85
- .stakingAddress(stakeAccount.pub)
86
- .validator(validator.pub)
87
- .nonce(recentBlockHash);
88
- if (doMemo) {
89
- txBuilder.memo('test memo');
90
- }
91
- return txBuilder;
92
- };
93
- const verifyBuiltTransactionNativeOrMarinade = (tx, doMemo, stakingType) => {
94
- const txJson = tx.toJson();
95
- txJson.instructionsData.should.deepEqual([
96
- ...(doMemo
97
- ? [
98
- {
99
- type: 'Memo',
100
- params: {
101
- memo: 'test memo',
102
- },
103
- },
104
- ]
105
- : []),
106
- {
107
- type: 'Activate',
108
- params: {
109
- fromAddress: wallet.pub,
110
- stakingAddress: stakeAccount.pub,
111
- amount: amount,
112
- validator: validator.pub,
113
- stakingType,
114
- },
115
- },
116
- ]);
117
- tx.inputs.should.deepEqual([
118
- {
119
- address: wallet.pub,
120
- value: amount,
121
- coin: 'tsol',
122
- },
123
- ]);
124
- tx.outputs.should.deepEqual([
125
- {
126
- address: stakeAccount.pub,
127
- value: amount,
128
- coin: 'tsol',
129
- },
130
- ]);
131
- };
132
- const signBuilderNativeOrMarinade = (txBuilder) => {
133
- txBuilder.sign({ key: wallet.prv });
134
- txBuilder.sign({ key: stakeAccount.prv });
135
- return txBuilder;
136
- };
137
- const makeUnsignedBuilderMarinade = (doMemo) => {
138
- return makeUnsignedBuilderNative(doMemo).stakingType(public_types_1.SolStakingTypeEnum.MARINADE);
139
- };
140
- const makeUnsignedBuilderJito = (doMemo, doCreateATA) => {
141
- const txBuilder = factory.getStakingActivateBuilder();
142
- txBuilder
143
- .amount(amount)
144
- .sender(wallet.pub)
145
- .stakingAddress(constants_1.JITO_STAKE_POOL_ADDRESS)
146
- .validator(constants_1.JITO_STAKE_POOL_ADDRESS)
147
- .stakingType(public_types_1.SolStakingTypeEnum.JITO)
148
- .extraParams({
149
- stakePoolData: {
150
- managerFeeAccount: testData.JITO_STAKE_POOL_DATA_PARSED.managerFeeAccount.toString(),
151
- poolMint: testData.JITO_STAKE_POOL_DATA_PARSED.poolMint.toString(),
152
- reserveStake: testData.JITO_STAKE_POOL_DATA_PARSED.reserveStake.toString(),
153
- },
154
- createAssociatedTokenAccount: doCreateATA,
155
- })
156
- .nonce(recentBlockHash);
157
- if (doMemo) {
158
- txBuilder.memo('test memo');
159
- }
160
- return txBuilder;
161
- };
162
- const signBuilderJito = (txBuilder) => {
163
- txBuilder.sign({ key: wallet.prv });
164
- return txBuilder;
165
- };
166
- const verifyBuiltTransactionJito = (tx, doMemo, doCreateATA) => {
167
- const txJson = tx.toJson();
168
- const expectedInstructions = [];
169
- if (doCreateATA) {
170
- expectedInstructions.push({
171
- type: constants_1.InstructionBuilderTypes.CreateAssociatedTokenAccount,
172
- params: {
173
- ataAddress: '2vJrx2Bn7PifLZDRaSCpphE9WtZsx1k43SRyiQDhE1As',
174
- mintAddress: constants_1.JITOSOL_MINT_ADDRESS,
175
- ownerAddress: wallet.pub,
176
- payerAddress: wallet.pub,
177
- tokenName: 'sol:jitosol',
178
- },
179
- });
180
- }
181
- if (doMemo) {
182
- expectedInstructions.push({
183
- type: constants_1.InstructionBuilderTypes.Memo,
184
- params: {
185
- memo: 'test memo',
186
- },
187
- });
188
- }
189
- expectedInstructions.push({
190
- type: constants_1.InstructionBuilderTypes.StakingActivate,
191
- params: {
192
- fromAddress: wallet.pub,
193
- stakingAddress: constants_1.JITO_STAKE_POOL_ADDRESS,
194
- amount: amount,
195
- validator: constants_1.JITO_STAKE_POOL_ADDRESS,
196
- stakingType: public_types_1.SolStakingTypeEnum.JITO,
197
- extraParams: {
198
- stakePoolData: {
199
- managerFeeAccount: testData.JITO_STAKE_POOL_DATA_PARSED.managerFeeAccount.toString(),
200
- poolMint: testData.JITO_STAKE_POOL_DATA_PARSED.poolMint.toString(),
201
- reserveStake: testData.JITO_STAKE_POOL_DATA_PARSED.reserveStake.toString(),
202
- },
203
- createAssociatedTokenAccount: doCreateATA,
204
- },
205
- },
206
- });
207
- txJson.instructionsData.should.deepEqual(expectedInstructions);
208
- tx.inputs.should.deepEqual([
209
- {
210
- address: wallet.pub,
211
- value: amount,
212
- coin: 'tsol',
213
- },
214
- ]);
215
- tx.outputs.should.deepEqual([]);
216
- };
217
- describe('Succeed', () => {
218
- describe('Native staking tests', () => {
219
- const performTestNative = async (doMemo, doSign, knownRawTx) => {
220
- await performTest({
221
- signBuilder: doSign ? signBuilderNativeOrMarinade : undefined,
222
- knownRawTx,
223
- makeUnsignedBuilder: () => makeUnsignedBuilderNative(doMemo),
224
- verifyBuiltTransaction: (x) => verifyBuiltTransactionNativeOrMarinade(x, doMemo, public_types_1.SolStakingTypeEnum.NATIVE),
225
- });
226
- };
227
- it('build a create and delegate staking signed tx', async () => performTestNative(false, true, testData.STAKING_ACTIVATE_SIGNED_TX));
228
- it('build a create and delegate staking signed tx with memo', async () => performTestNative(true, true, testData.STAKING_ACTIVATE_SIGNED_TX_WITH_MEMO));
229
- it('build a create and delegate staking unsigned tx', async () => performTestNative(false, false, testData.STAKING_ACTIVATE_UNSIGNED_TX));
230
- it('build a create and delegate staking unsigned tx with memo', async () => performTestNative(true, false, testData.STAKING_ACTIVATE_UNSIGNED_TX_WITH_MEMO));
231
- });
232
- describe('Marinade staking tests', () => {
233
- const performTestMarinade = async (doMemo, doSign, knownRawTx) => {
234
- await performTest({
235
- signBuilder: doSign ? signBuilderNativeOrMarinade : undefined,
236
- knownRawTx,
237
- makeUnsignedBuilder: () => makeUnsignedBuilderMarinade(doMemo),
238
- verifyBuiltTransaction: (x) => verifyBuiltTransactionNativeOrMarinade(x, doMemo, public_types_1.SolStakingTypeEnum.MARINADE),
239
- });
240
- };
241
- it('build a create staking signed tx', async () => performTestMarinade(false, true, testData.MARINADE_STAKING_ACTIVATE_SIGNED_TX));
242
- it('build a create signed tx with memo', async () => performTestMarinade(true, true, testData.MARINADE_STAKING_ACTIVATE_SIGNED_TX_WITH_MEMO));
243
- it('build a create unsigned tx', async () => performTestMarinade(false, false, testData.MARINADE_STAKING_ACTIVATE_UNSIGNED_TX));
244
- it('build a create unsigned tx with memo', async () => performTestMarinade(true, false, testData.MARINADE_STAKING_ACTIVATE_UNSIGNED_TX_WITH_MEMO));
245
- });
246
- describe('Jito staking tests', () => {
247
- const performTestJito = async (doMemo, doSign, doCreateATA, knownRawTx) => {
248
- await performTest({
249
- signBuilder: doSign ? signBuilderJito : undefined,
250
- knownRawTx,
251
- makeUnsignedBuilder: () => makeUnsignedBuilderJito(doMemo, doCreateATA),
252
- verifyBuiltTransaction: (x) => verifyBuiltTransactionJito(x, doMemo, doCreateATA),
253
- });
254
- };
255
- const MEMO = 1;
256
- const SIGN = 2;
257
- const ATA = 4;
258
- const rawTxData = Array.from(new Array(8)).map(() => undefined);
259
- rawTxData[0] = testData.JITO_STAKING_ACTIVATE_UNSIGNED_TX;
260
- rawTxData[MEMO] = testData.JITO_STAKING_ACTIVATE_UNSIGNED_TX_WITH_MEMO;
261
- rawTxData[SIGN] = testData.JITO_STAKING_ACTIVATE_SIGNED_TX;
262
- rawTxData[MEMO + SIGN] = testData.JITO_STAKING_ACTIVATE_SIGNED_TX_WITH_MEMO;
263
- rawTxData[ATA] = testData.JITO_STAKING_ACTIVATE_UNSIGNED_TX_WITH_ATA;
264
- rawTxData[ATA + MEMO] = testData.JITO_STAKING_ACTIVATE_UNSIGNED_TX_WITH_MEMO_WITH_ATA;
265
- rawTxData[ATA + SIGN] = testData.JITO_STAKING_ACTIVATE_SIGNED_TX_WITH_ATA;
266
- rawTxData[ATA + MEMO + SIGN] = testData.JITO_STAKING_ACTIVATE_SIGNED_TX_WITH_MEMO_WITH_ATA;
267
- for (const doMemo of [false, true]) {
268
- for (const doSign of [false, true]) {
269
- for (const doCreateATA of [false, true]) {
270
- it(`build a tx with doMemo=${doMemo}, doSign=${doSign}, doCreateATA=${doCreateATA}`, async () => {
271
- const data = rawTxData[(doMemo ? MEMO : 0) + (doSign ? SIGN : 0) + (doCreateATA ? ATA : 0)];
272
- (0, should_1.default)(data).not.be.undefined();
273
- await performTestJito(doMemo, doSign, doCreateATA, data ?? '');
274
- });
275
- }
276
- }
277
- }
278
- });
279
- });
280
- describe('Fail', () => {
281
- it('for invalid sender address', () => {
282
- const txBuilder = stakingBuilder();
283
- (0, should_1.default)(() => txBuilder.sender(invalidPubKey)).throwError('Invalid or missing sender, got: ' + invalidPubKey);
284
- });
285
- it('for invalid staking address', () => {
286
- const txBuilder = stakingBuilder();
287
- (0, should_1.default)(() => txBuilder.stakingAddress(invalidPubKey)).throwError('Invalid or missing stakingAddress, got: ' + invalidPubKey);
288
- });
289
- it('for invalid validator address', () => {
290
- const txBuilder = stakingBuilder();
291
- (0, should_1.default)(() => txBuilder.validator(invalidPubKey)).throwError('Invalid or missing validator, got: ' + invalidPubKey);
292
- });
293
- it('build a staking activate tx when amount is invalid', () => {
294
- const txBuilder = stakingBuilder();
295
- (0, should_1.default)(() => txBuilder.amount('randomstring')).throwError('Value cannot be zero or less');
296
- });
297
- it('build a staking activate tx when amount is less than zero', () => {
298
- const txBuilder = stakingBuilder();
299
- (0, should_1.default)(() => txBuilder.amount('-1')).throwError('Value cannot be zero or less');
300
- });
301
- it('build a staking activate tx when amount is equal to zero', () => {
302
- const txBuilder = stakingBuilder();
303
- (0, should_1.default)(() => txBuilder.amount('0')).throwError('Value cannot be zero or less');
304
- });
305
- it('build a staking activate tx and sign with an incorrect account', async () => {
306
- const txBuilder = stakingBuilder();
307
- txBuilder.sender(wallet.pub);
308
- txBuilder.stakingAddress(stakeAccount.pub);
309
- txBuilder.validator(validator.pub);
310
- txBuilder.amount(amount);
311
- txBuilder.sign({ key: wrongAccount.prv });
312
- await txBuilder.build().should.rejectedWith('unknown signer: CP5Dpaa42RtJmMuKqCQsLwma5Yh3knuvKsYDFX85F41S');
313
- });
314
- it('build a staking activate tx with the same sender and staking address', async () => {
315
- const txBuilder = stakingBuilder();
316
- txBuilder.sender(wallet.pub);
317
- txBuilder.stakingAddress(wallet.pub);
318
- txBuilder.validator(validator.pub);
319
- txBuilder.amount(amount);
320
- txBuilder.sign({ key: wrongAccount.prv });
321
- await txBuilder.build().should.rejectedWith('Sender address cannot be the same as the Staking address');
322
- });
323
- it('build when nonce is not provided', async () => {
324
- const txBuilder = factory.getStakingActivateBuilder();
325
- txBuilder.sender(wallet.pub);
326
- txBuilder.stakingAddress(stakeAccount.pub);
327
- txBuilder.amount(amount);
328
- txBuilder.validator(validator.pub);
329
- txBuilder.sign({ key: wallet.prv });
330
- await txBuilder.build().should.rejectedWith('Invalid transaction: missing nonce blockhash');
331
- });
332
- it('build when sender is not provided', async () => {
333
- const txBuilder = factory.getStakingActivateBuilder();
334
- txBuilder.stakingAddress(stakeAccount.pub);
335
- txBuilder.amount(amount);
336
- txBuilder.validator(validator.pub);
337
- txBuilder.nonce(recentBlockHash);
338
- txBuilder.sign({ key: wallet.prv });
339
- await txBuilder.build().should.rejectedWith('Invalid transaction: missing sender');
340
- });
341
- it('build when stakingAddress is not provided', async () => {
342
- const txBuilder = factory.getStakingActivateBuilder();
343
- txBuilder.sender(wallet.pub);
344
- txBuilder.amount(amount);
345
- txBuilder.validator(validator.pub);
346
- txBuilder.nonce(recentBlockHash);
347
- txBuilder.sign({ key: wallet.prv });
348
- await txBuilder.build().should.rejectedWith('Staking Address must be set before building the transaction');
349
- });
350
- it('build when validator is not provided', async () => {
351
- const txBuilder = factory.getStakingActivateBuilder();
352
- txBuilder.stakingAddress(stakeAccount.pub);
353
- txBuilder.sender(wallet.pub);
354
- txBuilder.amount(amount);
355
- txBuilder.nonce(recentBlockHash);
356
- txBuilder.sign({ key: wallet.prv });
357
- await txBuilder.build().should.rejectedWith('Validator must be set before building the transaction');
358
- });
359
- it('to sign twice with the same key', () => {
360
- const txBuilder = factory.from(testData.STAKING_ACTIVATE_UNSIGNED_TX);
361
- txBuilder.sign({ key: wallet.prv });
362
- (0, should_1.default)(() => txBuilder.sign({ key: wallet.prv })).throwError('Duplicated signer: ' + wallet.prv?.toString());
363
- });
364
- });
365
- describe('From and sign', () => {
366
- describe('Succeed', () => {
367
- it('build from an unsigned staking activate and sign it', async () => {
368
- const txBuilder = factory.from(testData.STAKING_ACTIVATE_UNSIGNED_TX);
369
- txBuilder.sign({ key: wallet.prv });
370
- txBuilder.sign({ key: stakeAccount.prv });
371
- const tx = await txBuilder.build();
372
- tx.inputs.length.should.equal(1);
373
- tx.inputs[0].should.deepEqual({
374
- address: wallet.pub,
375
- value: amount,
376
- coin: 'tsol',
377
- });
378
- tx.outputs.length.should.equal(1);
379
- const rawTx = tx.toBroadcastFormat();
380
- should_1.default.equal(src_1.Utils.isValidRawTransaction(rawTx), true);
381
- should_1.default.equal(rawTx, testData.STAKING_ACTIVATE_SIGNED_TX);
382
- });
383
- it('Marinade: build from an unsigned staking activate and sign it', async () => {
384
- const txBuilder = factory.from(testData.MARINADE_STAKING_ACTIVATE_UNSIGNED_TX);
385
- txBuilder.sign({ key: wallet.prv });
386
- txBuilder.sign({ key: stakeAccount.prv });
387
- const tx = await txBuilder.build();
388
- tx.inputs.length.should.equal(1);
389
- tx.inputs[0].should.deepEqual({
390
- address: wallet.pub,
391
- value: amount,
392
- coin: 'tsol',
393
- });
394
- tx.outputs.length.should.equal(1);
395
- const rawTx = tx.toBroadcastFormat();
396
- should_1.default.equal(src_1.Utils.isValidRawTransaction(rawTx), true);
397
- should_1.default.equal(rawTx, testData.MARINADE_STAKING_ACTIVATE_SIGNED_TX);
398
- });
399
- it('build from an unsigned staking activate with memo and sign it', async () => {
400
- const txBuilder = factory.from(testData.STAKING_ACTIVATE_UNSIGNED_TX_WITH_MEMO);
401
- txBuilder.sign({ key: wallet.prv });
402
- txBuilder.sign({ key: stakeAccount.prv });
403
- const tx = await txBuilder.build();
404
- tx.inputs.length.should.equal(1);
405
- tx.inputs[0].should.deepEqual({
406
- address: wallet.pub,
407
- value: amount,
408
- coin: 'tsol',
409
- });
410
- tx.outputs.length.should.equal(1);
411
- const rawTx = tx.toBroadcastFormat();
412
- should_1.default.equal(src_1.Utils.isValidRawTransaction(rawTx), true);
413
- should_1.default.equal(rawTx, testData.STAKING_ACTIVATE_SIGNED_TX_WITH_MEMO);
414
- });
415
- });
416
- describe('Fail', () => {
417
- it('build from an unsigned staking activate and fail to sign it', async () => {
418
- const txBuilder = factory.from(testData.STAKING_ACTIVATE_UNSIGNED_TX);
419
- txBuilder.sign({ key: wrongAccount.prv });
420
- await txBuilder.build().should.rejectedWith('unknown signer: CP5Dpaa42RtJmMuKqCQsLwma5Yh3knuvKsYDFX85F41S');
421
- });
422
- it('build from a signed staking activate and fail to sign it', async () => {
423
- const txBuilder = factory.from(testData.STAKING_ACTIVATE_SIGNED_TX);
424
- txBuilder.sign({ key: wrongAccount.prv });
425
- await txBuilder.build().should.rejectedWith('unknown signer: CP5Dpaa42RtJmMuKqCQsLwma5Yh3knuvKsYDFX85F41S');
426
- });
427
- });
428
- });
429
- });
430
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ0FjdGl2YXRlQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvc3Rha2luZ0FjdGl2YXRlQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUU1Qiw4REFBZ0Q7QUFDaEQsNERBQXlEO0FBQ3pELHNDQUFzRTtBQUN0RSwwREFBb0g7QUFDcEgsc0RBQXlEO0FBSXpELFFBQVEsQ0FBQyw4QkFBOEIsRUFBRSxHQUFHLEVBQUU7SUFDNUMsTUFBTSxPQUFPLEdBQUcsSUFBQSxxQ0FBaUIsRUFBQyxNQUFNLENBQUMsQ0FBQztJQUUxQyxNQUFNLGNBQWMsR0FBRyxHQUFHLEVBQUU7UUFDMUIsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDdEQsU0FBUyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDLENBQUM7SUFFRixpQkFBaUI7SUFDakIsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekQsTUFBTSxZQUFZLEdBQUcsSUFBSSxhQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUVyRixhQUFhO0lBQ2IsTUFBTSxNQUFNLEdBQUcsSUFBSSxhQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzNELE1BQU0sWUFBWSxHQUFHLElBQUksYUFBTyxDQUFDLFFB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QUcsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsNEJBQTRCLENBQUMsQ0FBQztnQkFDdEUsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDMUMsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyw4REFBOEQsQ0FBQyxDQUFDO1lBQzlHLENBQUMsQ0FBQyxDQUFDO1lBQ0gsRUFBRSxDQUFDLDBEQUEwRCxFQUFFLEtBQUssSUFBSSxFQUFFO2dCQUN4RSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO2dCQUNwRSxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUMxQyxNQUFNLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLDhEQUE4RCxDQUFDLENBQUM7WUFDOUcsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5cbmltcG9ydCAqIGFzIHRlc3REYXRhIGZyb20gJy4uLy4uL3Jlc291cmNlcy9zb2wnO1xuaW1wb3J0IHsgZ2V0QnVpbGRlckZhY3RvcnkgfSBmcm9tICcuLi9nZXRCdWlsZGVyRmFjdG9yeSc7XG5pbXBvcnQgeyBLZXlQYWlyLCBVdGlscywgU3Rha2luZ0FjdGl2YXRlQnVpbGRlciB9IGZyb20gJy4uLy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcywgSklUT19TVEFLRV9QT09MX0FERFJFU1MsIEpJVE9TT0xfTUlOVF9BRERSRVNTIH0gZnJvbSAnLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgU29sU3Rha2luZ1R5cGVFbnVtIH0gZnJvbSAnQGJpdGdvL3B1YmxpYy10eXBlcyc7XG5pbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb24gfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBJbnN0cnVjdGlvblBhcmFtcyB9IGZyb20gJy4uLy4uLy4uL3NyYy9saWIvaWZhY2UnO1xuXG5kZXNjcmliZSgnU29sIFN0YWtpbmcgQWN0aXZhdGUgQnVpbGRlcicsICgpID0+IHtcbiAgY29uc3QgZmFjdG9yeSA9IGdldEJ1aWxkZXJGYWN0b3J5KCd0c29sJyk7XG5cbiAgY29uc3Qgc3Rha2luZ0J1aWxkZXIgPSAoKSA9PiB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRTdGFraW5nQWN0aXZhdGVCdWlsZGVyKCk7XG4gICAgdHhCdWlsZGVyLm5vbmNlKHJlY2VudEJsb2NrSGFzaCk7XG4gICAgdHhCdWlsZGVyLnNlbmRlcih3YWxsZXQucHViKTtcbiAgICByZXR1cm4gdHhCdWlsZGVyO1xuICB9O1xuXG4gIC8vIG5vdCB2YWxpZCBkYXRhXG4gIGNvbnN0IGludmFsaWRQdWJLZXkgPSB0ZXN0RGF0YS5wdWJLZXlzLmludmFsaWRQdWJLZXlzWzBdO1xuICBjb25zdCB3cm9uZ0FjY291bnQgPSBuZXcgS2V5UGFpcih7IHBydjogdGVzdERhdGEucHJ2S2V5cy5wcnZLZXkxLmJhc2U1OCB9KS5nZXRLZXlzKCk7XG5cbiAgLy8gdmFsaWQgZGF0YVxuICBjb25zdCB3YWxsZXQgPSBuZXcgS2V5UGFpcih0ZXN0RGF0YS5hdXRoQWNjb3VudCkuZ2V0S2V5cygpO1xuICBjb25zdCBzdGFrZUFjY291bnQgPSBuZXcgS2V5UGFpcih0ZXN0RGF0YS5zdGFrZUFjY291bnQpLmdldEtleXMoKTtcbiAgY29uc3QgdmFsaWRhdG9yID0gdGVzdERhdGEudmFsaWRhdG9yO1xuXG4gIGNvbnN0IHJlY2VudEJsb2NrSGFzaCA9ICdHSHRYUUJzb1pIVm5ORmE5WWV2QXpGcjE3REpqZ0hYazN5Y1RLRDV4RDNaaSc7XG4gIGNvbnN0IGFtb3VudCA9ICczMDAwMDAnO1xuXG4gIGNvbnN0IHBlcmZvcm1UZXN0ID0gYXN5bmMgKHtcbiAgICBzaWduQnVpbGRlcixcbiAgICBrbm93blJhd1R4LFxuICAgIG1ha2VVbnNpZ25lZEJ1aWxkZXIsXG4gICAgdmVyaWZ5QnVpbHRUcmFuc2FjdGlvbixcbiAgfToge1xuICAgIHNpZ25CdWlsZGVyPzogdW5kZWZpbmVkIHwgKCh4OiBTdGFraW5nQWN0aXZhdGVCdWlsZGVyKSA9PiBTdGFraW5nQWN0aXZhdGVCdWlsZGVyKTtcbiAgICBrbm93blJhd1R4OiBzdHJpbmc7XG4gICAgbWFrZVVuc2lnbmVkQnVpbGRlcjogKCkgPT4gU3Rha2luZ0FjdGl2YXRlQnVpbGRlcjtcbiAgICB2ZXJpZnlCdWlsdFRyYW5zYWN0aW9uOiAoeDogQmFzZVRyYW5zYWN0aW9uKSA9PiB2b2lkO1xuICB9KSA9PiB7XG4gICAgLy8gQnVpbGQgdHJhbnNhY3Rpb25cbiAgICBjb25zdCB0eEJ1aWxkZXIgPSBtYWtlVW5zaWduZWRCdWlsZGVyKCk7XG4gICAgY29uc3QgdW5zaWduZWRUeCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIGNvbnN0IHR4ID0gc2lnbkJ1aWxkZXIgPyBhd2FpdCBzaWduQnVpbGRlcih0eEJ1aWxkZXIpLmJ1aWxkKCkgOiB1bnNpZ25lZFR4O1xuXG4gICAgLy8gVmVyaWZ5IGJ1aWx0IHRyYW5zYWN0aW9uXG4gICAgdmVyaWZ5QnVpbHRUcmFuc2FjdGlvbih0eCk7XG5cbiAgICAvLyBWZXJpZnkgcmF3IHRyYW5zYWN0aW9uXG4gICAgY29uc3QgcmF3VHggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgIHNob3VsZC5lcXVhbChVdGlscy5pc1ZhbGlkUmF3VHJhbnNhY3Rpb24ocmF3VHgpLCB0cnVlKTtcbiAgICBzaG91bGQuZXF1YWwocmF3VHgsIGtub3duUmF3VHgpO1xuXG4gICAgLy8gUmVidWlsZCB0cmFuc2FjdGlvbiBhbmQgdmVyaWZ5XG4gICAgY29uc3QgYnVpbGRlckZyb21SYXdUeCA9IGZhY3RvcnkuZnJvbShyYXdUeCk7XG4gICAgY29uc3QgcmVidWlsdFR4ID0gYXdhaXQgYnVpbGRlckZyb21SYXdUeC5idWlsZCgpO1xuXG4gICAgc2hvdWxkLmVxdWFsKHJlYnVpbHRUeC50b0Jyb2FkY2FzdEZvcm1hdCgpLCB1bnNpZ25lZFR4LnRvQnJvYWRjYXN0Rm9ybWF0KCkpO1xuICAgIHNob3VsZC5lcXVhbChyZWJ1aWx0VHguc2lnbmFibGVQYXlsb2FkLnRvU3RyaW5nKCdoZXgnKSwgdW5zaWduZWRUeC5zaWduYWJsZVBheWxvYWQudG9TdHJpbmcoJ2hleCcpKTtcbiAgICBzaG91bGQuZGVlcEVxdWFsKHJlYnVpbHRUeC50b0pzb24oKS5pbnN0cnVjdGlvbnNEYXRhLCB0eC50b0pzb24oKS5pbnN0cnVjdGlvbnNEYXRhKTtcbiAgfTtcblxuICBjb25zdCBtYWtlVW5zaWduZWRCdWlsZGVyTmF0aXZlID0gKGRvTWVtbzogYm9vbGVhbikgPT4ge1xuICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0FjdGl2YXRlQnVpbGRlcigpO1xuICAgIHR4QnVpbGRlclxuICAgICAgLmFtb3VudChhbW91bnQpXG4gICAgICAuc2VuZGVyKHdhbGxldC5wdWIpXG4gICAgICAuc3Rha2luZ0FkZHJlc3Moc3Rha2VBY2NvdW50LnB1YilcbiAgICAgIC52YWxpZGF0b3IodmFsaWRhdG9yLnB1YilcbiAgICAgIC5ub25jZShyZWNlbnRCbG9ja0hhc2gpO1xuICAgIGlmIChkb01lbW8pIHtcbiAgICAgIHR4QnVpbGRlci5tZW1vKCd0ZXN0IG1lbW8nKTtcbiAgICB9XG4gICAgcmV0dXJuIHR4QnVpbGRlcjtcbiAgfTtcblxuICBjb25zdCB2ZXJpZnlCdWlsdFRyYW5zYWN0aW9uTmF0aXZlT3JNYXJpbmFkZSA9IChcbiAgICB0eDogQmFzZVRyYW5zYWN0aW9uLFxuICAgIGRvTWVtbzogYm9vbGVhbixcbiAgICBzdGFraW5nVHlwZTogU29sU3Rha2luZ1R5cGVFbnVtLk5BVElWRSB8IFNvbFN0YWtpbmdUeXBlRW51bS5NQVJJTkFERVxuICApID0+IHtcbiAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICB0eEpzb24uaW5zdHJ1Y3Rpb25zRGF0YS5zaG91bGQuZGVlcEVxdWFsKFtcbiAgICAgIC4uLihkb01lbW9cbiAgICAgICAgPyBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICdNZW1vJyxcbiAgICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgbWVtbzogJ3Rlc3QgbWVtbycsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXSksXG4gICAgICB7XG4gICAgICAgIHR5cGU6ICdBY3RpdmF0ZScsXG4gICAgICAgIHBhcmFtczoge1xuICAgICAgICAgIGZyb21BZGRyZXNzOiB3YWxsZXQucHViLFxuICAgICAgICAgIHN0YWtpbmdBZGRyZXNzOiBzdGFrZUFjY291bnQucHViLFxuICAgICAgICAgIGFtb3VudDogYW1vdW50LFxuICAgICAgICAgIHZhbGlkYXRvcjogdmFsaWRhdG9yLnB1YixcbiAgICAgICAgICBzdGFraW5nVHlwZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXSk7XG4gICAgdHguaW5wdXRzLnNob3VsZC5kZWVwRXF1YWwoW1xuICAgICAge1xuICAgICAgICBhZGRyZXNzOiB3YWxsZXQucHViLFxuICAgICAgICB2YWx1ZTogYW1vdW50LFxuICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICB9LFxuICAgIF0pO1xuICAgIHR4Lm91dHB1dHMuc2hvdWxkLmRlZXBFcXVhbChbXG4gICAgICB7XG4gICAgICAgIGFkZHJlc3M6IHN0YWtlQWNjb3VudC5wdWIsXG4gICAgICAgIHZhbHVlOiBhbW91bnQsXG4gICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgIH0sXG4gICAgXSk7XG4gIH07XG5cbiAgY29uc3Qgc2lnbkJ1aWxkZXJOYXRpdmVPck1hcmluYWRlID0gKHR4QnVpbGRlcjogU3Rha2luZ0FjdGl2YXRlQnVpbGRlcikgPT4ge1xuICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiB3YWxsZXQucHJ2IH0pO1xuICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBzdGFrZUFjY291bnQucHJ2IH0pO1xuICAgIHJldHVybiB0eEJ1aWxkZXI7XG4gIH07XG5cbiAgY29uc3QgbWFrZVVuc2lnbmVkQnVpbGRlck1hcmluYWRlID0gKGRvTWVtbzogYm9vbGVhbikgPT4ge1xuICAgIHJldHVybiBtYWtlVW5zaWduZWRCdWlsZGVyTmF0aXZlKGRvTWVtbykuc3Rha2luZ1R5cGUoU29sU3Rha2luZ1R5cGVFbnVtLk1BUklOQURFKTtcbiAgfTtcblxuICBjb25zdCBtYWtlVW5zaWduZWRCdWlsZGVySml0byA9IChkb01lbW86IGJvb2xlYW4sIGRvQ3JlYXRlQVRBOiBib29sZWFuKSA9PiB7XG4gICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRTdGFraW5nQWN0aXZhdGVCdWlsZGVyKCk7XG4gICAgdHhCdWlsZGVyXG4gICAgICAuYW1vdW50KGFtb3VudClcbiAgICAgIC5zZW5kZXIod2FsbGV0LnB1YilcbiAgICAgIC5zdGFraW5nQWRkcmVzcyhKSVRPX1NUQUtFX1BPT0xfQUREUkVTUylcbiAgICAgIC52YWxpZGF0b3IoSklUT19TVEFLRV9QT09MX0FERFJFU1MpXG4gICAgICAuc3Rha2luZ1R5cGUoU29sU3Rha2luZ1R5cGVFbnVtLkpJVE8pXG4gICAgICAuZXh0cmFQYXJhbXMoe1xuICAgICAgICBzdGFrZVBvb2xEYXRhOiB7XG4gICAgICAgICAgbWFuYWdlckZlZUFjY291bnQ6IHRlc3REYXRhLkpJVE9fU1RBS0VfUE9PTF9EQVRBX1BBUlNFRC5tYW5hZ2VyRmVlQWNjb3VudC50b1N0cmluZygpLFxuICAgICAgICAgIHBvb2xNaW50OiB0ZXN0RGF0YS5KSVRPX1NUQUtFX1BPT0xfREFUQV9QQVJTRUQucG9vbE1pbnQudG9TdHJpbmcoKSxcbiAgICAgICAgICByZXNlcnZlU3Rha2U6IHRlc3REYXRhLkpJVE9fU1RBS0VfUE9PTF9EQVRBX1BBUlNFRC5yZXNlcnZlU3Rha2UudG9TdHJpbmcoKSxcbiAgICAgICAgfSxcbiAgICAgICAgY3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudDogZG9DcmVhdGVBVEEsXG4gICAgICB9KVxuICAgICAgLm5vbmNlKHJlY2VudEJsb2NrSGFzaCk7XG4gICAgaWYgKGRvTWVtbykge1xuICAgICAgdHhCdWlsZGVyLm1lbW8oJ3Rlc3QgbWVtbycpO1xuICAgIH1cbiAgICByZXR1cm4gdHhCdWlsZGVyO1xuICB9O1xuXG4gIGNvbnN0IHNpZ25CdWlsZGVySml0byA9ICh0eEJ1aWxkZXI6IFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIpID0+IHtcbiAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogd2FsbGV0LnBydiB9KTtcbiAgICByZXR1cm4gdHhCdWlsZGVyO1xuICB9O1xuXG4gIGNvbnN0IHZlcmlmeUJ1aWx0VHJhbnNhY3Rpb25KaXRvID0gKHR4OiBCYXNlVHJhbnNhY3Rpb24sIGRvTWVtbzogYm9vbGVhbiwgZG9DcmVhdGVBVEE6IGJvb2xlYW4pID0+IHtcbiAgICBjb25zdCB0eEpzb24gPSB0eC50b0pzb24oKTtcbiAgICBjb25zdCBleHBlY3RlZEluc3RydWN0aW9uczogSW5zdHJ1Y3Rpb25QYXJhbXNbXSA9IFtdO1xuXG4gICAgaWYgKGRvQ3JlYXRlQVRBKSB7XG4gICAgICBleHBlY3RlZEluc3RydWN0aW9ucy5wdXNoKHtcbiAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQ3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudCxcbiAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgYXRhQWRkcmVzczogJzJ2SnJ4MkJuN1BpZkxaRFJhU0NwcGhFOVd0WnN4MWs0M1NSeWlRRGhFMUFzJyxcbiAgICAgICAgICBtaW50QWRkcmVzczogSklUT1NPTF9NSU5UX0FERFJFU1MsXG4gICAgICAgICAgb3duZXJBZGRyZXNzOiB3YWxsZXQucHViLFxuICAgICAgICAgIHBheWVyQWRkcmVzczogd2FsbGV0LnB1YixcbiAgICAgICAgICB0b2tlbk5hbWU6ICdzb2w6aml0b3NvbCcsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoZG9NZW1vKSB7XG4gICAgICBleHBlY3RlZEluc3RydWN0aW9ucy5wdXNoKHtcbiAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTWVtbyxcbiAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgbWVtbzogJ3Rlc3QgbWVtbycsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBleHBlY3RlZEluc3RydWN0aW9ucy5wdXNoKHtcbiAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlN0YWtpbmdBY3RpdmF0ZSxcbiAgICAgIHBhcmFtczoge1xuICAgICAgICBmcm9tQWRkcmVzczogd2FsbGV0LnB1YixcbiAgICAgICAgc3Rha2luZ0FkZHJlc3M6IEpJVE9fU1RBS0VfUE9PTF9BRERSRVNTLFxuICAgICAgICBhbW91bnQ6IGFtb3VudCxcbiAgICAgICAgdmFsaWRhdG9yOiBKSVRPX1NUQUtFX1BPT0xfQUREUkVTUyxcbiAgICAgICAgc3Rha2luZ1R5cGU6IFNvbFN0YWtpbmdUeXBlRW51bS5KSVRPLFxuICAgICAgICBleHRyYVBhcmFtczoge1xuICAgICAgICAgIHN0YWtlUG9vbERhdGE6IHtcbiAgICAgICAgICAgIG1hbmFnZXJGZWVBY2NvdW50OiB0ZXN0RGF0YS5KSVRPX1NUQUtFX1BPT0xfREFUQV9QQVJTRUQubWFuYWdlckZlZUFjY291bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHBvb2xNaW50OiB0ZXN0RGF0YS5KSVRPX1NUQUtFX1BPT0xfREFUQV9QQVJTRUQucG9vbE1pbnQudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHJlc2VydmVTdGFrZTogdGVzdERhdGEuSklUT19TVEFLRV9QT09MX0RBVEFfUEFSU0VELnJlc2VydmVTdGFrZS50b1N0cmluZygpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudDogZG9DcmVhdGVBVEEsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgdHhKc29uLmluc3RydWN0aW9uc0RhdGEuc2hvdWxkLmRlZXBFcXVhbChleHBlY3RlZEluc3RydWN0aW9ucyk7XG4gICAgdHguaW5wdXRzLnNob3VsZC5kZWVwRXF1YWwoW1xuICAgICAge1xuICAgICAgICBhZGRyZXNzOiB3YWxsZXQucHViLFxuICAgICAgICB2YWx1ZTogYW1vdW50LFxuICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICB9LFxuICAgIF0pO1xuICAgIHR4Lm91dHB1dHMuc2hvdWxkLmRlZXBFcXVhbChbXSk7XG4gIH07XG5cbiAgZGVzY3JpYmUoJ1N1Y2NlZWQnLCAoKSA9PiB7XG4gICAgZGVzY3JpYmUoJ05hdGl2ZSBzdGFraW5nIHRlc3RzJywgKCkgPT4ge1xuICAgICAgY29uc3QgcGVyZm9ybVRlc3ROYXRpdmUgPSBhc3luYyAoZG9NZW1vOiBib29sZWFuLCBkb1NpZ246IGJvb2xlYW4sIGtub3duUmF3VHg6IHN0cmluZykgPT4ge1xuICAgICAgICBhd2FpdCBwZXJmb3JtVGVzdCh7XG4gICAgICAgICAgc2lnbkJ1aWxkZXI6IGRvU2lnbiA/IHNpZ25CdWlsZGVyTmF0aXZlT3JNYXJpbmFkZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBrbm93blJhd1R4LFxuICAgICAgICAgIG1ha2VVbnNpZ25lZEJ1aWxkZXI6ICgpID0+IG1ha2VVbnNpZ25lZEJ1aWxkZXJOYXRpdmUoZG9NZW1vKSxcbiAgICAgICAgICB2ZXJpZnlCdWlsdFRyYW5zYWN0aW9uOiAoeCkgPT4gdmVyaWZ5QnVpbHRUcmFuc2FjdGlvbk5hdGl2ZU9yTWFyaW5hZGUoeCwgZG9NZW1vLCBTb2xTdGFraW5nVHlwZUVudW0uTkFUSVZFKSxcbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBpdCgnYnVpbGQgYSBjcmVhdGUgYW5kIGRlbGVnYXRlIHN0YWtpbmcgc2lnbmVkIHR4JywgYXN5bmMgKCkgPT5cbiAgICAgICAgcGVyZm9ybVRlc3ROYXRpdmUoZmFsc2UsIHRydWUsIHRlc3REYXRhLlNUQUtJTkdfQUNUSVZBVEVfU0lHTkVEX1RYKSk7XG5cbiAgICAgIGl0KCdidWlsZCBhIGNyZWF0ZSBhbmQgZGVsZWdhdGUgc3Rha2luZyBzaWduZWQgdHggd2l0aCBtZW1vJywgYXN5bmMgKCkgPT5cbiAgICAgICAgcGVyZm9ybVRlc3ROYXRpdmUodHJ1ZSwgdHJ1ZSwgdGVzdERhdGEuU1RBS0lOR19BQ1RJVkFURV9TSUdORURfVFhfV0lUSF9NRU1PKSk7XG5cbiAgICAgIGl0KCdidWlsZCBhIGNyZWF0ZSBhbmQgZGVsZWdhdGUgc3Rha2luZyB1bnNpZ25lZCB0eCcsIGFzeW5jICgpID0+XG4gICAgICAgIHBlcmZvcm1UZXN0TmF0aXZlKGZhbHNlLCBmYWxzZSwgdGVzdERhdGEuU1RBS0lOR19BQ1RJVkFURV9VTlNJR05FRF9UWCkpO1xuXG4gICAgICBpdCgnYnVpbGQgYSBjcmVhdGUgYW5kIGRlbGVnYXRlIHN0YWtpbmcgdW5zaWduZWQgdHggd2l0aCBtZW1vJywgYXN5bmMgKCkgPT5cbiAgICAgICAgcGVyZm9ybVRlc3ROYXRpdmUodHJ1ZSwgZmFsc2UsIHRlc3REYXRhLlNUQUtJTkdfQUNUSVZBVEVfVU5TSUdORURfVFhfV0lUSF9NRU1PKSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnTWFyaW5hZGUgc3Rha2luZyB0ZXN0cycsICgpID0+IHtcbiAgICAgIGNvbnN0IHBlcmZvcm1UZXN0TWFyaW5hZGUgPSBhc3luYyAoZG9NZW1vOiBib29sZWFuLCBkb1NpZ246IGJvb2xlYW4sIGtub3duUmF3VHg6IHN0cmluZykgPT4ge1xuICAgICAgICBhd2FpdCBwZXJmb3JtVGVzdCh7XG4gICAgICAgICAgc2lnbkJ1aWxkZXI6IGRvU2lnbiA/IHNpZ25CdWlsZGVyTmF0aXZlT3JNYXJpbmFkZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBrbm93blJhd1R4LFxuICAgICAgICAgIG1ha2VVbnNpZ25lZEJ1aWxkZXI6ICgpID0+IG1ha2VVbnNpZ25lZEJ1aWxkZXJNYXJpbmFkZShkb01lbW8pLFxuICAgICAgICAgIHZlcmlmeUJ1aWx0VHJhbnNhY3Rpb246ICh4KSA9PiB2ZXJpZnlCdWlsdFRyYW5zYWN0aW9uTmF0aXZlT3JNYXJpbmFkZSh4LCBkb01lbW8sIFNvbFN0YWtpbmdUeXBlRW51bS5NQVJJTkFERSksXG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgaXQoJ2J1aWxkIGEgY3JlYXRlIHN0YWtpbmcgc2lnbmVkIHR4JywgYXN5bmMgKCkgPT5cbiAgICAgICAgcGVyZm9ybVRlc3RNYXJpbmFkZShmYWxzZSwgdHJ1ZSwgdGVzdERhdGEuTUFSSU5BREVfU1RBS0lOR19BQ1RJVkFURV9TSUdORURfVFgpKTtcblxuICAgICAgaXQoJ2J1aWxkIGEgY3JlYXRlIHNpZ25lZCB0eCB3aXRoIG1lbW8nLCBhc3luYyAoKSA9PlxuICAgICAgICBwZXJmb3JtVGVzdE1hcmluYWRlKHRydWUsIHRydWUsIHRlc3REYXRhLk1BUklOQURFX1NUQUtJTkdfQUNUSVZBVEVfU0lHTkVEX1RYX1dJVEhfTUVNTykpO1xuXG4gICAgICBpdCgnYnVpbGQgYSBjcmVhdGUgdW5zaWduZWQgdHgnLCBhc3luYyAoKSA9PlxuICAgICAgICBwZXJmb3JtVGVzdE1hcmluYWRlKGZhbHNlLCBmYWxzZSwgdGVzdERhdGEuTUFSSU5BREVfU1RBS0lOR19BQ1RJVkFURV9VTlNJR05FRF9UWCkpO1xuXG4gICAgICBpdCgnYnVpbGQgYSBjcmVhdGUgdW5zaWduZWQgdHggd2l0aCBtZW1vJywgYXN5bmMgKCkgPT5cbiAgICAgICAgcGVyZm9ybVRlc3RNYXJpbmFkZSh0cnVlLCBmYWxzZSwgdGVzdERhdGEuTUFSSU5BREVfU1RBS0lOR19BQ1RJVkFURV9VTlNJR05FRF9UWF9XSVRIX01FTU8pKTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdKaXRvIHN0YWtpbmcgdGVzdHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBwZXJmb3JtVGVzdEppdG8gPSBhc3luYyAoZG9NZW1vOiBib29sZWFuLCBkb1NpZ246IGJvb2xlYW4sIGRvQ3JlYXRlQVRBOiBib29sZWFuLCBrbm93blJhd1R4OiBzdHJpbmcpID0+IHtcbiAgICAgICAgYXdhaXQgcGVyZm9ybVRlc3Qoe1xuICAgICAgICAgIHNpZ25CdWlsZGVyOiBkb1NpZ24gPyBzaWduQnVpbGRlckppdG8gOiB1bmRlZmluZWQsXG4gICAgICAgICAga25vd25SYXdUeCxcbiAgICAgICAgICBtYWtlVW5zaWduZWRCdWlsZGVyOiAoKSA9PiBtYWtlVW5zaWduZWRCdWlsZGVySml0byhkb01lbW8sIGRvQ3JlYXRlQVRBKSxcbiAgICAgICAgICB2ZXJpZnlCdWlsdFRyYW5zYWN0aW9uOiAoeCkgPT4gdmVyaWZ5QnVpbHRUcmFuc2FjdGlvbkppdG8oeCwgZG9NZW1vLCBkb0NyZWF0ZUFUQSksXG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgTUVNTyA9IDE7XG4gICAgICBjb25zdCBTSUdOID0gMjtcbiAgICAgIGNvbnN0IEFUQSA9IDQ7XG4gICAgICBjb25zdCByYXdUeERhdGE6IChzdHJpbmcgfCB1bmRlZmluZWQpW10gPSBBcnJheS5mcm9tKG5ldyBBcnJheSg4KSkubWFwKCgpID0+IHVuZGVmaW5lZCk7XG4gICAgICByYXdUeERhdGFbMF0gPSB0ZXN0RGF0YS5KSVRPX1NUQUtJTkdfQUNUSVZBVEVfVU5TSUdORURfVFg7XG4gICAgICByYXdUeERhdGFbTUVNT10gPSB0ZXN0RGF0YS5KSVRPX1NUQUtJTkdfQUNUSVZBVEVfVU5TSUdORURfVFhfV0lUSF9NRU1PO1xuICAgICAgcmF3VHhEYXRhW1NJR05dID0gdGVzdERhdGEuSklUT19TVEFLSU5HX0FDVElWQVRFX1NJR05FRF9UWDtcbiAgICAgIHJhd1R4RGF0YVtNRU1PICsgU0lHTl0gPSB0ZXN0RGF0YS5KSVRPX1NUQUtJTkdfQUNUSVZBVEVfU0lHTkVEX1RYX1dJVEhfTUVNTztcbiAgICAgIHJhd1R4RGF0YVtBVEFdID0gdGVzdERhdGEuSklUT19TVEFLSU5HX0FDVElWQVRFX1VOU0lHTkVEX1RYX1dJVEhfQVRBO1xuICAgICAgcmF3VHhEYXRhW0FUQSArIE1FTU9dID0gdGVzdERhdGEuSklUT19TVEFLSU5HX0FDVElWQVRFX1VOU0lHTkVEX1RYX1dJVEhfTUVNT19XSVRIX0FUQTtcbiAgICAgIHJhd1R4RGF0YVtBVEEgKyBTSUdOXSA9IHRlc3REYXRhLkpJVE9fU1RBS0lOR19BQ1RJVkFURV9TSUdORURfVFhfV0lUSF9BVEE7XG4gICAgICByYXdUeERhdGFbQVRBICsgTUVNTyArIFNJR05dID0gdGVzdERhdGEuSklUT19TVEFLSU5HX0FDVElWQVRFX1NJR05FRF9UWF9XSVRIX01FTU9fV0lUSF9BVEE7XG5cbiAgICAgIGZvciAoY29uc3QgZG9NZW1vIG9mIFtmYWxzZSwgdHJ1ZV0pIHtcbiAgICAgICAgZm9yIChjb25zdCBkb1NpZ24gb2YgW2ZhbHNlLCB0cnVlXSkge1xuICAgICAgICAgIGZvciAoY29uc3QgZG9DcmVhdGVBVEEgb2YgW2ZhbHNlLCB0cnVlXSkge1xuICAgICAgICAgICAgaXQoYGJ1aWxkIGEgdHggd2l0aCBkb01lbW89JHtkb01lbW99LCBkb1NpZ249JHtkb1NpZ259LCBkb0NyZWF0ZUFUQT0ke2RvQ3JlYXRlQVRBfWAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IHJhd1R4RGF0YVsoZG9NZW1vID8gTUVNTyA6IDApICsgKGRvU2lnbiA/IFNJR04gOiAwKSArIChkb0NyZWF0ZUFUQSA/IEFUQSA6IDApXTtcbiAgICAgICAgICAgICAgc2hvdWxkKGRhdGEpLm5vdC5iZS51bmRlZmluZWQoKTtcbiAgICAgICAgICAgICAgYXdhaXQgcGVyZm9ybVRlc3RKaXRvKGRvTWVtbywgZG9TaWduLCBkb0NyZWF0ZUFUQSwgZGF0YSA/PyAnJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0ZhaWwnLCAoKSA9PiB7XG4gICAgaXQoJ2ZvciBpbnZhbGlkIHNlbmRlciBhZGRyZXNzJywgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gc3Rha2luZ0J1aWxkZXIoKTtcbiAgICAgIHNob3VsZCgoKSA9PiB0eEJ1aWxkZXIuc2VuZGVyKGludmFsaWRQdWJLZXkpKS50aHJvd0Vycm9yKCdJbnZhbGlkIG9yIG1pc3Npbmcgc2VuZGVyLCBnb3Q6ICcgKyBpbnZhbGlkUHViS2V5KTtcbiAgICB9KTtcblxuICAgIGl0KCdmb3IgaW52YWxpZCBzdGFraW5nIGFkZHJlc3MnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBzdGFraW5nQnVpbGRlcigpO1xuICAgICAgc2hvdWxkKCgpID0+IHR4QnVpbGRlci5zdGFraW5nQWRkcmVzcyhpbnZhbGlkUHViS2V5KSkudGhyb3dFcnJvcihcbiAgICAgICAgJ0ludmFsaWQgb3IgbWlzc2luZyBzdGFraW5nQWRkcmVzcywgZ290OiAnICsgaW52YWxpZFB1YktleVxuICAgICAgKTtcbiAgICB9KTtcblxuICAgIGl0KCdmb3IgaW52YWxpZCB2YWxpZGF0b3IgYWRkcmVzcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IHN0YWtpbmdCdWlsZGVyKCk7XG4gICAgICBzaG91bGQoKCkgPT4gdHhCdWlsZGVyLnZhbGlkYXRvcihpbnZhbGlkUHViS2V5KSkudGhyb3dFcnJvcihcbiAgICAgICAgJ0ludmFsaWQgb3IgbWlzc2luZyB2YWxpZGF0b3IsIGdvdDogJyArIGludmFsaWRQdWJLZXlcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnYnVpbGQgYSBzdGFraW5nIGFjdGl2YXRlIHR4IHdoZW4gYW1vdW50IGlzIGludmFsaWQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBzdGFraW5nQnVpbGRlcigpO1xuICAgICAgc2hvdWxkKCgpID0+IHR4QnVpbGRlci5hbW91bnQoJ3JhbmRvbXN0cmluZycpKS50aHJvd0Vycm9yKCdWYWx1ZSBjYW5ub3QgYmUgemVybyBvciBsZXNzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnYnVpbGQgYSBzdGFraW5nIGFjdGl2YXRlIHR4IHdoZW4gYW1vdW50IGlzIGxlc3MgdGhhbiB6ZXJvJywgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gc3Rha2luZ0J1aWxkZXIoKTtcbiAgICAgIHNob3VsZCgoKSA9PiB0eEJ1aWxkZXIuYW1vdW50KCctMScpKS50aHJvd0Vycm9yKCdWYWx1ZSBjYW5ub3QgYmUgemVybyBvciBsZXNzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnYnVpbGQgYSBzdGFraW5nIGFjdGl2YXRlIHR4IHdoZW4gYW1vdW50IGlzIGVxdWFsIHRvIHplcm8nLCAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBzdGFraW5nQnVpbGRlcigpO1xuICAgICAgc2hvdWxkKCgpID0+IHR4QnVpbGRlci5hbW91bnQoJzAnKSkudGhyb3dFcnJvcignVmFsdWUgY2Fubm90IGJlIHplcm8gb3IgbGVzcycpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2J1aWxkIGEgc3Rha2luZyBhY3RpdmF0ZSB0eCBhbmQgc2lnbiB3aXRoIGFuIGluY29ycmVjdCBhY2NvdW50JywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gc3Rha2luZ0J1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zZW5kZXIod2FsbGV0LnB1Yik7XG4gICAgICB0eEJ1aWxkZXIuc3Rha2luZ0FkZHJlc3Moc3Rha2VBY2NvdW50LnB1Yik7XG4gICAgICB0eEJ1aWxkZXIudmFsaWRhdG9yKHZhbGlkYXRvci5wdWIpO1xuICAgICAgdHhCdWlsZGVyLmFtb3VudChhbW91bnQpO1xuICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IHdyb25nQWNjb3VudC5wcnYgfSk7XG4gICAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKS5zaG91bGQucmVqZWN0ZWRXaXRoKCd1bmtub3duIHNpZ25lcjogQ1A1RHBhYTQyUnRKbU11S3FDUXNMd21hNVloM2tudXZLc1lERlg4NUY0MVMnKTtcbiAgICB9KTtcblxuICAgIGl0KCdidWlsZCBhIHN0YWtpbmcgYWN0aXZhdGUgdHggd2l0aCB0aGUgc2FtZSBzZW5kZXIgYW5kIHN0YWtpbmcgYWRkcmVzcycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IHN0YWtpbmdCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc2VuZGVyKHdhbGxldC5wdWIpO1xuICAgICAgdHhCdWlsZGVyLnN0YWtpbmdBZGRyZXNzKHdhbGxldC5wdWIpO1xuICAgICAgdHhCdWlsZGVyLnZhbGlkYXRvcih2YWxpZGF0b3IucHViKTtcbiAgICAgIHR4QnVpbGRlci5hbW91bnQoYW1vdW50KTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiB3cm9uZ0FjY291bnQucHJ2IH0pO1xuICAgICAgYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkuc2hvdWxkLnJlamVjdGVkV2l0aCgnU2VuZGVyIGFkZHJlc3MgY2Fubm90IGJlIHRoZSBzYW1lIGFzIHRoZSBTdGFraW5nIGFkZHJlc3MnKTtcbiAgICB9KTtcblxuICAgIGl0KCdidWlsZCB3aGVuIG5vbmNlIGlzIG5vdCBwcm92aWRlZCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZ2V0U3Rha2luZ0FjdGl2YXRlQnVpbGRlcigpO1xuICAgICAgdHhCdWlsZGVyLnNlbmRlcih3YWxsZXQucHViKTtcbiAgICAgIHR4QnVpbGRlci5zdGFraW5nQWRkcmVzcyhzdGFrZUFjY291bnQucHViKTtcbiAgICAgIHR4QnVpbGRlci5hbW91bnQoYW1vdW50KTtcbiAgICAgIHR4QnVpbGRlci52YWxpZGF0b3IodmFsaWRhdG9yLnB1Yik7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogd2FsbGV0LnBydiB9KTtcbiAgICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5yZWplY3RlZFdpdGgoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3Npbmcgbm9uY2UgYmxvY2toYXNoJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnYnVpbGQgd2hlbiBzZW5kZXIgaXMgbm90IHByb3ZpZGVkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRTdGFraW5nQWN0aXZhdGVCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc3Rha2luZ0FkZHJlc3Moc3Rha2VBY2NvdW50LnB1Yik7XG4gICAgICB0eEJ1aWxkZXIuYW1vdW50KGFtb3VudCk7XG4gICAgICB0eEJ1aWxkZXIudmFsaWRhdG9yKHZhbGlkYXRvci5wdWIpO1xuICAgICAgdHhCdWlsZGVyLm5vbmNlKHJlY2VudEJsb2NrSGFzaCk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogd2FsbGV0LnBydiB9KTtcbiAgICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5yZWplY3RlZFdpdGgoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3Npbmcgc2VuZGVyJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnYnVpbGQgd2hlbiBzdGFraW5nQWRkcmVzcyBpcyBub3QgcHJvdmlkZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmdldFN0YWtpbmdBY3RpdmF0ZUJ1aWxkZXIoKTtcbiAgICAgIHR4QnVpbGRlci5zZW5kZXIod2FsbGV0LnB1Yik7XG4gICAgICB0eEJ1aWxkZXIuYW1vdW50KGFtb3VudCk7XG4gICAgICB0eEJ1aWxkZXIudmFsaWRhdG9yKHZhbGlkYXRvci5wdWIpO1xuICAgICAgdHhCdWlsZGVyLm5vbmNlKHJlY2VudEJsb2NrSGFzaCk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogd2FsbGV0LnBydiB9KTtcbiAgICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5yZWplY3RlZFdpdGgoJ1N0YWtpbmcgQWRkcmVzcyBtdXN0IGJlIHNldCBiZWZvcmUgYnVpbGRpbmcgdGhlIHRyYW5zYWN0aW9uJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnYnVpbGQgd2hlbiB2YWxpZGF0b3IgaXMgbm90IHByb3ZpZGVkJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5nZXRTdGFraW5nQWN0aXZhdGVCdWlsZGVyKCk7XG4gICAgICB0eEJ1aWxkZXIuc3Rha2luZ0FkZHJlc3Moc3Rha2VBY2NvdW50LnB1Yik7XG4gICAgICB0eEJ1aWxkZXIuc2VuZGVyKHdhbGxldC5wdWIpO1xuICAgICAgdHhCdWlsZGVyLmFtb3VudChhbW91bnQpO1xuICAgICAgdHhCdWlsZGVyLm5vbmNlKHJlY2VudEJsb2NrSGFzaCk7XG4gICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogd2FsbGV0LnBydiB9KTtcbiAgICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5yZWplY3RlZFdpdGgoJ1ZhbGlkYXRvciBtdXN0IGJlIHNldCBiZWZvcmUgYnVpbGRpbmcgdGhlIHRyYW5zYWN0aW9uJyk7XG4gICAgfSk7XG5cbiAgICBpdCgndG8gc2lnbiB0d2ljZSB3aXRoIHRoZSBzYW1lIGtleScsICgpID0+IHtcbiAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZnJvbSh0ZXN0RGF0YS5TVEFLSU5HX0FDVElWQVRFX1VOU0lHTkVEX1RYKTtcbiAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiB3YWxsZXQucHJ2IH0pO1xuICAgICAgc2hvdWxkKCgpID0+IHR4QnVpbGRlci5zaWduKHsga2V5OiB3YWxsZXQucHJ2IH0pKS50aHJvd0Vycm9yKCdEdXBsaWNhdGVkIHNpZ25lcjogJyArIHdhbGxldC5wcnY/LnRvU3RyaW5nKCkpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnRnJvbSBhbmQgc2lnbicsICgpID0+IHtcbiAgICBkZXNjcmliZSgnU3VjY2VlZCcsICgpID0+IHtcbiAgICAgIGl0KCdidWlsZCBmcm9tIGFuIHVuc2lnbmVkIHN0YWtpbmcgYWN0aXZhdGUgYW5kIHNpZ24gaXQnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHR4QnVpbGRlciA9IGZhY3RvcnkuZnJvbSh0ZXN0RGF0YS5TVEFLSU5HX0FDVElWQVRFX1VOU0lHTkVEX1RYKTtcblxuICAgICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogd2FsbGV0LnBydiB9KTtcbiAgICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IHN0YWtlQWNjb3VudC5wcnYgfSk7XG4gICAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgICAgIHR4LmlucHV0cy5sZW5ndGguc2hvdWxkLmVxdWFsKDEpO1xuICAgICAgICB0eC5pbnB1dHNbMF0uc2hvdWxkLmRlZXBFcXVhbCh7XG4gICAgICAgICAgYWRkcmVzczogd2FsbGV0LnB1YixcbiAgICAgICAgICB2YWx1ZTogYW1vdW50LFxuICAgICAgICAgIGNvaW46ICd0c29sJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHR4Lm91dHB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgICAgY29uc3QgcmF3VHggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgICBzaG91bGQuZXF1YWwoVXRpbHMuaXNWYWxpZFJhd1RyYW5zYWN0aW9uKHJhd1R4KSwgdHJ1ZSk7XG4gICAgICAgIHNob3VsZC5lcXVhbChyYXdUeCwgdGVzdERhdGEuU1RBS0lOR19BQ1RJVkFURV9TSUdORURfVFgpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdNYXJpbmFkZTogYnVpbGQgZnJvbSBhbiB1bnNpZ25lZCBzdGFraW5nIGFjdGl2YXRlIGFuZCBzaWduIGl0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20odGVzdERhdGEuTUFSSU5BREVfU1RBS0lOR19BQ1RJVkFURV9VTlNJR05FRF9UWCk7XG5cbiAgICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IHdhbGxldC5wcnYgfSk7XG4gICAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBzdGFrZUFjY291bnQucHJ2IH0pO1xuICAgICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgICB0eC5pbnB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgICAgdHguaW5wdXRzWzBdLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICAgIGFkZHJlc3M6IHdhbGxldC5wdWIsXG4gICAgICAgICAgdmFsdWU6IGFtb3VudCxcbiAgICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICAgIH0pO1xuICAgICAgICB0eC5vdXRwdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICAgIGNvbnN0IHJhd1R4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKFV0aWxzLmlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUeCksIHRydWUpO1xuICAgICAgICBzaG91bGQuZXF1YWwocmF3VHgsIHRlc3REYXRhLk1BUklOQURFX1NUQUtJTkdfQUNUSVZBVEVfU0lHTkVEX1RYKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnYnVpbGQgZnJvbSBhbiB1bnNpZ25lZCBzdGFraW5nIGFjdGl2YXRlIHdpdGggbWVtbyBhbmQgc2lnbiBpdCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgdHhCdWlsZGVyID0gZmFjdG9yeS5mcm9tKHRlc3REYXRhLlNUQUtJTkdfQUNUSVZBVEVfVU5TSUdORURfVFhfV0lUSF9NRU1PKTtcbiAgICAgICAgdHhCdWlsZGVyLnNpZ24oeyBrZXk6IHdhbGxldC5wcnYgfSk7XG4gICAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiBzdGFrZUFjY291bnQucHJ2IH0pO1xuICAgICAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgICAgICB0eC5pbnB1dHMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgICAgdHguaW5wdXRzWzBdLnNob3VsZC5kZWVwRXF1YWwoe1xuICAgICAgICAgIGFkZHJlc3M6IHdhbGxldC5wdWIsXG4gICAgICAgICAgdmFsdWU6IGFtb3VudCxcbiAgICAgICAgICBjb2luOiAndHNvbCcsXG4gICAgICAgIH0pO1xuICAgICAgICB0eC5vdXRwdXRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICAgIGNvbnN0IHJhd1R4ID0gdHgudG9Ccm9hZGNhc3RGb3JtYXQoKTtcbiAgICAgICAgc2hvdWxkLmVxdWFsKFV0aWxzLmlzVmFsaWRSYXdUcmFuc2FjdGlvbihyYXdUeCksIHRydWUpO1xuICAgICAgICBzaG91bGQuZXF1YWwocmF3VHgsIHRlc3REYXRhLlNUQUtJTkdfQUNUSVZBVEVfU0lHTkVEX1RYX1dJVEhfTUVNTyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdGYWlsJywgKCkgPT4ge1xuICAgICAgaXQoJ2J1aWxkIGZyb20gYW4gdW5zaWduZWQgc3Rha2luZyBhY3RpdmF0ZSBhbmQgZmFpbCB0byBzaWduIGl0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20odGVzdERhdGEuU1RBS0lOR19BQ1RJVkFURV9VTlNJR05FRF9UWCk7XG4gICAgICAgIHR4QnVpbGRlci5zaWduKHsga2V5OiB3cm9uZ0FjY291bnQucHJ2IH0pO1xuICAgICAgICBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKS5zaG91bGQucmVqZWN0ZWRXaXRoKCd1bmtub3duIHNpZ25lcjogQ1A1RHBhYTQyUnRKbU11S3FDUXNMd21hNVloM2tudXZLc1lERlg4NUY0MVMnKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ2J1aWxkIGZyb20gYSBzaWduZWQgc3Rha2luZyBhY3RpdmF0ZSBhbmQgZmFpbCB0byBzaWduIGl0JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20odGVzdERhdGEuU1RBS0lOR19BQ1RJVkFURV9TSUdORURfVFgpO1xuICAgICAgICB0eEJ1aWxkZXIuc2lnbih7IGtleTogd3JvbmdBY2NvdW50LnBydiB9KTtcbiAgICAgICAgYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkuc2hvdWxkLnJlamVjdGVkV2l0aCgndW5rbm93biBzaWduZXI6IENQNURwYWE0MlJ0Sm1NdUtxQ1FzTHdtYTVZaDNrbnV2S3NZREZYODVGNDFTJyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -1 +0,0 @@
1
- {"version":3,"file":"stakingAuthorizeBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/stakingAuthorizeBuilder.ts"],"names":[],"mappings":""}