@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
@@ -0,0 +1,113 @@
1
+ /**
2
+ * @file Implementation of the depositSol instruction. On upgrade of
3
+ * '@solana/spl-token', this module may no longer be necessary.
4
+ */
5
+ import { DepositSolParams, WithdrawStakeParams } from '@solana/spl-stake-pool';
6
+ import { PublicKey, TransactionInstruction } from '@solana/web3.js';
7
+ /**
8
+ * Replicates the fields in @solana/spl-stake-pool Fee.
9
+ *
10
+ * @see {Fee}
11
+ */
12
+ export interface Fee {
13
+ denominator: string;
14
+ numerator: string;
15
+ }
16
+ /**
17
+ * Replicates the fields in @solana/spl-stake-pool StakePoolLayout.
18
+ *
19
+ * @see {StakePoolLayout}
20
+ */
21
+ export interface StakePoolData {
22
+ accountType: number;
23
+ manager: string;
24
+ staker: string;
25
+ stakeDepositAuthority: string;
26
+ stakeWithdrawBumpSeed: number;
27
+ validatorListAccount: string;
28
+ reserveStake: string;
29
+ poolMint: string;
30
+ managerFeeAccount: string;
31
+ tokenProgramId: string;
32
+ totalLamports: string;
33
+ poolTokenSupply: string;
34
+ lastUpdateEpoch: string;
35
+ lockup: {
36
+ unixTimestamp: string;
37
+ epoch: string;
38
+ custodian: string;
39
+ };
40
+ epochFee: Fee;
41
+ nextEpochFee?: Fee | undefined;
42
+ preferredDepositValidatorVoteAddress?: string | undefined;
43
+ preferredWithdrawValidatorVoteAddress?: string | undefined;
44
+ stakeDepositFee: Fee;
45
+ stakeWithdrawalFee: Fee;
46
+ nextStakeWithdrawalFee?: Fee | undefined;
47
+ stakeReferralFee: number;
48
+ solDepositAuthority?: string | undefined;
49
+ solDepositFee: Fee;
50
+ solReferralFee: number;
51
+ solWithdrawAuthority?: string | undefined;
52
+ solWithdrawalFee: Fee;
53
+ nextSolWithdrawalFee?: Fee | undefined;
54
+ lastEpochPoolTokenSupply: string;
55
+ lastEpochTotalLamports: string;
56
+ }
57
+ export declare const DEPOSIT_SOL_LAYOUT_CODE = 14;
58
+ export declare const WITHDRAW_STAKE_LAYOUT_CODE = 10;
59
+ /**
60
+ * Generates the withdraw authority program address for the stake pool.
61
+ * Like findWithdrawAuthorityProgramAddress in @solana/spl-stake-pool,
62
+ * but synchronous.
63
+ *
64
+ * @see {findWithdrawAuthorityProgramAddress}
65
+ */
66
+ export declare function findWithdrawAuthorityProgramAddressSync(programId: PublicKey, stakePoolAddress: PublicKey): PublicKey;
67
+ export interface DepositSolInstructionsParams {
68
+ stakePoolAddress: PublicKey;
69
+ from: PublicKey;
70
+ lamports: bigint;
71
+ }
72
+ export type DepositSolStakePoolData = Pick<StakePoolData, 'poolMint' | 'reserveStake' | 'managerFeeAccount'>;
73
+ /**
74
+ * Construct Solana depositSol stake pool instruction from parameters.
75
+ *
76
+ * @param {DepositSolInstructionsParams} params - parameters for staking to stake pool
77
+ * @param {DepositSolStakePoolData} stakePool - data from getStakePoolAccount needed for DepositSol
78
+ * @param createAssociatedTokenAccount
79
+ * @returns {TransactionInstruction}
80
+ */
81
+ export declare function depositSolInstructions(params: DepositSolInstructionsParams, stakePool: DepositSolStakePoolData, createAssociatedTokenAccount: boolean): TransactionInstruction[];
82
+ /**
83
+ * Construct Solana depositSol stake pool parameters from instruction.
84
+ *
85
+ * @param {TransactionInstruction} instruction
86
+ * @returns {DepositSolParams}
87
+ */
88
+ export declare function decodeDepositSol(instruction: TransactionInstruction): DepositSolParams;
89
+ export interface WithdrawStakeInstructionsParams {
90
+ stakePoolAddress: PublicKey;
91
+ tokenOwner: PublicKey;
92
+ destinationStakeAccount: PublicKey;
93
+ validatorAddress: PublicKey;
94
+ transferAuthority: PublicKey;
95
+ poolAmount: string;
96
+ }
97
+ export type WithdrawStakeStakePoolData = Pick<StakePoolData, 'poolMint' | 'validatorListAccount' | 'managerFeeAccount'>;
98
+ /**
99
+ * Construct Solana withdrawStake stake pool instructions from parameters.
100
+ *
101
+ * @param {WithdrawStakeInstructionsParams} params - parameters for unstaking from stake pool
102
+ * @param {WithdrawStakeStakePoolData} stakePool - data from getStakePoolAccount needed for WithdrawStake
103
+ * @returns {TransactionInstruction[]}
104
+ */
105
+ export declare function withdrawStakeInstructions(params: WithdrawStakeInstructionsParams, stakePool: WithdrawStakeStakePoolData): TransactionInstruction[];
106
+ /**
107
+ * Construct Solana withdrawStake stake pool parameters from instruction.
108
+ *
109
+ * @param {TransactionInstruction} instruction
110
+ * @returns {DepositSolParams}
111
+ */
112
+ export declare function decodeWithdrawStake(instruction: TransactionInstruction): WithdrawStakeParams;
113
+ //# sourceMappingURL=jitoStakePoolOperations.d.ts.map
@@ -0,0 +1,189 @@
1
+ /**
2
+ * @file Implementation of the depositSol instruction. On upgrade of
3
+ * '@solana/spl-token', this module may no longer be necessary.
4
+ */
5
+ import { StakePoolInstruction, STAKE_POOL_PROGRAM_ID, } from '@solana/spl-stake-pool';
6
+ import { createApproveInstruction, createAssociatedTokenAccountInstruction, getAssociatedTokenAddressSync, TOKEN_PROGRAM_ID, } from '@solana/spl-token';
7
+ import { PublicKey, StakeProgram, SystemProgram, SYSVAR_CLOCK_PUBKEY, } from '@solana/web3.js';
8
+ import assert from 'assert';
9
+ import { STAKE_ACCOUNT_RENT_EXEMPT_AMOUNT } from './constants';
10
+ export const DEPOSIT_SOL_LAYOUT_CODE = 14;
11
+ export const WITHDRAW_STAKE_LAYOUT_CODE = 10;
12
+ /**
13
+ * Generates the withdraw authority program address for the stake pool.
14
+ * Like findWithdrawAuthorityProgramAddress in @solana/spl-stake-pool,
15
+ * but synchronous.
16
+ *
17
+ * @see {findWithdrawAuthorityProgramAddress}
18
+ */
19
+ export function findWithdrawAuthorityProgramAddressSync(programId, stakePoolAddress) {
20
+ const [withdrawAuthority] = PublicKey.findProgramAddressSync([stakePoolAddress.toBuffer(), Buffer.from('withdraw')], programId);
21
+ return withdrawAuthority;
22
+ }
23
+ /**
24
+ * Construct Solana depositSol stake pool instruction from parameters.
25
+ *
26
+ * @param {DepositSolInstructionsParams} params - parameters for staking to stake pool
27
+ * @param {DepositSolStakePoolData} stakePool - data from getStakePoolAccount needed for DepositSol
28
+ * @param createAssociatedTokenAccount
29
+ * @returns {TransactionInstruction}
30
+ */
31
+ export function depositSolInstructions(params, stakePool, createAssociatedTokenAccount) {
32
+ const { stakePoolAddress, from, lamports } = params;
33
+ const poolMint = new PublicKey(stakePool.poolMint);
34
+ const reserveStake = new PublicKey(stakePool.reserveStake);
35
+ const managerFeeAccount = new PublicKey(stakePool.managerFeeAccount);
36
+ // findWithdrawAuthorityProgramAddress
37
+ const withdrawAuthority = findWithdrawAuthorityProgramAddressSync(STAKE_POOL_PROGRAM_ID, stakePoolAddress);
38
+ const associatedAddress = getAssociatedTokenAddressSync(poolMint, from);
39
+ const instructions = [];
40
+ if (createAssociatedTokenAccount) {
41
+ instructions.push(createAssociatedTokenAccountInstruction(from, associatedAddress, from, poolMint));
42
+ }
43
+ instructions.push(StakePoolInstruction.depositSol({
44
+ stakePool: stakePoolAddress,
45
+ reserveStake,
46
+ fundingAccount: from,
47
+ destinationPoolAccount: associatedAddress,
48
+ managerFeeAccount,
49
+ referralPoolAccount: associatedAddress,
50
+ poolMint,
51
+ lamports: Number(lamports),
52
+ withdrawAuthority,
53
+ }));
54
+ return instructions;
55
+ }
56
+ function parseKey(key, template) {
57
+ assert(key.isSigner === template.isSigner && key.isWritable === template.isWritable, `Unexpected key metadata in instruction: { isSigner: ${key.isSigner}, isWritable: ${key.isWritable} }`);
58
+ return key.pubkey;
59
+ }
60
+ /**
61
+ * Construct Solana depositSol stake pool parameters from instruction.
62
+ *
63
+ * @param {TransactionInstruction} instruction
64
+ * @returns {DepositSolParams}
65
+ */
66
+ export function decodeDepositSol(instruction) {
67
+ const { programId, keys, data } = instruction;
68
+ assert(programId.equals(STAKE_POOL_PROGRAM_ID), 'Invalid DepositSol instruction, program ID must be the Stake Pool Program');
69
+ let i = 0;
70
+ const stakePool = parseKey(keys[i++], { isSigner: false, isWritable: true });
71
+ const withdrawAuthority = parseKey(keys[i++], { isSigner: false, isWritable: false });
72
+ const reserveStake = parseKey(keys[i++], { isSigner: false, isWritable: true });
73
+ const fundingAccount = parseKey(keys[i++], { isSigner: true, isWritable: true });
74
+ const destinationPoolAccount = parseKey(keys[i++], { isSigner: false, isWritable: true });
75
+ const managerFeeAccount = parseKey(keys[i++], { isSigner: false, isWritable: true });
76
+ const referralPoolAccount = parseKey(keys[i++], { isSigner: false, isWritable: true });
77
+ const poolMint = parseKey(keys[i++], { isSigner: false, isWritable: true });
78
+ const systemProgramProgramId = parseKey(keys[i++], { isSigner: false, isWritable: false });
79
+ assert(systemProgramProgramId.equals(SystemProgram.programId), 'Unexpected pubkey in DepositSol instruction');
80
+ const tokenProgramId = parseKey(keys[i++], { isSigner: false, isWritable: false });
81
+ assert(tokenProgramId.equals(TOKEN_PROGRAM_ID), 'Unexpected pubkey in DepositSol instruction');
82
+ const depositAuthority = keys.length > 10 ? parseKey(keys[i++], { isSigner: true, isWritable: false }) : undefined;
83
+ assert(keys.length <= 11, 'Too many keys in DepositSol instruction');
84
+ const layoutCode = data.readUint8(0);
85
+ assert(layoutCode === DEPOSIT_SOL_LAYOUT_CODE, 'Incorrect layout code in DepositSol data');
86
+ assert(data.length === 9, 'Incorrect data size for DepositSol layout');
87
+ const lamports = data.readBigInt64LE(1);
88
+ return {
89
+ stakePool,
90
+ depositAuthority,
91
+ withdrawAuthority,
92
+ reserveStake,
93
+ fundingAccount,
94
+ destinationPoolAccount,
95
+ managerFeeAccount,
96
+ referralPoolAccount,
97
+ poolMint,
98
+ lamports: Number(lamports),
99
+ };
100
+ }
101
+ /**
102
+ * Construct Solana withdrawStake stake pool instructions from parameters.
103
+ *
104
+ * @param {WithdrawStakeInstructionsParams} params - parameters for unstaking from stake pool
105
+ * @param {WithdrawStakeStakePoolData} stakePool - data from getStakePoolAccount needed for WithdrawStake
106
+ * @returns {TransactionInstruction[]}
107
+ */
108
+ export function withdrawStakeInstructions(params, stakePool) {
109
+ const { tokenOwner, stakePoolAddress, destinationStakeAccount, validatorAddress, transferAuthority, poolAmount: poolAmountString, } = params;
110
+ const poolMint = new PublicKey(stakePool.poolMint);
111
+ const validatorList = new PublicKey(stakePool.validatorListAccount);
112
+ const managerFeeAccount = new PublicKey(stakePool.managerFeeAccount);
113
+ const poolTokenAccount = getAssociatedTokenAddressSync(poolMint, tokenOwner);
114
+ const withdrawAuthority = findWithdrawAuthorityProgramAddressSync(STAKE_POOL_PROGRAM_ID, stakePoolAddress);
115
+ const poolAmount = BigInt(poolAmountString);
116
+ return [
117
+ createApproveInstruction(poolTokenAccount, transferAuthority, tokenOwner, poolAmount),
118
+ SystemProgram.createAccount({
119
+ fromPubkey: tokenOwner,
120
+ newAccountPubkey: destinationStakeAccount,
121
+ lamports: STAKE_ACCOUNT_RENT_EXEMPT_AMOUNT,
122
+ space: StakeProgram.space,
123
+ programId: StakeProgram.programId,
124
+ }),
125
+ StakePoolInstruction.withdrawStake({
126
+ stakePool: stakePoolAddress,
127
+ validatorList: validatorList,
128
+ validatorStake: validatorAddress,
129
+ destinationStake: destinationStakeAccount,
130
+ destinationStakeAuthority: tokenOwner,
131
+ sourceTransferAuthority: transferAuthority,
132
+ sourcePoolAccount: poolTokenAccount,
133
+ managerFeeAccount: managerFeeAccount,
134
+ poolMint: poolMint,
135
+ poolTokens: Number(poolAmount),
136
+ withdrawAuthority,
137
+ }),
138
+ ...StakeProgram.deactivate({
139
+ stakePubkey: destinationStakeAccount,
140
+ authorizedPubkey: tokenOwner,
141
+ }).instructions,
142
+ ];
143
+ }
144
+ /**
145
+ * Construct Solana withdrawStake stake pool parameters from instruction.
146
+ *
147
+ * @param {TransactionInstruction} instruction
148
+ * @returns {DepositSolParams}
149
+ */
150
+ export function decodeWithdrawStake(instruction) {
151
+ const { programId, keys, data } = instruction;
152
+ assert(programId.equals(STAKE_POOL_PROGRAM_ID), 'Invalid WithdrawStake instruction, program ID must be the Stake Pool Program');
153
+ const layoutCode = data.readUint8(0);
154
+ assert(layoutCode === WITHDRAW_STAKE_LAYOUT_CODE, 'Incorrect layout code in WithdrawStake data');
155
+ assert(data.length === 9, 'Incorrect data size for WithdrawStake layout');
156
+ const poolTokens = data.readBigInt64LE(1);
157
+ let i = 0;
158
+ const stakePool = parseKey(keys[i++], { isSigner: false, isWritable: true });
159
+ const validatorList = parseKey(keys[i++], { isSigner: false, isWritable: true });
160
+ const withdrawAuthority = parseKey(keys[i++], { isSigner: false, isWritable: false });
161
+ const validatorStake = parseKey(keys[i++], { isSigner: false, isWritable: true });
162
+ const destinationStake = keys[i++].pubkey;
163
+ const destinationStakeAuthority = keys[i++].pubkey;
164
+ const sourceTransferAuthority = parseKey(keys[i++], { isSigner: true, isWritable: false });
165
+ const sourcePoolAccount = parseKey(keys[i++], { isSigner: false, isWritable: true });
166
+ const managerFeeAccount = parseKey(keys[i++], { isSigner: false, isWritable: true });
167
+ const poolMint = parseKey(keys[i++], { isSigner: false, isWritable: true });
168
+ const sysvarClockPubkey = parseKey(keys[i++], { isSigner: false, isWritable: false });
169
+ assert(sysvarClockPubkey.equals(SYSVAR_CLOCK_PUBKEY), 'Unexpected pubkey in WithdrawStake instruction');
170
+ const tokenProgramId = parseKey(keys[i++], { isSigner: false, isWritable: false });
171
+ assert(tokenProgramId.equals(TOKEN_PROGRAM_ID), 'Unexpected pubkey in WithdrawStake instruction');
172
+ const stakeProgramProgramId = parseKey(keys[i++], { isSigner: false, isWritable: false });
173
+ assert(stakeProgramProgramId.equals(StakeProgram.programId), 'Unexpected pubkey in WithdrawStake instruction');
174
+ assert(i === keys.length, 'Too many keys in WithdrawStake instruction');
175
+ return {
176
+ stakePool,
177
+ validatorList,
178
+ withdrawAuthority,
179
+ validatorStake,
180
+ destinationStake,
181
+ destinationStakeAuthority,
182
+ sourceTransferAuthority,
183
+ sourcePoolAccount,
184
+ managerFeeAccount,
185
+ poolMint,
186
+ poolTokens: Number(poolTokens),
187
+ };
188
+ }
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaml0b1N0YWtlUG9vbE9wZXJhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2ppdG9TdGFrZVBvb2xPcGVyYXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIscUJBQXFCLEdBR3RCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUNMLHdCQUF3QixFQUN4Qix1Q0FBdUMsRUFDdkMsNkJBQTZCLEVBQzdCLGdCQUFnQixHQUNqQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFFTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGFBQWEsRUFDYixtQkFBbUIsR0FFcEIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBc0QvRCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxFQUFFLENBQUM7QUFDMUMsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsRUFBRSxDQUFDO0FBRTdDOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSx1Q0FBdUMsQ0FBQyxTQUFvQixFQUFFLGdCQUEyQjtJQUN2RyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxTQUFTLENBQUMsc0JBQXNCLENBQzFELENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUN0RCxTQUFTLENBQ1YsQ0FBQztJQUNGLE9BQU8saUJBQWlCLENBQUM7QUFDM0IsQ0FBQztBQVVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQ3BDLE1BQW9DLEVBQ3BDLFNBQWtDLEVBQ2xDLDRCQUFxQztJQUVyQyxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxH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QUFFLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUYsTUFBTSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEVBQUUsZ0RBQWdELENBQUMsQ0FBQztJQUMvRyxNQUFNLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsNENBQTRDLENBQUMsQ0FBQztJQUV4RSxPQUFPO1FBQ0wsU0FBUztRQUNULGFBQWE7UUFDYixpQkFBaUI7UUFDakIsY0FBYztRQUNkLGdCQUFnQjtRQUNoQix5QkFBeUI7UUFDekIsdUJBQXVCO1FBQ3ZCLGlCQUFpQjtRQUNqQixpQkFBaUI7UUFDakIsUUFBUTtRQUNSLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDO0tBQy9CLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZSBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZGVwb3NpdFNvbCBpbnN0cnVjdGlvbi4gT24gdXBncmFkZSBvZlxuICogJ0Bzb2xhbmEvc3BsLXRva2VuJywgdGhpcyBtb2R1bGUgbWF5IG5vIGxvbmdlciBiZSBuZWNlc3NhcnkuXG4gKi9cblxuaW1wb3J0IHtcbiAgU3Rha2VQb29sSW5zdHJ1Y3Rpb24sXG4gIFNUQUtFX1BPT0xfUFJPR1JBTV9JRCxcbiAgRGVwb3NpdFNvbFBhcmFtcyxcbiAgV2l0aGRyYXdTdGFrZVBhcmFtcyxcbn0gZnJvbSAnQHNvbGFuYS9zcGwtc3Rha2UtcG9vbCc7XG5pbXBvcnQge1xuICBjcmVhdGVBcHByb3ZlSW5zdHJ1Y3Rpb24sXG4gIGNyZWF0ZUFzc29jaWF0ZWRUb2tlbkFjY291bnRJbnN0cnVjdGlvbixcbiAgZ2V0QXNzb2NpYXRlZFRva2VuQWRkcmVzc1N5bmMsXG4gIFRPS0VOX1BST0dSQU1fSUQsXG59IGZyb20gJ0Bzb2xhbmEvc3BsLXRva2VuJztcbmltcG9ydCB7XG4gIEFjY291bnRNZXRhLFxuICBQdWJsaWNLZXksXG4gIFN0YWtlUHJvZ3JhbSxcbiAgU3lzdGVtUHJvZ3JhbSxcbiAgU1lTVkFSX0NMT0NLX1BVQktFWSxcbiAgVHJhbnNhY3Rpb25JbnN0cnVjdGlvbixcbn0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7IFNUQUtFX0FDQ09VTlRfUkVOVF9FWEVNUFRfQU1PVU5UIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG4vKipcbiAqIFJlcGxpY2F0ZXMgdGhlIGZpZWxkcyBpbiBAc29sYW5hL3NwbC1zdGFrZS1wb29sIEZlZS5cbiAqXG4gKiBAc2VlIHtGZWV9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmVlIHtcbiAgZGVub21pbmF0b3I6IHN0cmluZztcbiAgbnVtZXJhdG9yOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVwbGljYXRlcyB0aGUgZmllbGRzIGluIEBzb2xhbmEvc3BsLXN0YWtlLXBvb2wgU3Rha2VQb29sTGF5b3V0LlxuICpcbiAqIEBzZWUge1N0YWtlUG9vbExheW91dH1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFrZVBvb2xEYXRhIHtcbiAgYWNjb3VudFR5cGU6IG51bWJlcjtcbiAgbWFuYWdlcjogc3RyaW5nO1xuICBzdGFrZXI6IHN0cmluZztcbiAgc3Rha2VEZXBvc2l0QXV0aG9yaXR5OiBzdHJpbmc7XG4gIHN0YWtlV2l0aGRyYXdCdW1wU2VlZDogbnVtYmVyO1xuICB2YWxpZGF0b3JMaXN0QWNjb3VudDogc3RyaW5nO1xuICByZXNlcnZlU3Rha2U6IHN0cmluZztcbiAgcG9vbE1pbnQ6IHN0cmluZztcbiAgbWFuYWdlckZlZUFjY291bnQ6IHN0cmluZztcbiAgdG9rZW5Qcm9ncmFtSWQ6IHN0cmluZztcbiAgdG90YWxMYW1wb3J0czogc3RyaW5nO1xuICBwb29sVG9rZW5TdXBwbHk6IHN0cmluZztcbiAgbGFzdFVwZGF0ZUVwb2NoOiBzdHJpbmc7XG4gIGxvY2t1cDoge1xuICAgIHVuaXhUaW1lc3RhbXA6IHN0cmluZztcbiAgICBlcG9jaDogc3RyaW5nO1xuICAgIGN1c3RvZGlhbjogc3RyaW5nO1xuICB9O1xuICBlcG9jaEZlZTogRmVlO1xuICBuZXh0RXBvY2hGZWU/OiBGZWUgfCB1bmRlZmluZWQ7XG4gIHByZWZlcnJlZERlcG9zaXRWYWxpZGF0b3JWb3RlQWRkcmVzcz86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgcHJlZmVycmVkV2l0aGRyYXdWYWxpZGF0b3JWb3RlQWRkcmVzcz86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgc3Rha2VEZXBvc2l0RmVlOiBGZWU7XG4gIHN0YWtlV2l0aGRyYXdhbEZlZTogRmVlO1xuICBuZXh0U3Rha2VXaXRoZHJhd2FsRmVlPzogRmVlIHwgdW5kZWZpbmVkO1xuICBzdGFrZVJlZmVycmFsRmVlOiBudW1iZXI7XG4gIHNvbERlcG9zaXRBdXRob3JpdHk/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHNvbERlcG9zaXRGZWU6IEZlZTtcbiAgc29sUmVmZXJyYWxGZWU6IG51bWJlcjtcbiAgc29sV2l0aGRyYXdBdXRob3JpdHk/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHNvbFdpdGhkcmF3YWxGZWU6IEZlZTtcbiAgbmV4dFNvbFdpdGhkcmF3YWxGZWU/OiBGZWUgfCB1bmRlZmluZWQ7XG4gIGxhc3RFcG9jaFBvb2xUb2tlblN1cHBseTogc3RyaW5nO1xuICBsYXN0RXBvY2hUb3RhbExhbXBvcnRzOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBERVBPU0lUX1NPTF9MQVlPVVRfQ09ERSA9IDE0O1xuZXhwb3J0IGNvbnN0IFdJVEhEUkFXX1NUQUtFX0xBWU9VVF9DT0RFID0gMTA7XG5cbi8qKlxuICogR2VuZXJhdGVzIHRoZSB3aXRoZHJhdyBhdXRob3JpdHkgcHJvZ3JhbSBhZGRyZXNzIGZvciB0aGUgc3Rha2UgcG9vbC5cbiAqIExpa2UgZmluZFdpdGhkcmF3QXV0aG9yaXR5UHJvZ3JhbUFkZHJlc3MgaW4gQHNvbGFuYS9zcGwtc3Rha2UtcG9vbCxcbiAqIGJ1dCBzeW5jaHJvbm91cy5cbiAqXG4gKiBAc2VlIHtmaW5kV2l0aGRyYXdBdXRob3JpdHlQcm9ncmFtQWRkcmVzc31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRXaXRoZHJhd0F1dGhvcml0eVByb2dyYW1BZGRyZXNzU3luYyhwcm9ncmFtSWQ6IFB1YmxpY0tleSwgc3Rha2VQb29sQWRkcmVzczogUHVibGljS2V5KTogUHVibGljS2V5IHtcbiAgY29uc3QgW3dpdGhkcmF3QXV0aG9yaXR5XSA9IFB1YmxpY0tleS5maW5kUHJvZ3JhbUFkZHJlc3NTeW5jKFxuICAgIFtzdGFrZVBvb2xBZGRyZXNzLnRvQnVmZmVyKCksIEJ1ZmZlci5mcm9tKCd3aXRoZHJhdycpXSxcbiAgICBwcm9ncmFtSWRcbiAgKTtcbiAgcmV0dXJuIHdpdGhkcmF3QXV0aG9yaXR5O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlcG9zaXRTb2xJbnN0cnVjdGlvbnNQYXJhbXMge1xuICBzdGFrZVBvb2xBZGRyZXNzOiBQdWJsaWNLZXk7XG4gIGZyb206IFB1YmxpY0tleTtcbiAgbGFtcG9ydHM6IGJpZ2ludDtcbn1cblxuZXhwb3J0IHR5cGUgRGVwb3NpdFNvbFN0YWtlUG9vbERhdGEgPSBQaWNrPFN0YWtlUG9vbERhdGEsICdwb29sTWludCcgfCAncmVzZXJ2ZVN0YWtlJyB8ICdtYW5hZ2VyRmVlQWNjb3VudCc+O1xuXG4vKipcbiAqIENvbnN0cnVjdCBTb2xhbmEgZGVwb3NpdFNvbCBzdGFrZSBwb29sIGluc3RydWN0aW9uIGZyb20gcGFyYW1ldGVycy5cbiAqXG4gKiBAcGFyYW0ge0RlcG9zaXRTb2xJbnN0cnVjdGlvbnNQYXJhbXN9IHBhcmFtcyAtIHBhcmFtZXRlcnMgZm9yIHN0YWtpbmcgdG8gc3Rha2UgcG9vbFxuICogQHBhcmFtIHtEZXBvc2l0U29sU3Rha2VQb29sRGF0YX0gc3Rha2VQb29sIC0gZGF0YSBmcm9tIGdldFN0YWtlUG9vbEFjY291bnQgbmVlZGVkIGZvciBEZXBvc2l0U29sXG4gKiBAcGFyYW0gY3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudFxuICogQHJldHVybnMge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb259XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXBvc2l0U29sSW5zdHJ1Y3Rpb25zKFxuICBwYXJhbXM6IERlcG9zaXRTb2xJbnN0cnVjdGlvbnNQYXJhbXMsXG4gIHN0YWtlUG9vbDogRGVwb3NpdFNvbFN0YWtlUG9vbERhdGEsXG4gIGNyZWF0ZUFzc29jaWF0ZWRUb2tlbkFjY291bnQ6IGJvb2xlYW5cbik6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSB7XG4gIGNvbnN0IHsgc3Rha2VQb29sQWRkcmVzcywgZnJvbSwgbGFtcG9ydHMgfSA9IHBhcmFtcztcbiAgY29uc3QgcG9vbE1pbnQgPSBuZXcgUHVibGljS2V5KHN0YWtlUG9vbC5wb29sTWludCk7XG4gIGNvbnN0IHJlc2VydmVTdGFrZSA9IG5ldyBQdWJsaWNLZXkoc3Rha2VQb29sLnJlc2VydmVTdGFrZSk7XG4gIGNvbnN0IG1hbmFnZXJGZWVBY2NvdW50ID0gbmV3IFB1YmxpY0tleShzdGFrZVBvb2wubWFuYWdlckZlZUFjY291bnQpO1xuXG4gIC8vIGZpbmRXaXRoZHJhd0F1dGhvcml0eVByb2dyYW1BZGRyZXNzXG4gIGNvbnN0IHdpdGhkcmF3QXV0aG9yaXR5ID0gZmluZFdpdGhkcmF3QXV0aG9yaXR5UHJvZ3JhbUFkZHJlc3NTeW5jKFNUQUtFX1BPT0xfUFJPR1JBTV9JRCwgc3Rha2VQb29sQWRkcmVzcyk7XG4gIGNvbnN0IGFzc29jaWF0ZWRBZGRyZXNzID0gZ2V0QXNzb2NpYXRlZFRva2VuQWRkcmVzc1N5bmMocG9vbE1pbnQsIGZyb20pO1xuXG4gIGNvbnN0IGluc3RydWN0aW9uczogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdID0gW107XG5cbiAgaWYgKGNyZWF0ZUFzc29jaWF0ZWRUb2tlbkFjY291bnQpIHtcbiAgICBpbnN0cnVjdGlvbnMucHVzaChjcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50SW5zdHJ1Y3Rpb24oZnJvbSwgYXNzb2NpYXRlZEFkZHJlc3MsIGZyb20sIHBvb2xNaW50KSk7XG4gIH1cblxuICBpbnN0cnVjdGlvbnMucHVzaChcbiAgICBTdGFrZVBvb2xJbnN0cnVjdGlvbi5kZXBvc2l0U29sKHtcbiAgICAgIHN0YWtlUG9vbDogc3Rha2VQb29sQWRkcmVzcyxcbiAgICAgIHJlc2VydmVTdGFrZSxcbiAgICAgIGZ1bmRpbmdBY2NvdW50OiBmcm9tLFxuICAgICAgZGVzdGluYXRpb25Qb29sQWNjb3VudDogYXNzb2NpYXRlZEFkZHJlc3MsXG4gICAgICBtYW5hZ2VyRmVlQWNjb3VudCxcbiAgICAgIHJlZmVycmFsUG9vbEFjY291bnQ6IGFzc29jaWF0ZWRBZGRyZXNzLFxuICAgICAgcG9vbE1pbnQsXG4gICAgICBsYW1wb3J0czogTnVtYmVyKGxhbXBvcnRzKSxcbiAgICAgIHdpdGhkcmF3QXV0aG9yaXR5LFxuICAgIH0pXG4gICk7XG5cbiAgcmV0dXJuIGluc3RydWN0aW9ucztcbn1cblxuZnVuY3Rpb24gcGFyc2VLZXkoa2V5OiBBY2NvdW50TWV0YSwgdGVtcGxhdGU6IHsgaXNTaWduZXI6IGJvb2xlYW47IGlzV3JpdGFibGU6IGJvb2xlYW4gfSk6IFB1YmxpY0tleSB7XG4gIGFzc2VydChcbiAgICBrZXkuaXNTaWduZXIgPT09IHRlbXBsYXRlLmlzU2lnbmVyICYmIGtleS5pc1dyaXRhYmxlID09PSB0ZW1wbGF0ZS5pc1dyaXRhYmxlLFxuICAgIGBVbmV4cGVjdGVkIGtleSBtZXRhZGF0YSBpbiBpbnN0cnVjdGlvbjogeyBpc1NpZ25lcjogJHtrZXkuaXNTaWduZXJ9LCBpc1dyaXRhYmxlOiAke2tleS5pc1dyaXRhYmxlfSB9YFxuICApO1xuICByZXR1cm4ga2V5LnB1YmtleTtcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgU29sYW5hIGRlcG9zaXRTb2wgc3Rha2UgcG9vbCBwYXJhbWV0ZXJzIGZyb20gaW5zdHJ1Y3Rpb24uXG4gKlxuICogQHBhcmFtIHtUcmFuc2FjdGlvbkluc3RydWN0aW9ufSBpbnN0cnVjdGlvblxuICogQHJldHVybnMge0RlcG9zaXRTb2xQYXJhbXN9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVEZXBvc2l0U29sKGluc3RydWN0aW9uOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uKTogRGVwb3NpdFNvbFBhcmFtcyB7XG4gIGNvbnN0IHsgcHJvZ3JhbUlkLCBrZXlzLCBkYXRhIH0gPSBpbnN0cnVjdGlvbjtcblxuICBhc3NlcnQoXG4gICAgcHJvZ3JhbUlkLmVxdWFscyhTVEFLRV9QT09MX1BST0dSQU1fSUQpLFxuICAgICdJbnZhbGlkIERlcG9zaXRTb2wgaW5zdHJ1Y3Rpb24sIHByb2dyYW0gSUQgbXVzdCBiZSB0aGUgU3Rha2UgUG9vbCBQcm9ncmFtJ1xuICApO1xuXG4gIGxldCBpID0gMDtcbiAgY29uc3Qgc3Rha2VQb29sID0gcGFyc2VLZXkoa2V5c1tpKytdLCB7IGlzU2lnbmVyOiBmYWxzZSwgaXNXcml0YWJsZTogdHJ1ZSB9KTtcbiAgY29uc3Qgd2l0aGRyYXdBdXRob3JpdHkgPSBwYXJzZUtleShrZXlzW2krK10sIHsgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiBmYWxzZSB9KTtcbiAgY29uc3QgcmVzZXJ2ZVN0YWtlID0gcGFyc2VLZXkoa2V5c1tpKytdLCB7IGlzU2lnbmVyOiBmYWxzZSwgaXNXcml0YWJsZTogdHJ1ZSB9KTtcbiAgY29uc3QgZnVuZGluZ0FjY291bnQgPSBwYXJzZUtleShrZXlzW2krK10sIHsgaXNTaWduZXI6IHRydWUsIGlzV3JpdGFibGU6IHRydWUgfSk7XG4gIGNvbnN0IGRlc3RpbmF0aW9uUG9vbEFjY291bnQgPSBwYXJzZUtleShrZXlzW2krK10sIHsgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiB0cnVlIH0pO1xuICBjb25zdCBtYW5hZ2VyRmVlQWNjb3VudCA9IHBhcnNlS2V5KGtleXNbaSsrXSwgeyBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IHRydWUgfSk7XG4gIGNvbnN0IHJlZmVycmFsUG9vbEFjY291bnQgPSBwYXJzZUtleShrZXlzW2krK10sIHsgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiB0cnVlIH0pO1xuICBjb25zdCBwb29sTWludCA9IHBhcnNlS2V5KGtleXNbaSsrXSwgeyBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IHRydWUgfSk7XG4gIGNvbnN0IHN5c3RlbVByb2dyYW1Qcm9ncmFtSWQgPSBwYXJzZUtleShrZXlzW2krK10sIHsgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiBmYWxzZSB9KTtcbiAgYXNzZXJ0KHN5c3RlbVByb2dyYW1Qcm9ncmFtSWQuZXF1YWxzKFN5c3RlbVByb2dyYW0ucHJvZ3JhbUlkKSwgJ1VuZXhwZWN0ZWQgcHVia2V5IGluIERlcG9zaXRTb2wgaW5zdHJ1Y3Rpb24nKTtcbiAgY29uc3QgdG9rZW5Qcm9ncmFtSWQgPSBwYXJzZUtleShrZXlzW2krK10sIHsgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiBmYWxzZSB9KTtcbiAgYXNzZXJ0KHRva2VuUHJvZ3JhbUlkLmVxdWFscyhUT0tFTl9QUk9HUkFNX0lEKSwgJ1VuZXhwZWN0ZWQgcHVia2V5IGluIERlcG9zaXRTb2wgaW5zdHJ1Y3Rpb24nKTtcbiAgY29uc3QgZGVwb3NpdEF1dGhvcml0eSA9IGtleXMubGVuZ3RoID4gMTAgPyBwYXJzZUtleShrZXlzW2krK10sIHsgaXNTaWduZXI6IHRydWUsIGlzV3JpdGFibGU6IGZhbHNlIH0pIDogdW5kZWZpbmVkO1xuICBhc3NlcnQoa2V5cy5sZW5ndGggPD0gMTEsICdUb28gbWFueSBrZXlzIGluIERlcG9zaXRTb2wgaW5zdHJ1Y3Rpb24nKTtcblxuICBjb25zdCBsYXlvdXRDb2RlID0gZGF0YS5yZWFkVWludDgoMCk7XG4gIGFzc2VydChsYXlvdXRDb2RlID09PSBERVBPU0lUX1NPTF9MQVlPVVRfQ09ERSwgJ0luY29ycmVjdCBsYXlvdXQgY29kZSBpbiBEZXBvc2l0U29sIGRhdGEnKTtcbiAgYXNzZXJ0KGRhdGEubGVuZ3RoID09PSA5LCAnSW5jb3JyZWN0IGRhdGEgc2l6ZSBmb3IgRGVwb3NpdFNvbCBsYXlvdXQnKTtcbiAgY29uc3QgbGFtcG9ydHMgPSBkYXRhLnJlYWRCaWdJbnQ2NExFKDEpO1xuXG4gIHJldHVybiB7XG4gICAgc3Rha2VQb29sLFxuICAgIGRlcG9zaXRBdXRob3JpdHksXG4gICAgd2l0aGRyYXdBdXRob3JpdHksXG4gICAgcmVzZXJ2ZVN0YWtlLFxuICAgIGZ1bmRpbmdBY2NvdW50LFxuICAgIGRlc3RpbmF0aW9uUG9vbEFjY291bnQsXG4gICAgbWFuYWdlckZlZUFjY291bnQsXG4gICAgcmVmZXJyYWxQb29sQWNjb3VudCxcbiAgICBwb29sTWludCxcbiAgICBsYW1wb3J0czogTnVtYmVyKGxhbXBvcnRzKSxcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXaXRoZHJhd1N0YWtlSW5zdHJ1Y3Rpb25zUGFyYW1zIHtcbiAgc3Rha2VQb29sQWRkcmVzczogUHVibGljS2V5O1xuICB0b2tlbk93bmVyOiBQdWJsaWNLZXk7XG4gIGRlc3RpbmF0aW9uU3Rha2VBY2NvdW50OiBQdWJsaWNLZXk7XG4gIHZhbGlkYXRvckFkZHJlc3M6IFB1YmxpY0tleTtcbiAgdHJhbnNmZXJBdXRob3JpdHk6IFB1YmxpY0tleTtcbiAgcG9vbEFtb3VudDogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBXaXRoZHJhd1N0YWtlU3Rha2VQb29sRGF0YSA9IFBpY2s8U3Rha2VQb29sRGF0YSwgJ3Bvb2xNaW50JyB8ICd2YWxpZGF0b3JMaXN0QWNjb3VudCcgfCAnbWFuYWdlckZlZUFjY291bnQnPjtcblxuLyoqXG4gKiBDb25zdHJ1Y3QgU29sYW5hIHdpdGhkcmF3U3Rha2Ugc3Rha2UgcG9vbCBpbnN0cnVjdGlvbnMgZnJvbSBwYXJhbWV0ZXJzLlxuICpcbiAqIEBwYXJhbSB7V2l0aGRyYXdTdGFrZUluc3RydWN0aW9uc1BhcmFtc30gcGFyYW1zIC0gcGFyYW1ldGVycyBmb3IgdW5zdGFraW5nIGZyb20gc3Rha2UgcG9vbFxuICogQHBhcmFtIHtXaXRoZHJhd1N0YWtlU3Rha2VQb29sRGF0YX0gc3Rha2VQb29sIC0gZGF0YSBmcm9tIGdldFN0YWtlUG9vbEFjY291bnQgbmVlZGVkIGZvciBXaXRoZHJhd1N0YWtlXG4gKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aGRyYXdTdGFrZUluc3RydWN0aW9ucyhcbiAgcGFyYW1zOiBXaXRoZHJhd1N0YWtlSW5zdHJ1Y3Rpb25zUGFyYW1zLFxuICBzdGFrZVBvb2w6IFdpdGhkcmF3U3Rha2VTdGFrZVBvb2xEYXRhXG4pOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10ge1xuICBjb25zdCB7XG4gICAgdG9rZW5Pd25lcixcbiAgICBzdGFrZVBvb2xBZGRyZXNzLFxuICAgIGRlc3RpbmF0aW9uU3Rha2VBY2NvdW50LFxuICAgIHZhbGlkYXRvckFkZHJlc3MsXG4gICAgdHJhbnNmZXJBdXRob3JpdHksXG4gICAgcG9vbEFtb3VudDogcG9vbEFtb3VudFN0cmluZyxcbiAgfSA9IHBhcmFtcztcblxuICBjb25zdCBwb29sTWludCA9IG5ldyBQdWJsaWNLZXkoc3Rha2VQb29sLnBvb2xNaW50KTtcbiAgY29uc3QgdmFsaWRhdG9yTGlzdCA9IG5ldyBQdWJsaWNLZXkoc3Rha2VQb29sLnZhbGlkYXRvckxpc3RBY2NvdW50KTtcbiAgY29uc3QgbWFuYWdlckZlZUFjY291bnQgPSBuZXcgUHVibGljS2V5KHN0YWtlUG9vbC5tYW5hZ2VyRmVlQWNjb3VudCk7XG5cbiAgY29uc3QgcG9vbFRva2VuQWNjb3VudCA9IGdldEFzc29jaWF0ZWRUb2tlbkFkZHJlc3NTeW5jKHBvb2xNaW50LCB0b2tlbk93bmVyKTtcbiAgY29uc3Qgd2l0aGRyYXdBdXRob3JpdHkgPSBmaW5kV2l0aGRyYXdBdXRob3JpdHlQcm9ncmFtQWRkcmVzc1N5bmMoU1RBS0VfUE9PTF9QUk9HUkFNX0lELCBzdGFrZVBvb2xBZGRyZXNzKTtcblxuICBjb25zdCBwb29sQW1vdW50ID0gQmlnSW50KHBvb2xBbW91bnRTdHJpbmcpO1xuXG4gIHJldHVybiBbXG4gICAgY3JlYXRlQXBwcm92ZUluc3RydWN0aW9uKHBvb2xUb2tlbkFjY291bnQsIHRyYW5zZmVyQXV0aG9yaXR5LCB0b2tlbk93bmVyLCBwb29sQW1vdW50KSxcbiAgICBTeXN0ZW1Qcm9ncmFtLmNyZWF0ZUFjY291bnQoe1xuICAgICAgZnJvbVB1YmtleTogdG9rZW5Pd25lcixcbiAgICAgIG5ld0FjY291bnRQdWJrZXk6IGRlc3RpbmF0aW9uU3Rha2VBY2NvdW50LFxuICAgICAgbGFtcG9ydHM6IFNUQUtFX0FDQ09VTlRfUkVOVF9FWEVNUFRfQU1PVU5ULFxuICAgICAgc3BhY2U6IFN0YWtlUHJvZ3JhbS5zcGFjZSxcbiAgICAgIHByb2dyYW1JZDogU3Rha2VQcm9ncmFtLnByb2dyYW1JZCxcbiAgICB9KSxcbiAgICBTdGFrZVBvb2xJbnN0cnVjdGlvbi53aXRoZHJhd1N0YWtlKHtcbiAgICAgIHN0YWtlUG9vbDogc3Rha2VQb29sQWRkcmVzcyxcbiAgICAgIHZhbGlkYXRvckxpc3Q6IHZhbGlkYXRvckxpc3QsXG4gICAgICB2YWxpZGF0b3JTdGFrZTogdmFsaWRhdG9yQWRkcmVzcyxcbiAgICAgIGRlc3RpbmF0aW9uU3Rha2U6IGRlc3RpbmF0aW9uU3Rha2VBY2NvdW50LFxuICAgICAgZGVzdGluYXRpb25TdGFrZUF1dGhvcml0eTogdG9rZW5Pd25lcixcbiAgICAgIHNvdXJjZVRyYW5zZmVyQXV0aG9yaXR5OiB0cmFuc2ZlckF1dGhvcml0eSxcbiAgICAgIHNvdXJjZVBvb2xBY2NvdW50OiBwb29sVG9rZW5BY2NvdW50LFxuICAgICAgbWFuYWdlckZlZUFjY291bnQ6IG1hbmFnZXJGZWVBY2NvdW50LFxuICAgICAgcG9vbE1pbnQ6IHBvb2xNaW50LFxuICAgICAgcG9vbFRva2VuczogTnVtYmVyKHBvb2xBbW91bnQpLFxuICAgICAgd2l0aGRyYXdBdXRob3JpdHksXG4gICAgfSksXG4gICAgLi4uU3Rha2VQcm9ncmFtLmRlYWN0aXZhdGUoe1xuICAgICAgc3Rha2VQdWJrZXk6IGRlc3RpbmF0aW9uU3Rha2VBY2NvdW50LFxuICAgICAgYXV0aG9yaXplZFB1YmtleTogdG9rZW5Pd25lcixcbiAgICB9KS5pbnN0cnVjdGlvbnMsXG4gIF07XG59XG5cbi8qKlxuICogQ29uc3RydWN0IFNvbGFuYSB3aXRoZHJhd1N0YWtlIHN0YWtlIHBvb2wgcGFyYW1ldGVycyBmcm9tIGluc3RydWN0aW9uLlxuICpcbiAqIEBwYXJhbSB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbn0gaW5zdHJ1Y3Rpb25cbiAqIEByZXR1cm5zIHtEZXBvc2l0U29sUGFyYW1zfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlV2l0aGRyYXdTdGFrZShpbnN0cnVjdGlvbjogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbik6IFdpdGhkcmF3U3Rha2VQYXJhbXMge1xuICBjb25zdCB7IHByb2dyYW1JZCwga2V5cywgZGF0YSB9ID0gaW5zdHJ1Y3Rpb247XG5cbiAgYXNzZXJ0KFxuICAgIHByb2dyYW1JZC5lcXVhbHMoU1RBS0VfUE9PTF9QUk9HUkFNX0lEKSxcbiAgICAnSW52YWxpZCBXaXRoZHJhd1N0YWtlIGluc3RydWN0aW9uLCBwcm9ncmFtIElEIG11c3QgYmUgdGhlIFN0YWtlIFBvb2wgUHJvZ3JhbSdcbiAgKTtcblxuICBjb25zdCBsYXlvdXRDb2RlID0gZGF0YS5yZWFkVWludDgoMCk7XG4gIGFzc2VydChsYXlvdXRDb2RlID09PSBXSVRIRFJBV19TVEFLRV9MQVlPVVRfQ09ERSwgJ0luY29ycmVjdCBsYXlvdXQgY29kZSBpbiBXaXRoZHJhd1N0YWtlIGRhdGEnKTtcbiAgYXNzZXJ0KGRhdGEubGVuZ3RoID09PSA5LCAnSW5jb3JyZWN0IGRhdGEgc2l6ZSBmb3IgV2l0aGRyYXdTdGFrZSBsYXlvdXQnKTtcbiAgY29uc3QgcG9vbFRva2VucyA9IGRhdGEucmVhZEJpZ0ludDY0TEUoMSk7XG5cbiAgbGV0IGkgPSAwO1xuICBjb25zdCBzdGFrZVBvb2wgPSBwYXJzZUtleShrZXlzW2krK10sIHsgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiB0cnVlIH0pO1xuICBjb25zdCB2YWxpZGF0b3JMaXN0ID0gcGFyc2VLZXkoa2V5c1tpKytdLCB7IGlzU2lnbmVyOiBmYWxzZSwgaXNXcml0YWJsZTogdHJ1ZSB9KTtcbiAgY29uc3Qgd2l0aGRyYXdBdXRob3JpdHkgPSBwYXJzZUtleShrZXlzW2krK10sIHsgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiBmYWxzZSB9KTtcbiAgY29uc3QgdmFsaWRhdG9yU3Rha2UgPSBwYXJzZUtleShrZXlzW2krK10sIHsgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiB0cnVlIH0pO1xuICBjb25zdCBkZXN0aW5hdGlvblN0YWtlID0ga2V5c1tpKytdLnB1YmtleTtcbiAgY29uc3QgZGVzdGluYXRpb25TdGFrZUF1dGhvcml0eSA9IGtleXNbaSsrXS5wdWJrZXk7XG4gIGNvbnN0IHNvdXJjZVRyYW5zZmVyQXV0aG9yaXR5ID0gcGFyc2VLZXkoa2V5c1tpKytdLCB7IGlzU2lnbmVyOiB0cnVlLCBpc1dyaXRhYmxlOiBmYWxzZSB9KTtcbiAgY29uc3Qgc291cmNlUG9vbEFjY291bnQgPSBwYXJzZUtleShrZXlzW2krK10sIHsgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiB0cnVlIH0pO1xuICBjb25zdCBtYW5hZ2VyRmVlQWNjb3VudCA9IHBhcnNlS2V5KGtleXNbaSsrXSwgeyBpc1NpZ25lcjogZmFsc2UsIGlzV3JpdGFibGU6IHRydWUgfSk7XG4gIGNvbnN0IHBvb2xNaW50ID0gcGFyc2VLZXkoa2V5c1tpKytdLCB7IGlzU2lnbmVyOiBmYWxzZSwgaXNXcml0YWJsZTogdHJ1ZSB9KTtcbiAgY29uc3Qgc3lzdmFyQ2xvY2tQdWJrZXkgPSBwYXJzZUtleShrZXlzW2krK10sIHsgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiBmYWxzZSB9KTtcbiAgYXNzZXJ0KHN5c3ZhckNsb2NrUHVia2V5LmVxdWFscyhTWVNWQVJfQ0xPQ0tfUFVCS0VZKSwgJ1VuZXhwZWN0ZWQgcHVia2V5IGluIFdpdGhkcmF3U3Rha2UgaW5zdHJ1Y3Rpb24nKTtcbiAgY29uc3QgdG9rZW5Qcm9ncmFtSWQgPSBwYXJzZUtleShrZXlzW2krK10sIHsgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiBmYWxzZSB9KTtcbiAgYXNzZXJ0KHRva2VuUHJvZ3JhbUlkLmVxdWFscyhUT0tFTl9QUk9HUkFNX0lEKSwgJ1VuZXhwZWN0ZWQgcHVia2V5IGluIFdpdGhkcmF3U3Rha2UgaW5zdHJ1Y3Rpb24nKTtcbiAgY29uc3Qgc3Rha2VQcm9ncmFtUHJvZ3JhbUlkID0gcGFyc2VLZXkoa2V5c1tpKytdLCB7IGlzU2lnbmVyOiBmYWxzZSwgaXNXcml0YWJsZTogZmFsc2UgfSk7XG4gIGFzc2VydChzdGFrZVByb2dyYW1Qcm9ncmFtSWQuZXF1YWxzKFN0YWtlUHJvZ3JhbS5wcm9ncmFtSWQpLCAnVW5leHBlY3RlZCBwdWJrZXkgaW4gV2l0aGRyYXdTdGFrZSBpbnN0cnVjdGlvbicpO1xuICBhc3NlcnQoaSA9PT0ga2V5cy5sZW5ndGgsICdUb28gbWFueSBrZXlzIGluIFdpdGhkcmF3U3Rha2UgaW5zdHJ1Y3Rpb24nKTtcblxuICByZXR1cm4ge1xuICAgIHN0YWtlUG9vbCxcbiAgICB2YWxpZGF0b3JMaXN0LFxuICAgIHdpdGhkcmF3QXV0aG9yaXR5LFxuICAgIHZhbGlkYXRvclN0YWtlLFxuICAgIGRlc3RpbmF0aW9uU3Rha2UsXG4gICAgZGVzdGluYXRpb25TdGFrZUF1dGhvcml0eSxcbiAgICBzb3VyY2VUcmFuc2ZlckF1dGhvcml0eSxcbiAgICBzb3VyY2VQb29sQWNjb3VudCxcbiAgICBtYW5hZ2VyRmVlQWNjb3VudCxcbiAgICBwb29sTWludCxcbiAgICBwb29sVG9rZW5zOiBOdW1iZXIocG9vbFRva2VucyksXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,26 @@
1
+ import { DefaultKeys, KeyPairOptions, Ed25519KeyPair } from '@bitgo-beta/sdk-core';
2
+ import { SolanaKeys } from './iface';
3
+ export declare class KeyPair extends Ed25519KeyPair {
4
+ protected keyPair: DefaultKeys;
5
+ protected source?: KeyPairOptions;
6
+ /**
7
+ * Public constructor. By default, creates a key pair with a random master seed.
8
+ *
9
+ * @param { KeyPairOptions } source Either a master seed, a private key, or a public key
10
+ */
11
+ constructor(source?: KeyPairOptions);
12
+ /** @inheritdoc */
13
+ recordKeysFromPrivateKeyInProtocolFormat(prv: string): DefaultKeys;
14
+ /** @inheritdoc */
15
+ recordKeysFromPublicKeyInProtocolFormat(pub: string): DefaultKeys;
16
+ /**
17
+ * Solana default keys format public key as a base58 string and secret key as Uint8Array
18
+ *
19
+ * @param {boolean} raw defines if the prv key is returned in Uint8Array, default is base58
20
+ * @returns {SolanaKeys} The keys in the defined format
21
+ */
22
+ getKeys(raw?: boolean): SolanaKeys;
23
+ /** @inheritdoc */
24
+ getAddress(): string;
25
+ }
26
+ //# sourceMappingURL=keyPair.d.ts.map
@@ -0,0 +1,59 @@
1
+ import { Keypair as SolKeypair } from '@solana/web3.js';
2
+ import { Ed25519KeyPair } from '@bitgo-beta/sdk-core';
3
+ import { base58ToUint8Array, Uint8ArrayTobase58 } from './utils';
4
+ export class KeyPair extends Ed25519KeyPair {
5
+ /**
6
+ * Public constructor. By default, creates a key pair with a random master seed.
7
+ *
8
+ * @param { KeyPairOptions } source Either a master seed, a private key, or a public key
9
+ */
10
+ constructor(source) {
11
+ super(source);
12
+ }
13
+ /** @inheritdoc */
14
+ recordKeysFromPrivateKeyInProtocolFormat(prv) {
15
+ const prvKey = base58ToUint8Array(prv);
16
+ const keyPair = SolKeypair.fromSecretKey(prvKey);
17
+ return {
18
+ pub: keyPair.publicKey.toBuffer().toString('hex'),
19
+ prv: Buffer.from(keyPair.secretKey.slice(0, 32)).toString('hex'),
20
+ };
21
+ }
22
+ /** @inheritdoc */
23
+ recordKeysFromPublicKeyInProtocolFormat(pub) {
24
+ return {
25
+ pub: Buffer.from(base58ToUint8Array(pub)).toString('hex'),
26
+ };
27
+ }
28
+ /**
29
+ * Solana default keys format public key as a base58 string and secret key as Uint8Array
30
+ *
31
+ * @param {boolean} raw defines if the prv key is returned in Uint8Array, default is base58
32
+ * @returns {SolanaKeys} The keys in the defined format
33
+ */
34
+ getKeys(raw = false) {
35
+ // keys are originally created in hex, but we need base58
36
+ const publicKeyBuffer = Buffer.from(this.keyPair.pub, 'hex');
37
+ const base58Pub = Uint8ArrayTobase58(publicKeyBuffer);
38
+ const result = { pub: base58Pub };
39
+ if (!!this.keyPair.prv) {
40
+ const secretKeyBuffer = Buffer.from(this.keyPair.prv, 'hex');
41
+ const solanaSecretKey = new Uint8Array(64);
42
+ solanaSecretKey.set(secretKeyBuffer);
43
+ solanaSecretKey.set(publicKeyBuffer, 32);
44
+ if (raw) {
45
+ result.prv = solanaSecretKey;
46
+ }
47
+ else {
48
+ result.prv = Uint8ArrayTobase58(solanaSecretKey);
49
+ }
50
+ }
51
+ return result;
52
+ }
53
+ /** @inheritdoc */
54
+ getAddress() {
55
+ const keys = this.getKeys();
56
+ return keys.pub;
57
+ }
58
+ }
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIva2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxJQUFJLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBK0IsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWpFLE1BQU0sT0FBTyxPQUFRLFNBQVEsY0FBYztJQUl6Qzs7OztPQUlHO0lBQ0gsWUFBWSxNQUF1QjtRQUNqQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQix3Q0FBd0MsQ0FBQyxHQUFXO1FBQ2xELE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFakQsT0FBTztZQUNMLEdBQUcsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFDakQsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztTQUNqRSxDQUFDO0lBQ0osQ0FBQztJQUVELGtCQUFrQjtJQUNsQix1Q0FBdUMsQ0FBQyxHQUFXO1FBQ2pELE9BQU87WUFDTCxHQUFHLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7U0FDMUQsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE9BQU8sQ0FBQyxHQUFHLEdBQUcsS0FBSztRQUNqQix5REFBeUQ7UUFDekQsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3RCxNQUFNLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUV0RCxNQUFNLE1BQU0sR0FBZSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDN0QsTUFBTSxlQUFlLEdBQUcsSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDM0MsZUFBZSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNyQyxlQUFlLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUV6QyxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNSLE1BQU0sQ0FBQyxHQUFHLEdBQUcsZUFBZSxDQUFDO1lBQy9CLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLENBQUMsR0FBRyxHQUFHLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ25ELENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixVQUFVO1FBQ1IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBLZXlwYWlyIGFzIFNvbEtleXBhaXIgfSBmcm9tICdAc29sYW5hL3dlYjMuanMnO1xuaW1wb3J0IHsgRGVmYXVsdEtleXMsIEtleVBhaXJPcHRpb25zLCBFZDI1NTE5S2V5UGFpciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFNvbGFuYUtleXMgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IGJhc2U1OFRvVWludDhBcnJheSwgVWludDhBcnJheVRvYmFzZTU4IH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBLZXlQYWlyIGV4dGVuZHMgRWQyNTUxOUtleVBhaXIge1xuICBwcm90ZWN0ZWQga2V5UGFpcjogRGVmYXVsdEtleXM7XG4gIHByb3RlY3RlZCBzb3VyY2U/OiBLZXlQYWlyT3B0aW9ucztcblxuICAvKipcbiAgICogUHVibGljIGNvbnN0cnVjdG9yLiBCeSBkZWZhdWx0LCBjcmVhdGVzIGEga2V5IHBhaXIgd2l0aCBhIHJhbmRvbSBtYXN0ZXIgc2VlZC5cbiAgICpcbiAgICogQHBhcmFtIHsgS2V5UGFpck9wdGlvbnMgfSBzb3VyY2UgRWl0aGVyIGEgbWFzdGVyIHNlZWQsIGEgcHJpdmF0ZSBrZXksIG9yIGEgcHVibGljIGtleVxuICAgKi9cbiAgY29uc3RydWN0b3Ioc291cmNlPzogS2V5UGFpck9wdGlvbnMpIHtcbiAgICBzdXBlcihzb3VyY2UpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHJlY29yZEtleXNGcm9tUHJpdmF0ZUtleUluUHJvdG9jb2xGb3JtYXQocHJ2OiBzdHJpbmcpOiBEZWZhdWx0S2V5cyB7XG4gICAgY29uc3QgcHJ2S2V5ID0gYmFzZTU4VG9VaW50OEFycmF5KHBydik7XG4gICAgY29uc3Qga2V5UGFpciA9IFNvbEtleXBhaXIuZnJvbVNlY3JldEtleShwcnZLZXkpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHB1Yjoga2V5UGFpci5wdWJsaWNLZXkudG9CdWZmZXIoKS50b1N0cmluZygnaGV4JyksXG4gICAgICBwcnY6IEJ1ZmZlci5mcm9tKGtleVBhaXIuc2VjcmV0S2V5LnNsaWNlKDAsIDMyKSkudG9TdHJpbmcoJ2hleCcpLFxuICAgIH07XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcmVjb3JkS2V5c0Zyb21QdWJsaWNLZXlJblByb3RvY29sRm9ybWF0KHB1Yjogc3RyaW5nKTogRGVmYXVsdEtleXMge1xuICAgIHJldHVybiB7XG4gICAgICBwdWI6IEJ1ZmZlci5mcm9tKGJhc2U1OFRvVWludDhBcnJheShwdWIpKS50b1N0cmluZygnaGV4JyksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTb2xhbmEgZGVmYXVsdCBrZXlzIGZvcm1hdCBwdWJsaWMga2V5IGFzIGEgYmFzZTU4IHN0cmluZyBhbmQgc2VjcmV0IGtleSBhcyBVaW50OEFycmF5XG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmF3IGRlZmluZXMgaWYgdGhlIHBydiBrZXkgaXMgcmV0dXJuZWQgaW4gVWludDhBcnJheSwgZGVmYXVsdCBpcyBiYXNlNThcbiAgICogQHJldHVybnMge1NvbGFuYUtleXN9IFRoZSBrZXlzIGluIHRoZSBkZWZpbmVkIGZvcm1hdFxuICAgKi9cbiAgZ2V0S2V5cyhyYXcgPSBmYWxzZSk6IFNvbGFuYUtleXMge1xuICAgIC8vIGtleXMgYXJlIG9yaWdpbmFsbHkgY3JlYXRlZCBpbiBoZXgsIGJ1dCB3ZSBuZWVkIGJhc2U1OFxuICAgIGNvbnN0IHB1YmxpY0tleUJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHRoaXMua2V5UGFpci5wdWIsICdoZXgnKTtcbiAgICBjb25zdCBiYXNlNThQdWIgPSBVaW50OEFycmF5VG9iYXNlNTgocHVibGljS2V5QnVmZmVyKTtcblxuICAgIGNvbnN0IHJlc3VsdDogU29sYW5hS2V5cyA9IHsgcHViOiBiYXNlNThQdWIgfTtcbiAgICBpZiAoISF0aGlzLmtleVBhaXIucHJ2KSB7XG4gICAgICBjb25zdCBzZWNyZXRLZXlCdWZmZXIgPSBCdWZmZXIuZnJvbSh0aGlzLmtleVBhaXIucHJ2LCAnaGV4Jyk7XG4gICAgICBjb25zdCBzb2xhbmFTZWNyZXRLZXkgPSBuZXcgVWludDhBcnJheSg2NCk7XG4gICAgICBzb2xhbmFTZWNyZXRLZXkuc2V0KHNlY3JldEtleUJ1ZmZlcik7XG4gICAgICBzb2xhbmFTZWNyZXRLZXkuc2V0KHB1YmxpY0tleUJ1ZmZlciwgMzIpO1xuXG4gICAgICBpZiAocmF3KSB7XG4gICAgICAgIHJlc3VsdC5wcnYgPSBzb2xhbmFTZWNyZXRLZXk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQucHJ2ID0gVWludDhBcnJheVRvYmFzZTU4KHNvbGFuYVNlY3JldEtleSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0QWRkcmVzcygpOiBzdHJpbmcge1xuICAgIGNvbnN0IGtleXMgPSB0aGlzLmdldEtleXMoKTtcbiAgICByZXR1cm4ga2V5cy5wdWI7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './messageBuilderFactory';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,2 @@
1
+ export * from './messageBuilderFactory';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL21lc3NhZ2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21lc3NhZ2VCdWlsZGVyRmFjdG9yeSc7XG4iXX0=
@@ -0,0 +1,7 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
+ import { BaseMessageBuilderFactory, IMessageBuilder, MessageStandardType } from '@bitgo-beta/sdk-core';
3
+ export declare class MessageBuilderFactory extends BaseMessageBuilderFactory {
4
+ constructor(coinConfig: Readonly<CoinConfig>);
5
+ getMessageBuilder(type: MessageStandardType): IMessageBuilder;
6
+ }
7
+ //# sourceMappingURL=messageBuilderFactory.d.ts.map
@@ -1,19 +1,15 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MessageBuilderFactory = void 0;
4
- const sdk_core_1 = require("@bitgo-beta/sdk-core");
5
- class MessageBuilderFactory extends sdk_core_1.BaseMessageBuilderFactory {
1
+ import { BaseMessageBuilderFactory, MessageStandardType, SimpleMessageBuilder } from '@bitgo-beta/sdk-core';
2
+ export class MessageBuilderFactory extends BaseMessageBuilderFactory {
6
3
  constructor(coinConfig) {
7
4
  super(coinConfig);
8
5
  }
9
6
  getMessageBuilder(type) {
10
7
  switch (type) {
11
- case sdk_core_1.MessageStandardType.SIMPLE:
12
- return new sdk_core_1.SimpleMessageBuilder(this.coinConfig);
8
+ case MessageStandardType.SIMPLE:
9
+ return new SimpleMessageBuilder(this.coinConfig);
13
10
  default:
14
11
  throw new Error(`Invalid message standard ${type}`);
15
12
  }
16
13
  }
17
14
  }
18
- exports.MessageBuilderFactory = MessageBuilderFactory;
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZUJ1aWxkZXJGYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9tZXNzYWdlcy9tZXNzYWdlQnVpbGRlckZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsbURBQTZIO0FBRTdILE1BQWEscUJBQXNCLFNBQVEsb0NBQXlCO0lBQ2xFLFlBQVksVUFBZ0M7UUFDMUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxJQUF5QjtRQUNoRCxRQUFRLElBQUksRUFBRSxDQUFDO1lBQ2IsS0FBSyw4QkFBbUIsQ0FBQyxNQUFNO2dCQUM3QixPQUFPLElBQUksK0JBQW9CLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ25EO2dCQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEQsQ0FBQztJQUNILENBQUM7Q0FDRjtBQWJELHNEQWFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgQmFzZU1lc3NhZ2VCdWlsZGVyRmFjdG9yeSwgSU1lc3NhZ2VCdWlsZGVyLCBNZXNzYWdlU3RhbmRhcmRUeXBlLCBTaW1wbGVNZXNzYWdlQnVpbGRlciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcblxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VCdWlsZGVyRmFjdG9yeSBleHRlbmRzIEJhc2VNZXNzYWdlQnVpbGRlckZhY3Rvcnkge1xuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICB9XG5cbiAgcHVibGljIGdldE1lc3NhZ2VCdWlsZGVyKHR5cGU6IE1lc3NhZ2VTdGFuZGFyZFR5cGUpOiBJTWVzc2FnZUJ1aWxkZXIge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBNZXNzYWdlU3RhbmRhcmRUeXBlLlNJTVBMRTpcbiAgICAgICAgcmV0dXJuIG5ldyBTaW1wbGVNZXNzYWdlQnVpbGRlcih0aGlzLmNvaW5Db25maWcpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG1lc3NhZ2Ugc3RhbmRhcmQgJHt0eXBlfWApO1xuICAgIH1cbiAgfVxufVxuIl19
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZUJ1aWxkZXJGYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9tZXNzYWdlcy9tZXNzYWdlQnVpbGRlckZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHlCQUF5QixFQUFtQixtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTdILE1BQU0sT0FBTyxxQkFBc0IsU0FBUSx5QkFBeUI7SUFDbEUsWUFBWSxVQUFnQztRQUMxQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVNLGlCQUFpQixDQUFDLElBQXlCO1FBQ2hELFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDYixLQUFLLG1CQUFtQixDQUFDLE1BQU07Z0JBQzdCLE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbkQ7Z0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN4RCxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgQmFzZU1lc3NhZ2VCdWlsZGVyRmFjdG9yeSwgSU1lc3NhZ2VCdWlsZGVyLCBNZXNzYWdlU3RhbmRhcmRUeXBlLCBTaW1wbGVNZXNzYWdlQnVpbGRlciB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcblxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VCdWlsZGVyRmFjdG9yeSBleHRlbmRzIEJhc2VNZXNzYWdlQnVpbGRlckZhY3Rvcnkge1xuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICB9XG5cbiAgcHVibGljIGdldE1lc3NhZ2VCdWlsZGVyKHR5cGU6IE1lc3NhZ2VTdGFuZGFyZFR5cGUpOiBJTWVzc2FnZUJ1aWxkZXIge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBNZXNzYWdlU3RhbmRhcmRUeXBlLlNJTVBMRTpcbiAgICAgICAgcmV0dXJuIG5ldyBTaW1wbGVNZXNzYWdlQnVpbGRlcih0aGlzLmNvaW5Db25maWcpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG1lc3NhZ2Ugc3RhbmRhcmQgJHt0eXBlfWApO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,25 @@
1
+ import { TransactionType } from '@bitgo-beta/sdk-core';
2
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
3
+ import { Transaction } from './transaction';
4
+ import { TransactionBuilder } from './transactionBuilder';
5
+ export declare class RecoverNestedAtaBuilder extends TransactionBuilder {
6
+ protected _nestedAccountAddress: string;
7
+ protected _nestedMintAddress: string;
8
+ protected _destinationAccountAddress: string;
9
+ protected _ownerAccountAddress: string;
10
+ protected _ownerMintAddress: string;
11
+ protected _walletAddress: string;
12
+ constructor(_coinConfig: Readonly<CoinConfig>);
13
+ protected get transactionType(): TransactionType;
14
+ nestedAccountAddress(nestedAccountAddress: string): this;
15
+ nestedMintAddress(nestedMintAddress: string): this;
16
+ destinationAccountAddress(destinationAccountAddress: string): this;
17
+ ownerAccountAddress(ownerAccountAddress: string): this;
18
+ ownerMintAddress(ownerMintAddress: string): this;
19
+ walletAddress(walletAddress: string): this;
20
+ /** @inheritDoc */
21
+ initBuilder(tx: Transaction): void;
22
+ /** @inheritdoc */
23
+ protected buildImplementation(): Promise<Transaction>;
24
+ }
25
+ //# sourceMappingURL=recoverNestedAtaBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recoverNestedAtaBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/recoverNestedAtaBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAI7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,qBAAa,uBAAwB,SAAQ,kBAAkB;IAC7D,SAAS,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACxC,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACrC,SAAS,CAAC,0BAA0B,EAAE,MAAM,CAAC;IAC7C,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACvC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACpC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC;gBAErB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,oBAAoB,CAAC,oBAAoB,EAAE,MAAM,GAAG,IAAI;IAMxD,iBAAiB,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI;IAMlD,yBAAyB,CAAC,yBAAyB,EAAE,MAAM,GAAG,IAAI;IAMlE,mBAAmB,CAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI;IAMtD,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAMhD,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAM1C,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAelC,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;CAwB5D"}
@@ -0,0 +1,83 @@
1
+ import { TransactionType } from '@bitgo-beta/sdk-core';
2
+ import assert from 'assert';
3
+ import { InstructionBuilderTypes } from './constants';
4
+ import { Transaction } from './transaction';
5
+ import { TransactionBuilder } from './transactionBuilder';
6
+ import { validateAddress } from './utils';
7
+ export class RecoverNestedAtaBuilder extends TransactionBuilder {
8
+ constructor(_coinConfig) {
9
+ super(_coinConfig);
10
+ this._transaction = new Transaction(_coinConfig);
11
+ }
12
+ get transactionType() {
13
+ return TransactionType.CloseAssociatedTokenAccount;
14
+ }
15
+ nestedAccountAddress(nestedAccountAddress) {
16
+ validateAddress(nestedAccountAddress, 'nestedAccountAddress');
17
+ this._nestedAccountAddress = nestedAccountAddress;
18
+ return this;
19
+ }
20
+ nestedMintAddress(nestedMintAddress) {
21
+ validateAddress(nestedMintAddress, 'nestedMintAddress');
22
+ this._nestedMintAddress = nestedMintAddress;
23
+ return this;
24
+ }
25
+ destinationAccountAddress(destinationAccountAddress) {
26
+ validateAddress(destinationAccountAddress, 'destinationAccountAddress');
27
+ this._destinationAccountAddress = destinationAccountAddress;
28
+ return this;
29
+ }
30
+ ownerAccountAddress(ownerAccountAddress) {
31
+ validateAddress(ownerAccountAddress, 'ownerAccountAddress');
32
+ this._ownerAccountAddress = ownerAccountAddress;
33
+ return this;
34
+ }
35
+ ownerMintAddress(ownerMintAddress) {
36
+ validateAddress(ownerMintAddress, 'ownerMintAddress');
37
+ this._ownerMintAddress = ownerMintAddress;
38
+ return this;
39
+ }
40
+ walletAddress(walletAddress) {
41
+ validateAddress(walletAddress, 'walletAddress');
42
+ this._walletAddress = walletAddress;
43
+ return this;
44
+ }
45
+ /** @inheritDoc */
46
+ initBuilder(tx) {
47
+ super.initBuilder(tx);
48
+ for (const instruction of this._instructionsData) {
49
+ if (instruction.type === InstructionBuilderTypes.RecoverNestedAssociatedTokenAccount) {
50
+ const recoverNestedInstruction = instruction;
51
+ this.nestedAccountAddress(recoverNestedInstruction.params.nestedAccountAddress);
52
+ this.nestedMintAddress(recoverNestedInstruction.params.nestedMintAddress);
53
+ this.destinationAccountAddress(recoverNestedInstruction.params.destinationAccountAddress);
54
+ this.ownerAccountAddress(recoverNestedInstruction.params.ownerAccountAddress);
55
+ this.ownerMintAddress(recoverNestedInstruction.params.ownerMintAddress);
56
+ this.walletAddress(recoverNestedInstruction.params.walletAddress);
57
+ }
58
+ }
59
+ }
60
+ /** @inheritdoc */
61
+ async buildImplementation() {
62
+ assert(this._nestedAccountAddress, 'nestedAccountAddress must be set before building the transaction');
63
+ assert(this._nestedMintAddress, 'nestedMintAddress must be set before building the transaction');
64
+ assert(this._destinationAccountAddress, 'destinationAccountAddress must be set before building the transaction');
65
+ assert(this._ownerAccountAddress, 'ownerAccountAddress must be set before building the transaction');
66
+ assert(this._ownerMintAddress, 'ownerMintAddress must be set before building the transaction');
67
+ assert(this._walletAddress, 'walletAddress must be set before building the transaction');
68
+ const recoverNestedData = {
69
+ type: InstructionBuilderTypes.RecoverNestedAssociatedTokenAccount,
70
+ params: {
71
+ nestedAccountAddress: this._nestedAccountAddress,
72
+ nestedMintAddress: this._nestedMintAddress,
73
+ destinationAccountAddress: this._destinationAccountAddress,
74
+ ownerAccountAddress: this._ownerAccountAddress,
75
+ ownerMintAddress: this._ownerMintAddress,
76
+ walletAddress: this._walletAddress,
77
+ },
78
+ };
79
+ this._instructionsData = [recoverNestedData];
80
+ return await super.buildImplementation();
81
+ }
82
+ }
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3Zlck5lc3RlZEF0YUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3JlY292ZXJOZXN0ZWRBdGFCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV2RCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXRELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUUxQyxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsa0JBQWtCO0lBUTdELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLGVBQWUsQ0FBQywyQkFBMkIsQ0FBQztJQUNyRCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsb0JBQTRCO1FBQy9DLGVBQWUsQ0FBQyxvQkFBb0IsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxxQkFBcUIsR0FBRyxvQkFBb0IsQ0FBQztRQUNsRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxpQkFBeUI7UUFDekMsZUFBZSxDQUFDLGlCQUFpQixFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGlCQUFpQixDQUFDO1FBQzVDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELHlCQUF5QixDQUFDLHlCQUFp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Z0JBQ3hDLGFBQWEsRUFBRSxJQUFJLENBQUMsY0FBYzthQUNuQztTQUNGLENBQUM7UUFFRixJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRTdDLE9BQU8sTUFBTSxLQUFLLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IEF0YVJlY292ZXJOZXN0ZWQgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyB2YWxpZGF0ZUFkZHJlc3MgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIFJlY292ZXJOZXN0ZWRBdGFCdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF9uZXN0ZWRBY2NvdW50QWRkcmVzczogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX25lc3RlZE1pbnRBZGRyZXNzOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfZGVzdGluYXRpb25BY2NvdW50QWRkcmVzczogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX293bmVyQWNjb3VudEFkZHJlc3M6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9vd25lck1pbnRBZGRyZXNzOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfd2FsbGV0QWRkcmVzczogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuQ2xvc2VBc3NvY2lhdGVkVG9rZW5BY2NvdW50O1xuICB9XG5cbiAgbmVzdGVkQWNjb3VudEFkZHJlc3MobmVzdGVkQWNjb3VudEFkZHJlc3M6IHN0cmluZyk6IHRoaXMge1xuICAgIHZhbGlkYXRlQWRkcmVzcyhuZXN0ZWRBY2NvdW50QWRkcmVzcywgJ25lc3RlZEFjY291bnRBZGRyZXNzJyk7XG4gICAgdGhpcy5fbmVzdGVkQWNjb3VudEFkZHJlc3MgPSBuZXN0ZWRBY2NvdW50QWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG5lc3RlZE1pbnRBZGRyZXNzKG5lc3RlZE1pbnRBZGRyZXNzOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB2YWxpZGF0ZUFkZHJlc3MobmVzdGVkTWludEFkZHJlc3MsICduZXN0ZWRNaW50QWRkcmVzcycpO1xuICAgIHRoaXMuX25lc3RlZE1pbnRBZGRyZXNzID0gbmVzdGVkTWludEFkZHJlc3M7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBkZXN0aW5hdGlvbkFjY291bnRBZGRyZXNzKGRlc3RpbmF0aW9uQWNjb3VudEFkZHJlc3M6IHN0cmluZyk6IHRoaXMge1xuICAgIHZhbGlkYXRlQWRkcmVzcyhkZXN0aW5hdGlvbkFjY291bnRBZGRyZXNzLCAnZGVzdGluYXRpb25BY2NvdW50QWRkcmVzcycpO1xuICAgIHRoaXMuX2Rlc3RpbmF0aW9uQWNjb3VudEFkZHJlc3MgPSBkZXN0aW5hdGlvbkFjY291bnRBZGRyZXNzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgb3duZXJBY2NvdW50QWRkcmVzcyhvd25lckFjY291bnRBZGRyZXNzOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB2YWxpZGF0ZUFkZHJlc3Mob3duZXJBY2NvdW50QWRkcmVzcywgJ293bmVyQWNjb3VudEFkZHJlc3MnKTtcbiAgICB0aGlzLl9vd25lckFjY291bnRBZGRyZXNzID0gb3duZXJBY2NvdW50QWRkcmVzcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG93bmVyTWludEFkZHJlc3Mob3duZXJNaW50QWRkcmVzczogc3RyaW5nKTogdGhpcyB7XG4gICAgdmFsaWRhdGVBZGRyZXNzKG93bmVyTWludEFkZHJlc3MsICdvd25lck1pbnRBZGRyZXNzJyk7XG4gICAgdGhpcy5fb3duZXJNaW50QWRkcmVzcyA9IG93bmVyTWludEFkZHJlc3M7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB3YWxsZXRBZGRyZXNzKHdhbGxldEFkZHJlc3M6IHN0cmluZyk6IHRoaXMge1xuICAgIHZhbGlkYXRlQWRkcmVzcyh3YWxsZXRBZGRyZXNzLCAnd2FsbGV0QWRkcmVzcycpO1xuICAgIHRoaXMuX3dhbGxldEFkZHJlc3MgPSB3YWxsZXRBZGRyZXNzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICBmb3IgKGNvbnN0IGluc3RydWN0aW9uIG9mIHRoaXMuX2luc3RydWN0aW9uc0RhdGEpIHtcbiAgICAgIGlmIChpbnN0cnVjdGlvbi50eXBlID09PSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5SZWNvdmVyTmVzdGVkQXNzb2NpYXRlZFRva2VuQWNjb3VudCkge1xuICAgICAgICBjb25zdCByZWNvdmVyTmVzdGVkSW5zdHJ1Y3Rpb246IEF0YVJlY292ZXJOZXN0ZWQgPSBpbnN0cnVjdGlvbjtcbiAgICAgICAgdGhpcy5uZXN0ZWRBY2NvdW50QWRkcmVzcyhyZWNvdmVyTmVzdGVkSW5zdHJ1Y3Rpb24ucGFyYW1zLm5lc3RlZEFjY291bnRBZGRyZXNzKTtcbiAgICAgICAgdGhpcy5uZXN0ZWRNaW50QWRkcmVzcyhyZWNvdmVyTmVzdGVkSW5zdHJ1Y3Rpb24ucGFyYW1zLm5lc3RlZE1pbnRBZGRyZXNzKTtcbiAgICAgICAgdGhpcy5kZXN0aW5hdGlvbkFjY291bnRBZGRyZXNzKHJlY292ZXJOZXN0ZWRJbnN0cnVjdGlvbi5wYXJhbXMuZGVzdGluYXRpb25BY2NvdW50QWRkcmVzcyk7XG4gICAgICAgIHRoaXMub3duZXJBY2NvdW50QWRkcmVzcyhyZWNvdmVyTmVzdGVkSW5zdHJ1Y3Rpb24ucGFyYW1zLm93bmVyQWNjb3VudEFkZHJlc3MpO1xuICAgICAgICB0aGlzLm93bmVyTWludEFkZHJlc3MocmVjb3Zlck5lc3RlZEluc3RydWN0aW9uLnBhcmFtcy5vd25lck1pbnRBZGRyZXNzKTtcbiAgICAgICAgdGhpcy53YWxsZXRBZGRyZXNzKHJlY292ZXJOZXN0ZWRJbnN0cnVjdGlvbi5wYXJhbXMud2FsbGV0QWRkcmVzcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHByb3RlY3RlZCBhc3luYyBidWlsZEltcGxlbWVudGF0aW9uKCk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICBhc3NlcnQodGhpcy5fbmVzdGVkQWNjb3VudEFkZHJlc3MsICduZXN0ZWRBY2NvdW50QWRkcmVzcyBtdXN0IGJlIHNldCBiZWZvcmUgYnVpbGRpbmcgdGhlIHRyYW5zYWN0aW9uJyk7XG4gICAgYXNzZXJ0KHRoaXMuX25lc3RlZE1pbnRBZGRyZXNzLCAnbmVzdGVkTWludEFkZHJlc3MgbXVzdCBiZSBzZXQgYmVmb3JlIGJ1aWxkaW5nIHRoZSB0cmFuc2FjdGlvbicpO1xuICAgIGFzc2VydCh0aGlzLl9kZXN0aW5hdGlvbkFjY291bnRBZGRyZXNzLCAnZGVzdGluYXRpb25BY2NvdW50QWRkcmVzcyBtdXN0IGJlIHNldCBiZWZvcmUgYnVpbGRpbmcgdGhlIHRyYW5zYWN0aW9uJyk7XG4gICAgYXNzZXJ0KHRoaXMuX293bmVyQWNjb3VudEFkZHJlc3MsICdvd25lckFjY291bnRBZGRyZXNzIG11c3QgYmUgc2V0IGJlZm9yZSBidWlsZGluZyB0aGUgdHJhbnNhY3Rpb24nKTtcbiAgICBhc3NlcnQodGhpcy5fb3duZXJNaW50QWRkcmVzcywgJ293bmVyTWludEFkZHJlc3MgbXVzdCBiZSBzZXQgYmVmb3JlIGJ1aWxkaW5nIHRoZSB0cmFuc2FjdGlvbicpO1xuICAgIGFzc2VydCh0aGlzLl93YWxsZXRBZGRyZXNzLCAnd2FsbGV0QWRkcmVzcyBtdXN0IGJlIHNldCBiZWZvcmUgYnVpbGRpbmcgdGhlIHRyYW5zYWN0aW9uJyk7XG5cbiAgICBjb25zdCByZWNvdmVyTmVzdGVkRGF0YTogQXRhUmVjb3Zlck5lc3RlZCA9IHtcbiAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlJlY292ZXJOZXN0ZWRBc3NvY2lhdGVkVG9rZW5BY2NvdW50LFxuICAgICAgcGFyYW1zOiB7XG4gICAgICAgIG5lc3RlZEFjY291bnRBZGRyZXNzOiB0aGlzLl9uZXN0ZWRBY2NvdW50QWRkcmVzcyxcbiAgICAgICAgbmVzdGVkTWludEFkZHJlc3M6IHRoaXMuX25lc3RlZE1pbnRBZGRyZXNzLFxuICAgICAgICBkZXN0aW5hdGlvbkFjY291bnRBZGRyZXNzOiB0aGlzLl9kZXN0aW5hdGlvbkFjY291bnRBZGRyZXNzLFxuICAgICAgICBvd25lckFjY291bnRBZGRyZXNzOiB0aGlzLl9vd25lckFjY291bnRBZGRyZXNzLFxuICAgICAgICBvd25lck1pbnRBZGRyZXNzOiB0aGlzLl9vd25lck1pbnRBZGRyZXNzLFxuICAgICAgICB3YWxsZXRBZGRyZXNzOiB0aGlzLl93YWxsZXRBZGRyZXNzLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgdGhpcy5faW5zdHJ1Y3Rpb25zRGF0YSA9IFtyZWNvdmVyTmVzdGVkRGF0YV07XG5cbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuYnVpbGRJbXBsZW1lbnRhdGlvbigpO1xuICB9XG59XG4iXX0=