@bitgo-beta/sdk-coin-sol 7.6.4-beta.79 → 7.6.4-beta.790

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 (544) hide show
  1. package/dist/cjs/src/bigint-buffer-guard.d.ts.map +1 -0
  2. package/dist/cjs/src/bigint-buffer-guard.js +29 -0
  3. package/dist/cjs/src/index.d.ts.map +1 -0
  4. package/dist/{src → cjs/src}/index.js +1 -1
  5. package/dist/{src → cjs/src}/lib/ataInitializationBuilder.d.ts +12 -1
  6. package/dist/cjs/src/lib/ataInitializationBuilder.d.ts.map +1 -0
  7. package/dist/cjs/src/lib/ataInitializationBuilder.js +231 -0
  8. package/dist/cjs/src/lib/closeAtaBuilder.d.ts +55 -0
  9. package/dist/cjs/src/lib/closeAtaBuilder.d.ts.map +1 -0
  10. package/dist/cjs/src/lib/closeAtaBuilder.js +162 -0
  11. package/dist/cjs/src/lib/confidentialTransferBuilder.d.ts +136 -0
  12. package/dist/cjs/src/lib/confidentialTransferBuilder.d.ts.map +1 -0
  13. package/dist/cjs/src/lib/confidentialTransferBuilder.js +375 -0
  14. package/dist/{src → cjs/src}/lib/constants.d.ts +97 -2
  15. package/dist/cjs/src/lib/constants.d.ts.map +1 -0
  16. package/dist/cjs/src/lib/constants.js +277 -0
  17. package/dist/{src → cjs/src}/lib/customInstructionBuilder.d.ts +13 -2
  18. package/dist/cjs/src/lib/customInstructionBuilder.d.ts.map +1 -0
  19. package/dist/cjs/src/lib/customInstructionBuilder.js +392 -0
  20. package/dist/cjs/src/lib/explainTransactionWasm.d.ts +21 -0
  21. package/dist/cjs/src/lib/explainTransactionWasm.d.ts.map +1 -0
  22. package/dist/cjs/src/lib/explainTransactionWasm.js +304 -0
  23. package/dist/cjs/src/lib/iface.d.ts +549 -0
  24. package/dist/cjs/src/lib/iface.d.ts.map +1 -0
  25. package/dist/cjs/src/lib/iface.js +7 -0
  26. package/dist/{src → cjs/src}/lib/index.d.ts +9 -0
  27. package/dist/cjs/src/lib/index.d.ts.map +1 -0
  28. package/dist/cjs/src/lib/index.js +106 -0
  29. package/dist/{src → cjs/src}/lib/instructionParamsFactory.d.ts +3 -1
  30. package/dist/cjs/src/lib/instructionParamsFactory.d.ts.map +1 -0
  31. package/dist/cjs/src/lib/instructionParamsFactory.js +1284 -0
  32. package/dist/cjs/src/lib/jitoStakePoolOperations.d.ts.map +1 -0
  33. package/dist/cjs/src/lib/jitoStakePoolOperations.js +200 -0
  34. package/dist/{src → cjs/src}/lib/keyPair.d.ts +6 -0
  35. package/dist/cjs/src/lib/keyPair.d.ts.map +1 -0
  36. package/dist/cjs/src/lib/keyPair.js +112 -0
  37. package/dist/cjs/src/lib/messages/index.d.ts.map +1 -0
  38. package/dist/{src → cjs/src}/lib/messages/index.js +1 -1
  39. package/dist/cjs/src/lib/messages/messageBuilderFactory.d.ts.map +1 -0
  40. package/dist/cjs/src/lib/messages/messageBuilderFactory.js +19 -0
  41. package/dist/cjs/src/lib/recoverNestedAtaBuilder.d.ts +25 -0
  42. package/dist/cjs/src/lib/recoverNestedAtaBuilder.d.ts.map +1 -0
  43. package/dist/cjs/src/lib/recoverNestedAtaBuilder.js +90 -0
  44. package/dist/cjs/src/lib/scaledUiAmount.d.ts +30 -0
  45. package/dist/cjs/src/lib/scaledUiAmount.d.ts.map +1 -0
  46. package/dist/cjs/src/lib/scaledUiAmount.js +112 -0
  47. package/dist/cjs/src/lib/serialization/codecs/v1/config.d.ts +21 -0
  48. package/dist/cjs/src/lib/serialization/codecs/v1/config.d.ts.map +1 -0
  49. package/dist/cjs/src/lib/serialization/codecs/v1/config.js +34 -0
  50. package/dist/cjs/src/lib/serialization/codecs/v1/instruction.d.ts +14 -0
  51. package/dist/cjs/src/lib/serialization/codecs/v1/instruction.d.ts.map +1 -0
  52. package/dist/cjs/src/lib/serialization/codecs/v1/instruction.js +32 -0
  53. package/dist/cjs/src/lib/serialization/codecs/v1/message.d.ts +27 -0
  54. package/dist/cjs/src/lib/serialization/codecs/v1/message.d.ts.map +1 -0
  55. package/dist/cjs/src/lib/serialization/codecs/v1/message.js +196 -0
  56. package/dist/cjs/src/lib/serialization/compileTransactionMessage.d.ts +36 -0
  57. package/dist/cjs/src/lib/serialization/compileTransactionMessage.d.ts.map +1 -0
  58. package/dist/cjs/src/lib/serialization/compileTransactionMessage.js +211 -0
  59. package/dist/cjs/src/lib/serialization/index.d.ts +5 -0
  60. package/dist/cjs/src/lib/serialization/index.d.ts.map +1 -0
  61. package/dist/cjs/src/lib/serialization/index.js +27 -0
  62. package/dist/cjs/src/lib/serialization/parseWireTransaction.d.ts +9 -0
  63. package/dist/cjs/src/lib/serialization/parseWireTransaction.d.ts.map +1 -0
  64. package/dist/cjs/src/lib/serialization/parseWireTransaction.js +58 -0
  65. package/dist/cjs/src/lib/serialization/wire-transaction.d.ts +14 -0
  66. package/dist/cjs/src/lib/serialization/wire-transaction.d.ts.map +1 -0
  67. package/dist/cjs/src/lib/serialization/wire-transaction.js +51 -0
  68. package/dist/{src → cjs/src}/lib/solInstructionFactory.d.ts +1 -1
  69. package/dist/cjs/src/lib/solInstructionFactory.d.ts.map +1 -0
  70. package/dist/cjs/src/lib/solInstructionFactory.js +1129 -0
  71. package/dist/cjs/src/lib/stakingActivateBuilder.d.ts.map +1 -0
  72. package/dist/cjs/src/lib/stakingActivateBuilder.js +129 -0
  73. package/dist/cjs/src/lib/stakingAuthorizeBuilder.d.ts.map +1 -0
  74. package/dist/cjs/src/lib/stakingAuthorizeBuilder.js +89 -0
  75. package/dist/cjs/src/lib/stakingDeactivateBuilder.d.ts.map +1 -0
  76. package/dist/cjs/src/lib/stakingDeactivateBuilder.js +214 -0
  77. package/dist/cjs/src/lib/stakingDelegateBuilder.d.ts.map +1 -0
  78. package/dist/cjs/src/lib/stakingDelegateBuilder.js +126 -0
  79. package/dist/cjs/src/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
  80. package/dist/cjs/src/lib/stakingRawMsgAuthorizeBuilder.js +110 -0
  81. package/dist/cjs/src/lib/stakingWithdrawBuilder.d.ts.map +1 -0
  82. package/dist/cjs/src/lib/stakingWithdrawBuilder.js +87 -0
  83. package/dist/cjs/src/lib/token2022Resolve.d.ts +106 -0
  84. package/dist/cjs/src/lib/token2022Resolve.d.ts.map +1 -0
  85. package/dist/cjs/src/lib/token2022Resolve.js +199 -0
  86. package/dist/cjs/src/lib/tokenExtensions.d.ts +26 -0
  87. package/dist/cjs/src/lib/tokenExtensions.d.ts.map +1 -0
  88. package/dist/cjs/src/lib/tokenExtensions.js +109 -0
  89. package/dist/{src → cjs/src}/lib/tokenTransferBuilder.d.ts +27 -1
  90. package/dist/cjs/src/lib/tokenTransferBuilder.d.ts.map +1 -0
  91. package/dist/cjs/src/lib/tokenTransferBuilder.js +237 -0
  92. package/dist/{src → cjs/src}/lib/transaction.d.ts +46 -1
  93. package/dist/cjs/src/lib/transaction.d.ts.map +1 -0
  94. package/dist/cjs/src/lib/transaction.js +761 -0
  95. package/dist/{src → cjs/src}/lib/transactionBuilder.d.ts +42 -1
  96. package/dist/cjs/src/lib/transactionBuilder.d.ts.map +1 -0
  97. package/dist/cjs/src/lib/transactionBuilder.js +462 -0
  98. package/dist/{src → cjs/src}/lib/transactionBuilderFactory.d.ts +37 -0
  99. package/dist/cjs/src/lib/transactionBuilderFactory.d.ts.map +1 -0
  100. package/dist/cjs/src/lib/transactionBuilderFactory.js +249 -0
  101. package/dist/cjs/src/lib/transferBuilder.d.ts.map +1 -0
  102. package/dist/cjs/src/lib/transferBuilder.js +81 -0
  103. package/dist/cjs/src/lib/transferBuilderV2.d.ts +69 -0
  104. package/dist/cjs/src/lib/transferBuilderV2.d.ts.map +1 -0
  105. package/dist/cjs/src/lib/transferBuilderV2.js +252 -0
  106. package/dist/{src → cjs/src}/lib/utils.d.ts +16 -0
  107. package/dist/cjs/src/lib/utils.d.ts.map +1 -0
  108. package/dist/cjs/src/lib/utils.js +681 -0
  109. package/dist/cjs/src/lib/v1CustomInstructionBuilder.d.ts +29 -0
  110. package/dist/cjs/src/lib/v1CustomInstructionBuilder.d.ts.map +1 -0
  111. package/dist/cjs/src/lib/v1CustomInstructionBuilder.js +36 -0
  112. package/dist/cjs/src/lib/v1PaymentBuilder.d.ts +36 -0
  113. package/dist/cjs/src/lib/v1PaymentBuilder.d.ts.map +1 -0
  114. package/dist/cjs/src/lib/v1PaymentBuilder.js +70 -0
  115. package/dist/cjs/src/lib/v1TransactionBuilder.d.ts +253 -0
  116. package/dist/cjs/src/lib/v1TransactionBuilder.d.ts.map +1 -0
  117. package/dist/cjs/src/lib/v1TransactionBuilder.js +601 -0
  118. package/dist/cjs/src/lib/walletInitializationBuilder.d.ts.map +1 -0
  119. package/dist/cjs/src/lib/walletInitializationBuilder.js +71 -0
  120. package/dist/cjs/src/register.d.ts +5 -0
  121. package/dist/cjs/src/register.d.ts.map +1 -0
  122. package/dist/cjs/src/register.js +29 -0
  123. package/dist/{src → cjs/src}/sol.d.ts +114 -3
  124. package/dist/cjs/src/sol.d.ts.map +1 -0
  125. package/dist/cjs/src/sol.js +1707 -0
  126. package/dist/{src → cjs/src}/solToken.d.ts +7 -0
  127. package/dist/cjs/src/solToken.d.ts.map +1 -0
  128. package/dist/cjs/src/solToken.js +79 -0
  129. package/dist/cjs/src/tsol.d.ts.map +1 -0
  130. package/dist/cjs/src/tsol.js +24 -0
  131. package/dist/{test → cjs/test}/fixtures/sol.d.ts.map +1 -1
  132. package/dist/cjs/test/fixtures/sol.js +1433 -0
  133. package/dist/{test → cjs/test}/resources/sol.d.ts +29 -29
  134. package/dist/cjs/test/resources/sol.d.ts.map +1 -0
  135. package/dist/cjs/test/resources/sol.js +320 -0
  136. package/dist/cjs/test/unit/ctEnablementVerify.d.ts +2 -0
  137. package/dist/cjs/test/unit/ctEnablementVerify.d.ts.map +1 -0
  138. package/dist/cjs/test/unit/ctEnablementVerify.js +142 -0
  139. package/dist/cjs/test/unit/explainTransactionWasm.d.ts +5 -0
  140. package/dist/cjs/test/unit/explainTransactionWasm.d.ts.map +1 -0
  141. package/dist/cjs/test/unit/explainTransactionWasm.js +66 -0
  142. package/dist/cjs/test/unit/fixtures/solBackupKey.d.ts.map +1 -0
  143. package/dist/cjs/test/unit/fixtures/solBackupKey.js +8 -0
  144. package/dist/cjs/test/unit/getBuilderFactory.d.ts.map +1 -0
  145. package/dist/cjs/test/unit/getBuilderFactory.js +10 -0
  146. package/dist/cjs/test/unit/instructionParamsFactory.d.ts.map +1 -0
  147. package/dist/cjs/test/unit/instructionParamsFactory.js +425 -0
  148. package/dist/cjs/test/unit/instructionParamsFactory.staking.d.ts.map +1 -0
  149. package/dist/cjs/test/unit/instructionParamsFactory.staking.js +1059 -0
  150. package/dist/cjs/test/unit/jitoWasmVerification.d.ts +2 -0
  151. package/dist/cjs/test/unit/jitoWasmVerification.d.ts.map +1 -0
  152. package/dist/cjs/test/unit/jitoWasmVerification.js +78 -0
  153. package/dist/{test → cjs/test}/unit/keyPair.d.ts.map +1 -1
  154. package/dist/cjs/test/unit/keyPair.js +177 -0
  155. package/dist/cjs/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
  156. package/dist/cjs/test/unit/messages/messageBuilderFactory.js +118 -0
  157. package/dist/cjs/test/unit/messages/simpleMessageBuilder.d.ts.map +1 -0
  158. package/dist/cjs/test/unit/messages/simpleMessageBuilder.js +194 -0
  159. package/dist/cjs/test/unit/register.d.ts +2 -0
  160. package/dist/cjs/test/unit/register.d.ts.map +1 -0
  161. package/dist/cjs/test/unit/register.js +65 -0
  162. package/dist/cjs/test/unit/scaledUiAmount.d.ts +2 -0
  163. package/dist/cjs/test/unit/scaledUiAmount.d.ts.map +1 -0
  164. package/dist/cjs/test/unit/scaledUiAmount.js +101 -0
  165. package/dist/cjs/test/unit/serialization/decodeV1Message.d.ts +2 -0
  166. package/dist/cjs/test/unit/serialization/decodeV1Message.d.ts.map +1 -0
  167. package/dist/cjs/test/unit/serialization/decodeV1Message.js +63 -0
  168. package/dist/cjs/test/unit/serialization/exportV1.d.ts +2 -0
  169. package/dist/cjs/test/unit/serialization/exportV1.d.ts.map +1 -0
  170. package/dist/cjs/test/unit/serialization/exportV1.js +21 -0
  171. package/dist/cjs/test/unit/serialization/parseWireTransaction.d.ts +2 -0
  172. package/dist/cjs/test/unit/serialization/parseWireTransaction.d.ts.map +1 -0
  173. package/dist/cjs/test/unit/serialization/parseWireTransaction.js +90 -0
  174. package/dist/cjs/test/unit/serialization/transactionV1.d.ts +2 -0
  175. package/dist/cjs/test/unit/serialization/transactionV1.d.ts.map +1 -0
  176. package/dist/cjs/test/unit/serialization/transactionV1.js +136 -0
  177. package/dist/{test → cjs/test}/unit/sol.d.ts.map +1 -1
  178. package/dist/cjs/test/unit/sol.js +5364 -0
  179. package/dist/cjs/test/unit/solInstructionFactory.d.ts.map +1 -0
  180. package/dist/cjs/test/unit/solInstructionFactory.js +623 -0
  181. package/dist/cjs/test/unit/solIntentVersion.d.ts +2 -0
  182. package/dist/cjs/test/unit/solIntentVersion.d.ts.map +1 -0
  183. package/dist/cjs/test/unit/solIntentVersion.js +59 -0
  184. package/dist/cjs/test/unit/solSafeRecovery.d.ts +2 -0
  185. package/dist/cjs/test/unit/solSafeRecovery.d.ts.map +1 -0
  186. package/dist/cjs/test/unit/solSafeRecovery.js +202 -0
  187. package/dist/cjs/test/unit/solToken.d.ts.map +1 -0
  188. package/dist/cjs/test/unit/solToken.js +37 -0
  189. package/dist/cjs/test/unit/token2022Resolve.d.ts +2 -0
  190. package/dist/cjs/test/unit/token2022Resolve.d.ts.map +1 -0
  191. package/dist/cjs/test/unit/token2022Resolve.js +252 -0
  192. package/dist/cjs/test/unit/tokenExtensions.d.ts +2 -0
  193. package/dist/cjs/test/unit/tokenExtensions.d.ts.map +1 -0
  194. package/dist/cjs/test/unit/tokenExtensions.js +73 -0
  195. package/dist/cjs/test/unit/transaction.d.ts.map +1 -0
  196. package/dist/cjs/test/unit/transaction.js +1129 -0
  197. package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +1 -0
  198. package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.js +202 -0
  199. package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +1 -0
  200. package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.js +508 -0
  201. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.d.ts +2 -0
  202. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.d.ts.map +1 -0
  203. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.js +343 -0
  204. package/dist/cjs/test/unit/transactionBuilder/computeUnitLimit.d.ts +2 -0
  205. package/dist/cjs/test/unit/transactionBuilder/computeUnitLimit.d.ts.map +1 -0
  206. package/dist/cjs/test/unit/transactionBuilder/computeUnitLimit.js +346 -0
  207. package/dist/cjs/test/unit/transactionBuilder/confidentialEnablementV1.d.ts +2 -0
  208. package/dist/cjs/test/unit/transactionBuilder/confidentialEnablementV1.d.ts.map +1 -0
  209. package/dist/cjs/test/unit/transactionBuilder/confidentialEnablementV1.js +123 -0
  210. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.d.ts +2 -0
  211. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.d.ts.map +1 -0
  212. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.js +955 -0
  213. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1.d.ts +2 -0
  214. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1.d.ts.map +1 -0
  215. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1.js +193 -0
  216. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1Ops.d.ts +2 -0
  217. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1Ops.d.ts.map +1 -0
  218. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1Ops.js +167 -0
  219. package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +1 -0
  220. package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.js +724 -0
  221. package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +1 -0
  222. package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.js +430 -0
  223. package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +1 -0
  224. package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +157 -0
  225. package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +1 -0
  226. package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.js +384 -0
  227. package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +1 -0
  228. package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.js +224 -0
  229. package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
  230. package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +259 -0
  231. package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  232. package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.js +926 -0
  233. package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  234. package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.js +495 -0
  235. package/dist/cjs/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  236. package/dist/cjs/test/unit/transactionBuilder/transferBuilder.js +302 -0
  237. package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +1 -0
  238. package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.js +910 -0
  239. package/dist/cjs/test/unit/transactionBuilder/v1PaymentBuilder.d.ts +2 -0
  240. package/dist/cjs/test/unit/transactionBuilder/v1PaymentBuilder.d.ts.map +1 -0
  241. package/dist/cjs/test/unit/transactionBuilder/v1PaymentBuilder.js +138 -0
  242. package/dist/cjs/test/unit/transactionBuilder/v1TransactionBuilder.d.ts +2 -0
  243. package/dist/cjs/test/unit/transactionBuilder/v1TransactionBuilder.d.ts.map +1 -0
  244. package/dist/cjs/test/unit/transactionBuilder/v1TransactionBuilder.js +331 -0
  245. package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +1 -0
  246. package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.js +259 -0
  247. package/dist/{test → cjs/test}/unit/utils.d.ts.map +1 -1
  248. package/dist/cjs/test/unit/utils.js +663 -0
  249. package/dist/cjs/test/unit/versionedTransaction.d.ts.map +1 -0
  250. package/dist/cjs/test/unit/versionedTransaction.js +207 -0
  251. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  252. package/dist/esm/bigint-buffer-guard.d.ts +1 -0
  253. package/dist/esm/index.d.ts +7 -0
  254. package/dist/esm/index.js +7 -0
  255. package/dist/esm/lib/ataInitializationBuilder.d.ts +58 -0
  256. package/dist/esm/lib/ataInitializationBuilder.d.ts.map +1 -0
  257. package/dist/esm/lib/ataInitializationBuilder.js +191 -0
  258. package/dist/esm/lib/closeAtaBuilder.d.ts +55 -0
  259. package/dist/esm/lib/closeAtaBuilder.d.ts.map +1 -0
  260. package/dist/esm/lib/closeAtaBuilder.js +155 -0
  261. package/dist/esm/lib/confidentialTransferBuilder.d.ts +136 -0
  262. package/dist/esm/lib/confidentialTransferBuilder.d.ts.map +1 -0
  263. package/dist/esm/lib/confidentialTransferBuilder.js +368 -0
  264. package/dist/esm/lib/constants.d.ts +235 -0
  265. package/dist/esm/lib/constants.d.ts.map +1 -0
  266. package/dist/esm/lib/constants.js +274 -0
  267. package/dist/esm/lib/customInstructionBuilder.d.ts +83 -0
  268. package/dist/{src → esm}/lib/customInstructionBuilder.d.ts.map +1 -1
  269. package/dist/esm/lib/customInstructionBuilder.js +385 -0
  270. package/dist/esm/lib/explainTransactionWasm.d.ts +21 -0
  271. package/dist/esm/lib/explainTransactionWasm.d.ts.map +1 -0
  272. package/dist/esm/lib/explainTransactionWasm.js +301 -0
  273. package/dist/esm/lib/iface.d.ts +549 -0
  274. package/dist/esm/lib/iface.d.ts.map +1 -0
  275. package/dist/esm/lib/iface.js +3 -0
  276. package/dist/esm/lib/index.d.ts +31 -0
  277. package/dist/esm/lib/index.d.ts.map +1 -0
  278. package/dist/esm/lib/index.js +31 -0
  279. package/dist/esm/lib/instructionParamsFactory.d.ts +14 -0
  280. package/dist/esm/lib/instructionParamsFactory.d.ts.map +1 -0
  281. package/dist/esm/lib/instructionParamsFactory.js +1276 -0
  282. package/dist/esm/lib/jitoStakePoolOperations.d.ts +113 -0
  283. package/dist/esm/lib/jitoStakePoolOperations.js +189 -0
  284. package/dist/esm/lib/keyPair.d.ts +32 -0
  285. package/dist/esm/lib/keyPair.d.ts.map +1 -0
  286. package/dist/esm/lib/keyPair.js +75 -0
  287. package/dist/esm/lib/messages/index.d.ts +2 -0
  288. package/dist/esm/lib/messages/index.js +2 -0
  289. package/dist/esm/lib/messages/messageBuilderFactory.d.ts +7 -0
  290. package/dist/{src → esm}/lib/messages/messageBuilderFactory.js +5 -9
  291. package/dist/esm/lib/recoverNestedAtaBuilder.d.ts +25 -0
  292. package/dist/esm/lib/recoverNestedAtaBuilder.d.ts.map +1 -0
  293. package/dist/esm/lib/recoverNestedAtaBuilder.js +83 -0
  294. package/dist/esm/lib/scaledUiAmount.d.ts +30 -0
  295. package/dist/esm/lib/scaledUiAmount.d.ts.map +1 -0
  296. package/dist/esm/lib/scaledUiAmount.js +108 -0
  297. package/dist/esm/lib/serialization/codecs/v1/config.d.ts +21 -0
  298. package/dist/esm/lib/serialization/codecs/v1/config.d.ts.map +1 -0
  299. package/dist/esm/lib/serialization/codecs/v1/config.js +30 -0
  300. package/dist/esm/lib/serialization/codecs/v1/instruction.d.ts +14 -0
  301. package/dist/esm/lib/serialization/codecs/v1/instruction.d.ts.map +1 -0
  302. package/dist/esm/lib/serialization/codecs/v1/instruction.js +29 -0
  303. package/dist/esm/lib/serialization/codecs/v1/message.d.ts +27 -0
  304. package/dist/esm/lib/serialization/codecs/v1/message.d.ts.map +1 -0
  305. package/dist/esm/lib/serialization/codecs/v1/message.js +188 -0
  306. package/dist/esm/lib/serialization/compileTransactionMessage.d.ts +36 -0
  307. package/dist/esm/lib/serialization/compileTransactionMessage.d.ts.map +1 -0
  308. package/dist/esm/lib/serialization/compileTransactionMessage.js +208 -0
  309. package/dist/esm/lib/serialization/index.d.ts +5 -0
  310. package/dist/esm/lib/serialization/index.d.ts.map +1 -0
  311. package/dist/esm/lib/serialization/index.js +5 -0
  312. package/dist/esm/lib/serialization/parseWireTransaction.d.ts +9 -0
  313. package/dist/esm/lib/serialization/parseWireTransaction.d.ts.map +1 -0
  314. package/dist/esm/lib/serialization/parseWireTransaction.js +50 -0
  315. package/dist/esm/lib/serialization/wire-transaction.d.ts +14 -0
  316. package/dist/esm/lib/serialization/wire-transaction.d.ts.map +1 -0
  317. package/dist/esm/lib/serialization/wire-transaction.js +48 -0
  318. package/dist/esm/lib/solInstructionFactory.d.ts +10 -0
  319. package/dist/esm/lib/solInstructionFactory.d.ts.map +1 -0
  320. package/dist/esm/lib/solInstructionFactory.js +1123 -0
  321. package/dist/esm/lib/stakingActivateBuilder.d.ts +59 -0
  322. package/dist/{src → esm}/lib/stakingActivateBuilder.d.ts.map +1 -1
  323. package/dist/esm/lib/stakingActivateBuilder.js +122 -0
  324. package/dist/esm/lib/stakingAuthorizeBuilder.d.ts +43 -0
  325. package/dist/esm/lib/stakingAuthorizeBuilder.js +82 -0
  326. package/dist/esm/lib/stakingDeactivateBuilder.d.ts +81 -0
  327. package/dist/{src → esm}/lib/stakingDeactivateBuilder.d.ts.map +1 -1
  328. package/dist/esm/lib/stakingDeactivateBuilder.js +207 -0
  329. package/dist/esm/lib/stakingDelegateBuilder.d.ts +42 -0
  330. package/dist/{src → esm}/lib/stakingDelegateBuilder.d.ts.map +1 -1
  331. package/dist/esm/lib/stakingDelegateBuilder.js +119 -0
  332. package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.d.ts +33 -0
  333. package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.js +103 -0
  334. package/dist/esm/lib/stakingWithdrawBuilder.d.ts +31 -0
  335. package/dist/{src → esm}/lib/stakingWithdrawBuilder.d.ts.map +1 -1
  336. package/dist/esm/lib/stakingWithdrawBuilder.js +80 -0
  337. package/dist/esm/lib/token2022Resolve.d.ts +106 -0
  338. package/dist/esm/lib/token2022Resolve.d.ts.map +1 -0
  339. package/dist/esm/lib/token2022Resolve.js +194 -0
  340. package/dist/esm/lib/tokenExtensions.d.ts +26 -0
  341. package/dist/esm/lib/tokenExtensions.d.ts.map +1 -0
  342. package/dist/esm/lib/tokenExtensions.js +103 -0
  343. package/dist/esm/lib/tokenTransferBuilder.d.ts +67 -0
  344. package/dist/esm/lib/tokenTransferBuilder.d.ts.map +1 -0
  345. package/dist/esm/lib/tokenTransferBuilder.js +230 -0
  346. package/dist/esm/lib/transaction.d.ts +148 -0
  347. package/dist/esm/lib/transaction.d.ts.map +1 -0
  348. package/dist/esm/lib/transaction.js +754 -0
  349. package/dist/esm/lib/transactionBuilder.d.ts +169 -0
  350. package/dist/esm/lib/transactionBuilder.d.ts.map +1 -0
  351. package/dist/esm/lib/transactionBuilder.js +455 -0
  352. package/dist/esm/lib/transactionBuilderFactory.d.ts +152 -0
  353. package/dist/esm/lib/transactionBuilderFactory.d.ts.map +1 -0
  354. package/dist/esm/lib/transactionBuilderFactory.js +245 -0
  355. package/dist/esm/lib/transferBuilder.d.ts +26 -0
  356. package/dist/{src → esm}/lib/transferBuilder.d.ts.map +1 -1
  357. package/dist/esm/lib/transferBuilder.js +74 -0
  358. package/dist/esm/lib/transferBuilderV2.d.ts +69 -0
  359. package/dist/esm/lib/transferBuilderV2.d.ts.map +1 -0
  360. package/dist/esm/lib/transferBuilderV2.js +245 -0
  361. package/dist/esm/lib/utils.d.ts +216 -0
  362. package/dist/{src → esm}/lib/utils.d.ts.map +1 -1
  363. package/dist/esm/lib/utils.js +642 -0
  364. package/dist/esm/lib/v1CustomInstructionBuilder.d.ts +29 -0
  365. package/dist/esm/lib/v1CustomInstructionBuilder.d.ts.map +1 -0
  366. package/dist/esm/lib/v1CustomInstructionBuilder.js +32 -0
  367. package/dist/esm/lib/v1PaymentBuilder.d.ts +36 -0
  368. package/dist/esm/lib/v1PaymentBuilder.d.ts.map +1 -0
  369. package/dist/esm/lib/v1PaymentBuilder.js +63 -0
  370. package/dist/esm/lib/v1TransactionBuilder.d.ts +253 -0
  371. package/dist/esm/lib/v1TransactionBuilder.d.ts.map +1 -0
  372. package/dist/esm/lib/v1TransactionBuilder.js +591 -0
  373. package/dist/esm/lib/walletInitializationBuilder.d.ts +26 -0
  374. package/dist/esm/lib/walletInitializationBuilder.js +64 -0
  375. package/dist/esm/register.d.ts +5 -0
  376. package/dist/esm/register.d.ts.map +1 -0
  377. package/dist/esm/register.js +24 -0
  378. package/dist/esm/sol.d.ts +351 -0
  379. package/dist/esm/sol.d.ts.map +1 -0
  380. package/dist/esm/sol.js +1666 -0
  381. package/dist/esm/solToken.d.ts +44 -0
  382. package/dist/esm/solToken.d.ts.map +1 -0
  383. package/dist/esm/solToken.js +75 -0
  384. package/dist/esm/tsol.d.ts +11 -0
  385. package/dist/esm/tsol.js +20 -0
  386. package/package.json +37 -17
  387. package/dist/src/config/token2022StaticConfig.d.ts +0 -3
  388. package/dist/src/config/token2022StaticConfig.d.ts.map +0 -1
  389. package/dist/src/config/token2022StaticConfig.js +0 -50
  390. package/dist/src/lib/ataInitializationBuilder.d.ts.map +0 -1
  391. package/dist/src/lib/ataInitializationBuilder.js +0 -196
  392. package/dist/src/lib/closeAtaBuilder.d.ts +0 -19
  393. package/dist/src/lib/closeAtaBuilder.d.ts.map +0 -1
  394. package/dist/src/lib/closeAtaBuilder.js +0 -69
  395. package/dist/src/lib/constants.d.ts.map +0 -1
  396. package/dist/src/lib/constants.js +0 -171
  397. package/dist/src/lib/customInstructionBuilder.js +0 -289
  398. package/dist/src/lib/iface.d.ts +0 -244
  399. package/dist/src/lib/iface.d.ts.map +0 -1
  400. package/dist/src/lib/iface.js +0 -7
  401. package/dist/src/lib/index.d.ts.map +0 -1
  402. package/dist/src/lib/index.js +0 -77
  403. package/dist/src/lib/instructionParamsFactory.d.ts.map +0 -1
  404. package/dist/src/lib/instructionParamsFactory.js +0 -1036
  405. package/dist/src/lib/jitoStakePoolOperations.js +0 -200
  406. package/dist/src/lib/keyPair.d.ts.map +0 -1
  407. package/dist/src/lib/keyPair.js +0 -63
  408. package/dist/src/lib/solInstructionFactory.d.ts.map +0 -1
  409. package/dist/src/lib/solInstructionFactory.js +0 -572
  410. package/dist/src/lib/stakingActivateBuilder.js +0 -120
  411. package/dist/src/lib/stakingAuthorizeBuilder.js +0 -89
  412. package/dist/src/lib/stakingDeactivateBuilder.js +0 -208
  413. package/dist/src/lib/stakingDelegateBuilder.js +0 -120
  414. package/dist/src/lib/stakingRawMsgAuthorizeBuilder.js +0 -110
  415. package/dist/src/lib/stakingWithdrawBuilder.js +0 -78
  416. package/dist/src/lib/token2022Config.d.ts +0 -44
  417. package/dist/src/lib/token2022Config.d.ts.map +0 -1
  418. package/dist/src/lib/token2022Config.js +0 -27
  419. package/dist/src/lib/tokenTransferBuilder.d.ts.map +0 -1
  420. package/dist/src/lib/tokenTransferBuilder.js +0 -188
  421. package/dist/src/lib/transaction.d.ts.map +0 -1
  422. package/dist/src/lib/transaction.js +0 -595
  423. package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
  424. package/dist/src/lib/transactionBuilder.js +0 -380
  425. package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
  426. package/dist/src/lib/transactionBuilderFactory.js +0 -202
  427. package/dist/src/lib/transferBuilder.js +0 -70
  428. package/dist/src/lib/transferBuilderV2.d.ts +0 -43
  429. package/dist/src/lib/transferBuilderV2.d.ts.map +0 -1
  430. package/dist/src/lib/transferBuilderV2.js +0 -210
  431. package/dist/src/lib/utils.js +0 -589
  432. package/dist/src/lib/walletInitializationBuilder.js +0 -71
  433. package/dist/src/register.d.ts +0 -3
  434. package/dist/src/register.d.ts.map +0 -1
  435. package/dist/src/register.js +0 -15
  436. package/dist/src/sol.d.ts.map +0 -1
  437. package/dist/src/sol.js +0 -1324
  438. package/dist/src/solToken.d.ts.map +0 -1
  439. package/dist/src/solToken.js +0 -69
  440. package/dist/src/tsol.js +0 -24
  441. package/dist/test/fixtures/sol.js +0 -1433
  442. package/dist/test/resources/sol.d.ts.map +0 -1
  443. package/dist/test/resources/sol.js +0 -320
  444. package/dist/test/unit/fixtures/solBackupKey.d.ts.map +0 -1
  445. package/dist/test/unit/fixtures/solBackupKey.js +0 -8
  446. package/dist/test/unit/getBuilderFactory.d.ts.map +0 -1
  447. package/dist/test/unit/getBuilderFactory.js +0 -10
  448. package/dist/test/unit/instructionParamsFactory.d.ts.map +0 -1
  449. package/dist/test/unit/instructionParamsFactory.js +0 -412
  450. package/dist/test/unit/instructionParamsFactory.staking.d.ts.map +0 -1
  451. package/dist/test/unit/instructionParamsFactory.staking.js +0 -1059
  452. package/dist/test/unit/keyPair.js +0 -177
  453. package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +0 -1
  454. package/dist/test/unit/messages/messageBuilderFactory.js +0 -118
  455. package/dist/test/unit/messages/simpleMessageBuilder.d.ts.map +0 -1
  456. package/dist/test/unit/messages/simpleMessageBuilder.js +0 -194
  457. package/dist/test/unit/sol.js +0 -3180
  458. package/dist/test/unit/solInstructionFactory.d.ts.map +0 -1
  459. package/dist/test/unit/solInstructionFactory.js +0 -454
  460. package/dist/test/unit/solToken.d.ts.map +0 -1
  461. package/dist/test/unit/solToken.js +0 -31
  462. package/dist/test/unit/transaction.d.ts.map +0 -1
  463. package/dist/test/unit/transaction.js +0 -983
  464. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +0 -1
  465. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.js +0 -202
  466. package/dist/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +0 -1
  467. package/dist/test/unit/transactionBuilder/ataInitBuilder.js +0 -471
  468. package/dist/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +0 -1
  469. package/dist/test/unit/transactionBuilder/customInstructionBuilder.js +0 -413
  470. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +0 -1
  471. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.js +0 -430
  472. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +0 -1
  473. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +0 -157
  474. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +0 -1
  475. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.js +0 -384
  476. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +0 -1
  477. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.js +0 -224
  478. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -1
  479. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +0 -259
  480. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +0 -1
  481. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +0 -787
  482. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +0 -1
  483. package/dist/test/unit/transactionBuilder/transactionBuilder.js +0 -495
  484. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +0 -1
  485. package/dist/test/unit/transactionBuilder/transferBuilder.js +0 -286
  486. package/dist/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +0 -1
  487. package/dist/test/unit/transactionBuilder/transferBuilderV2.js +0 -862
  488. package/dist/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +0 -1
  489. package/dist/test/unit/transactionBuilder/walletInitBuilder.js +0 -259
  490. package/dist/test/unit/utils.js +0 -517
  491. package/dist/test/unit/versionedTransaction.d.ts.map +0 -1
  492. package/dist/test/unit/versionedTransaction.js +0 -207
  493. package/dist/tsconfig.tsbuildinfo +0 -1
  494. /package/dist/{src → cjs/src}/bigint-buffer-guard.d.ts +0 -0
  495. /package/dist/{src → cjs/src}/index.d.ts +0 -0
  496. /package/dist/{src → cjs/src}/lib/jitoStakePoolOperations.d.ts +0 -0
  497. /package/dist/{src → cjs/src}/lib/messages/index.d.ts +0 -0
  498. /package/dist/{src → cjs/src}/lib/messages/messageBuilderFactory.d.ts +0 -0
  499. /package/dist/{src → cjs/src}/lib/stakingActivateBuilder.d.ts +0 -0
  500. /package/dist/{src → cjs/src}/lib/stakingAuthorizeBuilder.d.ts +0 -0
  501. /package/dist/{src → cjs/src}/lib/stakingDeactivateBuilder.d.ts +0 -0
  502. /package/dist/{src → cjs/src}/lib/stakingDelegateBuilder.d.ts +0 -0
  503. /package/dist/{src → cjs/src}/lib/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
  504. /package/dist/{src → cjs/src}/lib/stakingWithdrawBuilder.d.ts +0 -0
  505. /package/dist/{src → cjs/src}/lib/transferBuilder.d.ts +0 -0
  506. /package/dist/{src → cjs/src}/lib/walletInitializationBuilder.d.ts +0 -0
  507. /package/dist/{src → cjs/src}/tsol.d.ts +0 -0
  508. /package/dist/{test → cjs/test}/fixtures/sol.d.ts +0 -0
  509. /package/dist/{test → cjs/test}/unit/fixtures/solBackupKey.d.ts +0 -0
  510. /package/dist/{test → cjs/test}/unit/getBuilderFactory.d.ts +0 -0
  511. /package/dist/{test → cjs/test}/unit/instructionParamsFactory.d.ts +0 -0
  512. /package/dist/{test → cjs/test}/unit/instructionParamsFactory.staking.d.ts +0 -0
  513. /package/dist/{test → cjs/test}/unit/keyPair.d.ts +0 -0
  514. /package/dist/{test → cjs/test}/unit/messages/messageBuilderFactory.d.ts +0 -0
  515. /package/dist/{test → cjs/test}/unit/messages/simpleMessageBuilder.d.ts +0 -0
  516. /package/dist/{test → cjs/test}/unit/sol.d.ts +0 -0
  517. /package/dist/{test → cjs/test}/unit/solInstructionFactory.d.ts +0 -0
  518. /package/dist/{test → cjs/test}/unit/solToken.d.ts +0 -0
  519. /package/dist/{test → cjs/test}/unit/transaction.d.ts +0 -0
  520. /package/dist/{test → cjs/test}/unit/transactionBuilder/StakingWithdrawBuilder.d.ts +0 -0
  521. /package/dist/{test → cjs/test}/unit/transactionBuilder/ataInitBuilder.d.ts +0 -0
  522. /package/dist/{test → cjs/test}/unit/transactionBuilder/customInstructionBuilder.d.ts +0 -0
  523. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingActivateBuilder.d.ts +0 -0
  524. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts +0 -0
  525. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDeactivateBuilder.d.ts +0 -0
  526. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDelegateBuilder.d.ts +0 -0
  527. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
  528. /package/dist/{test → cjs/test}/unit/transactionBuilder/tokenTransferBuilder.d.ts +0 -0
  529. /package/dist/{test → cjs/test}/unit/transactionBuilder/transactionBuilder.d.ts +0 -0
  530. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilder.d.ts +0 -0
  531. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilderV2.d.ts +0 -0
  532. /package/dist/{test → cjs/test}/unit/transactionBuilder/walletInitBuilder.d.ts +0 -0
  533. /package/dist/{test → cjs/test}/unit/utils.d.ts +0 -0
  534. /package/dist/{test → cjs/test}/unit/versionedTransaction.d.ts +0 -0
  535. /package/dist/{src → esm}/bigint-buffer-guard.d.ts.map +0 -0
  536. /package/dist/{src → esm}/bigint-buffer-guard.js +0 -0
  537. /package/dist/{src → esm}/index.d.ts.map +0 -0
  538. /package/dist/{src → esm}/lib/jitoStakePoolOperations.d.ts.map +0 -0
  539. /package/dist/{src → esm}/lib/messages/index.d.ts.map +0 -0
  540. /package/dist/{src → esm}/lib/messages/messageBuilderFactory.d.ts.map +0 -0
  541. /package/dist/{src → esm}/lib/stakingAuthorizeBuilder.d.ts.map +0 -0
  542. /package/dist/{src → esm}/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -0
  543. /package/dist/{src → esm}/lib/walletInitializationBuilder.d.ts.map +0 -0
  544. /package/dist/{src → esm}/tsol.d.ts.map +0 -0
@@ -0,0 +1,245 @@
1
+ import { TransactionBuilder } from './transactionBuilder';
2
+ import { BuildTransactionError, TransactionType } from '@bitgo-beta/sdk-core';
3
+ import { getAssociatedTokenAccountAddress, getSolTokenFromTokenName, isValidAmount, validateAddress, validateMintAddress, validateOwnerAddress, } from './utils';
4
+ import assert from 'assert';
5
+ import { InstructionBuilderTypes } from './constants';
6
+ import _ from 'lodash';
7
+ const UNSIGNED_BIGINT_MAX = BigInt('18446744073709551615');
8
+ export class TransferBuilderV2 extends TransactionBuilder {
9
+ constructor(_coinConfig) {
10
+ super(_coinConfig);
11
+ this._sendParams = [];
12
+ this._createAtaParams = [];
13
+ }
14
+ /**
15
+ * Set the resolved sRFC-37 Token ACL permissionless-thaw params for this transfer.
16
+ *
17
+ * These must be resolved live by the caller (e.g. via `Sol.resolvePermissionlessThaw`) since
18
+ * builders remain offline and never perform RPC. When set, the built transaction bundles a
19
+ * `PermissionlessThawIdempotent` instruction after any ATA creation and before the transfer, so
20
+ * a freshly created (frozen) allowlist/blocklist token account is thawed atomically with the
21
+ * transfer — all-or-nothing.
22
+ *
23
+ * @param {PermissionlessThawIdempotent['params']} params - resolved thaw params
24
+ * @returns {TransferBuilderV2} This transaction builder
25
+ */
26
+ permissionlessThaw(params) {
27
+ this._permissionlessThaw = params;
28
+ return this;
29
+ }
30
+ /**
31
+ * Set the resolved Token-2022 Transfer Hook extra account metas for this transfer.
32
+ *
33
+ * These must be resolved live by the caller (e.g. via `Sol.resolveTransferHookAccounts`)
34
+ * since builders remain offline and never perform RPC. The order is significant and
35
+ * must match the hook's ExtraAccountMetaList.
36
+ *
37
+ * @param {ExtraAccountMeta[]} metas - resolved extra account metas, in hook order
38
+ * @returns {TransferBuilderV2} This transaction builder
39
+ */
40
+ transferHookAccounts(metas) {
41
+ this._transferHookAccounts = metas;
42
+ return this;
43
+ }
44
+ get transactionType() {
45
+ return TransactionType.Send;
46
+ }
47
+ initBuilder(tx) {
48
+ super.initBuilder(tx);
49
+ for (const instruction of this._instructionsData) {
50
+ if (instruction.type === InstructionBuilderTypes.Transfer) {
51
+ const transferInstruction = instruction;
52
+ this.sender(transferInstruction.params.fromAddress);
53
+ this.send({
54
+ address: transferInstruction.params.toAddress,
55
+ amount: transferInstruction.params.amount,
56
+ });
57
+ }
58
+ else if (instruction.type === InstructionBuilderTypes.TokenTransfer) {
59
+ const transferInstruction = instruction;
60
+ this.sender(transferInstruction.params.fromAddress);
61
+ this.send({
62
+ address: transferInstruction.params.toAddress,
63
+ amount: transferInstruction.params.amount,
64
+ tokenName: transferInstruction.params.tokenName,
65
+ });
66
+ }
67
+ else if (instruction.type === InstructionBuilderTypes.CreateAssociatedTokenAccount) {
68
+ const ataInitInstruction = instruction;
69
+ this._createAtaParams.push({
70
+ ownerAddress: ataInitInstruction.params.ownerAddress,
71
+ tokenName: ataInitInstruction.params.tokenName,
72
+ ataAddress: ataInitInstruction.params.ataAddress,
73
+ });
74
+ }
75
+ }
76
+ }
77
+ /**
78
+ * Set a feePayer
79
+ * @param payerAddress
80
+ */
81
+ feePayer(payerAddress) {
82
+ validateAddress(payerAddress, 'address');
83
+ this._feePayer = payerAddress;
84
+ return this;
85
+ }
86
+ /**
87
+ * Set a transfer
88
+ *
89
+ * @param {SendParams} sendParams - sendParams
90
+ * @returns {TransactionBuilder} This transaction builder
91
+ */
92
+ send(sendParams) {
93
+ validateAddress(sendParams.address, 'address');
94
+ if (!sendParams.amount || !isValidAmount(sendParams.amount)) {
95
+ throw new BuildTransactionError('Invalid or missing amount, got: ' + sendParams.amount);
96
+ }
97
+ if (sendParams.tokenName && BigInt(sendParams.amount) > UNSIGNED_BIGINT_MAX) {
98
+ throw new BuildTransactionError(`input amount ${sendParams.amount} exceeds big int limit ${UNSIGNED_BIGINT_MAX}`);
99
+ }
100
+ else if (!sendParams.tokenName && BigInt(sendParams.amount) > BigInt(Number.MAX_SAFE_INTEGER)) {
101
+ throw new BuildTransactionError(`input amount ${sendParams.amount} exceeds max safe int ${Number.MAX_SAFE_INTEGER}`);
102
+ }
103
+ this._sendParams.push(sendParams);
104
+ return this;
105
+ }
106
+ /**
107
+ *
108
+ * @param {TokenAssociateRecipient} recipient - recipient of the associated token account creation
109
+ * @param {string} recipient.ownerAddress - owner of the associated token account
110
+ * @param {string} recipient.tokenName - name of the token that is intended to associate
111
+ * @returns {TransactionBuilder} This transaction builder
112
+ */
113
+ createAssociatedTokenAccount(recipient) {
114
+ validateOwnerAddress(recipient.ownerAddress);
115
+ const token = getSolTokenFromTokenName(recipient.tokenName);
116
+ let tokenAddress;
117
+ if (recipient.tokenAddress) {
118
+ tokenAddress = recipient.tokenAddress;
119
+ }
120
+ else if (token) {
121
+ tokenAddress = token.tokenAddress;
122
+ }
123
+ if (!tokenAddress) {
124
+ throw new BuildTransactionError('Invalid token name, got: ' + recipient.tokenName);
125
+ }
126
+ validateMintAddress(tokenAddress);
127
+ this._createAtaParams.push(recipient);
128
+ return this;
129
+ }
130
+ /** @inheritdoc */
131
+ async buildImplementation() {
132
+ assert(this._sender, 'Sender must be set before building the transaction');
133
+ const sendInstructions = await Promise.all(this._sendParams.map(async (sendParams) => {
134
+ if (sendParams.tokenName) {
135
+ const coin = getSolTokenFromTokenName(sendParams.tokenName);
136
+ let tokenAddress;
137
+ let tokenName;
138
+ let programId;
139
+ let decimals;
140
+ if (sendParams.tokenAddress && sendParams.programId && sendParams.decimalPlaces != null) {
141
+ tokenName = sendParams.tokenName;
142
+ tokenAddress = sendParams.tokenAddress;
143
+ decimals = sendParams.decimalPlaces;
144
+ programId = sendParams.programId;
145
+ }
146
+ else if (coin) {
147
+ tokenName = coin.name;
148
+ tokenAddress = coin.tokenAddress;
149
+ decimals = coin.decimalPlaces;
150
+ programId = coin.programId;
151
+ }
152
+ else {
153
+ throw new Error(`Could not determine token information for ${sendParams.tokenName}`);
154
+ }
155
+ const sourceAddress = await getAssociatedTokenAccountAddress(tokenAddress, this._sender, false, programId);
156
+ return {
157
+ type: InstructionBuilderTypes.TokenTransfer,
158
+ params: {
159
+ fromAddress: this._sender,
160
+ toAddress: sendParams.address,
161
+ amount: sendParams.amount,
162
+ tokenName: tokenName,
163
+ sourceAddress: sourceAddress,
164
+ tokenAddress: tokenAddress,
165
+ programId: programId,
166
+ decimalPlaces: decimals,
167
+ ...(this._transferHookAccounts ? { transferHookAccounts: this._transferHookAccounts } : {}),
168
+ },
169
+ };
170
+ }
171
+ else {
172
+ return {
173
+ type: InstructionBuilderTypes.Transfer,
174
+ params: {
175
+ fromAddress: this._sender,
176
+ toAddress: sendParams.address,
177
+ amount: sendParams.amount,
178
+ },
179
+ };
180
+ }
181
+ }));
182
+ const uniqueCreateAtaParams = _.uniqBy(this._createAtaParams, (recipient) => {
183
+ return recipient.ownerAddress + recipient.tokenName;
184
+ });
185
+ const createAtaInstructions = await Promise.all(uniqueCreateAtaParams.map(async (recipient) => {
186
+ const coin = getSolTokenFromTokenName(recipient.tokenName);
187
+ let tokenAddress;
188
+ let tokenName;
189
+ let programId;
190
+ if (recipient.tokenAddress && recipient.programId) {
191
+ tokenName = recipient.tokenName;
192
+ tokenAddress = recipient.tokenAddress;
193
+ programId = recipient.programId;
194
+ }
195
+ else if (coin) {
196
+ tokenName = coin.name;
197
+ tokenAddress = coin.tokenAddress;
198
+ programId = coin.programId;
199
+ }
200
+ else {
201
+ throw new Error(`Could not determine token information for ${recipient.tokenName}`);
202
+ }
203
+ const recipientTokenAddress = await getAssociatedTokenAccountAddress(tokenAddress, recipient.ownerAddress, false, programId);
204
+ return {
205
+ type: InstructionBuilderTypes.CreateAssociatedTokenAccount,
206
+ params: {
207
+ ownerAddress: recipient.ownerAddress,
208
+ tokenName: tokenName,
209
+ mintAddress: tokenAddress,
210
+ ataAddress: recipientTokenAddress,
211
+ // Match transactionBuilder fee payer selection: when a distinct fee payer
212
+ // is set (e.g. gas tank on consolidation), it must fund ATA rent — the
213
+ // token sender/authority often has no SOL.
214
+ payerAddress: this._feePayer ?? this._sender,
215
+ programId: programId,
216
+ },
217
+ };
218
+ }));
219
+ // When resolved, emit the permissionless thaw between ATA creation and the transfer so the
220
+ // built order is [CreateATA?, PermissionlessThawIdempotent, TokenTransfer].
221
+ const thawInstructions = this._permissionlessThaw
222
+ ? [{ type: InstructionBuilderTypes.PermissionlessThawIdempotent, params: this._permissionlessThaw }]
223
+ : [];
224
+ let addPriorityFeeInstruction;
225
+ if (!this._priorityFee || this._priorityFee === Number(0)) {
226
+ this._instructionsData = [...createAtaInstructions, ...thawInstructions, ...sendInstructions];
227
+ }
228
+ else {
229
+ addPriorityFeeInstruction = {
230
+ type: InstructionBuilderTypes.SetPriorityFee,
231
+ params: {
232
+ fee: this._priorityFee,
233
+ },
234
+ };
235
+ this._instructionsData = [
236
+ addPriorityFeeInstruction,
237
+ ...createAtaInstructions,
238
+ ...thawInstructions,
239
+ ...sendInstructions,
240
+ ];
241
+ }
242
+ return await super.buildImplementation();
243
+ }
244
+ }
245
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyVjIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zZmVyQnVpbGRlclYyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU5RSxPQUFPLEVBQ0wsZ0NBQWdDLEVBQ2hDLHdCQUF3QixFQUN4QixhQUFhLEVBQ2IsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixvQkFBb0IsR0FDckIsTUFBTSxTQUFTLENBQUM7QUFFakIsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBVTVCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN0RCxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFXdkIsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUUzRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsa0JBQWtCO0lBS3ZELFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBTGIsZ0JBQVcsR0FBaUIsRUFBRSxDQUFDO1FBTXJDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsa0JBQWtCLENBQUMsTUFBOEM7UUFDL0QsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE1BQU0sQ0FBQztRQUNsQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxvQkFBb0IsQ0FBQyxLQUF5QjtRQUM1QyxJQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQWMsZUFBZTtRQUMzQixPQUFPLGVB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SSxFQUFFLHVCQUF1QixDQUFDLDRCQUE0QixFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUNwRyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRVAsSUFBSSx5QkFBeUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzFELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLEdBQUcscUJBQXFCLEVBQUUsR0FBRyxnQkFBZ0IsRUFBRSxHQUFHLGdCQUFnQixDQUFDLENBQUM7UUFDaEcsQ0FBQzthQUFNLENBQUM7WUFDTix5QkFBeUIsR0FBRztnQkFDMUIsSUFBSSxFQUFFLHVCQUF1QixDQUFDLGNBQWM7Z0JBQzVDLE1BQU0sRUFBRTtvQkFDTixHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVk7aUJBQ3ZCO2FBQ0YsQ0FBQztZQUNGLElBQUksQ0FBQyxpQkFBaUIsR0FBRztnQkFDdkIseUJBQXlCO2dCQUN6QixHQUFHLHFCQUFxQjtnQkFDeEIsR0FBRyxnQkFBZ0I7Z0JBQ25CLEdBQUcsZ0JBQWdCO2FBQ3BCLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxNQUFNLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzNDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IEJ1aWxkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7XG4gIGdldEFzc29jaWF0ZWRUb2tlbkFjY291bnRBZGRyZXNzLFxuICBnZXRTb2xUb2tlbkZyb21Ub2tlbk5hbWUsXG4gIGlzVmFsaWRBbW91bnQsXG4gIHZhbGlkYXRlQWRkcmVzcyxcbiAgdmFsaWRhdGVNaW50QWRkcmVzcyxcbiAgdmFsaWRhdGVPd25lckFkZHJlc3MsXG59IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHtcbiAgQXRhSW5pdCxcbiAgRXh0cmFBY2NvdW50TWV0YSxcbiAgUGVybWlzc2lvbmxlc3NUaGF3SWRlbXBvdGVudCxcbiAgVG9rZW5Bc3NvY2lhdGVSZWNpcGllbnQsXG4gIFRva2VuVHJhbnNmZXIsXG4gIFRyYW5zZmVyLFxuICBTZXRQcmlvcml0eUZlZSxcbn0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VuZFBhcmFtcyB7XG4gIGFkZHJlc3M6IHN0cmluZztcbiAgYW1vdW50OiBzdHJpbmc7XG4gIHRva2VuTmFtZT86IHN0cmluZztcbiAgdG9rZW5BZGRyZXNzPzogc3RyaW5nO1xuICBwcm9ncmFtSWQ/OiBzdHJpbmc7XG4gIGRlY2ltYWxQbGFjZXM/OiBudW1iZXI7XG59XG5cbmNvbnN0IFVOU0lHTkVEX0JJR0lOVF9NQVggPSBCaWdJbnQoJzE4NDQ2NzQ0MDczNzA5NTUxNjE1Jyk7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2ZlckJ1aWxkZXJWMiBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgX3NlbmRQYXJhbXM6IFNlbmRQYXJhbXNbXSA9IFtdO1xuICBwcml2YXRlIF9jcmVhdGVBdGFQYXJhbXM6IFRva2VuQXNzb2NpYXRlUmVjaXBpZW50W107XG4gIHByaXZhdGUgX3RyYW5zZmVySG9va0FjY291bnRzPzogRXh0cmFBY2NvdW50TWV0YVtdO1xuICBwcml2YXRlIF9wZXJtaXNzaW9ubGVzc1RoYXc/OiBQZXJtaXNzaW9ubGVzc1RoYXdJZGVtcG90ZW50WydwYXJhbXMnXTtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICAgIHRoaXMuX2NyZWF0ZUF0YVBhcmFtcyA9IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgcmVzb2x2ZWQgc1JGQy0zNyBUb2tlbiBBQ0wgcGVybWlzc2lvbmxlc3MtdGhhdyBwYXJhbXMgZm9yIHRoaXMgdHJhbnNmZXIuXG4gICAqXG4gICAqIFRoZXNlIG11c3QgYmUgcmVzb2x2ZWQgbGl2ZSBieSB0aGUgY2FsbGVyIChlLmcuIHZpYSBgU29sLnJlc29sdmVQZXJtaXNzaW9ubGVzc1RoYXdgKSBzaW5jZVxuICAgKiBidWlsZGVycyByZW1haW4gb2ZmbGluZSBhbmQgbmV2ZXIgcGVyZm9ybSBSUEMuIFdoZW4gc2V0LCB0aGUgYnVpbHQgdHJhbnNhY3Rpb24gYnVuZGxlcyBhXG4gICAqIGBQZXJtaXNzaW9ubGVzc1RoYXdJZGVtcG90ZW50YCBpbnN0cnVjdGlvbiBhZnRlciBhbnkgQVRBIGNyZWF0aW9uIGFuZCBiZWZvcmUgdGhlIHRyYW5zZmVyLCBzb1xuICAgKiBhIGZyZXNobHkgY3JlYXRlZCAoZnJvemVuKSBhbGxvd2xpc3QvYmxvY2tsaXN0IHRva2VuIGFjY291bnQgaXMgdGhhd2VkIGF0b21pY2FsbHkgd2l0aCB0aGVcbiAgICogdHJhbnNmZXIg4oCUIGFsbC1vci1ub3RoaW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge1Blcm1pc3Npb25sZXNzVGhhd0lkZW1wb3RlbnRbJ3BhcmFtcyddfSBwYXJhbXMgLSByZXNvbHZlZCB0aGF3IHBhcmFtc1xuICAgKiBAcmV0dXJucyB7VHJhbnNmZXJCdWlsZGVyVjJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgcGVybWlzc2lvbmxlc3NUaGF3KHBhcmFtczogUGVybWlzc2lvbmxlc3NUaGF3SWRlbXBvdGVudFsncGFyYW1zJ10pOiB0aGlzIHtcbiAgICB0aGlzLl9wZXJtaXNzaW9ubGVzc1RoYXcgPSBwYXJhbXM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSByZXNvbHZlZCBUb2tlbi0yMDIyIFRyYW5zZmVyIEhvb2sgZXh0cmEgYWNjb3VudCBtZXRhcyBmb3IgdGhpcyB0cmFuc2Zlci5cbiAgICpcbiAgICogVGhlc2UgbXVzdCBiZSByZXNvbHZlZCBsaXZlIGJ5IHRoZSBjYWxsZXIgKGUuZy4gdmlhIGBTb2wucmVzb2x2ZVRyYW5zZmVySG9va0FjY291bnRzYClcbiAgICogc2luY2UgYnVpbGRlcnMgcmVtYWluIG9mZmxpbmUgYW5kIG5ldmVyIHBlcmZvcm0gUlBDLiBUaGUgb3JkZXIgaXMgc2lnbmlmaWNhbnQgYW5kXG4gICAqIG11c3QgbWF0Y2ggdGhlIGhvb2sncyBFeHRyYUFjY291bnRNZXRhTGlzdC5cbiAgICpcbiAgICogQHBhcmFtIHtFeHRyYUFjY291bnRNZXRhW119IG1ldGFzIC0gcmVzb2x2ZWQgZXh0cmEgYWNjb3VudCBtZXRhcywgaW4gaG9vayBvcmRlclxuICAgKiBAcmV0dXJucyB7VHJhbnNmZXJCdWlsZGVyVjJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgdHJhbnNmZXJIb29rQWNjb3VudHMobWV0YXM6IEV4dHJhQWNjb3VudE1ldGFbXSk6IHRoaXMge1xuICAgIHRoaXMuX3RyYW5zZmVySG9va0FjY291bnRzID0gbWV0YXM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgfVxuXG4gIGluaXRCdWlsZGVyKHR4OiBUcmFuc2FjdGlvbik6IHZvaWQge1xuICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcblxuICAgIGZvciAoY29uc3QgaW5zdHJ1Y3Rpb24gb2YgdGhpcy5faW5zdHJ1Y3Rpb25zRGF0YSkge1xuICAgICAgaWYgKGluc3RydWN0aW9uLnR5cGUgPT09IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlRyYW5zZmVyKSB7XG4gICAgICAgIGNvbnN0IHRyYW5zZmVySW5zdHJ1Y3Rpb246IFRyYW5zZmVyID0gaW5zdHJ1Y3Rpb247XG4gICAgICAgIHRoaXMuc2VuZGVyKHRyYW5zZmVySW5zdHJ1Y3Rpb24ucGFyYW1zLmZyb21BZGRyZXNzKTtcbiAgICAgICAgdGhpcy5zZW5kKHtcbiAgICAgICAgICBhZGRyZXNzOiB0cmFuc2Zlckluc3RydWN0aW9uLnBhcmFtcy50b0FkZHJlc3MsXG4gICAgICAgICAgYW1vdW50OiB0cmFuc2Zlckluc3RydWN0aW9uLnBhcmFtcy5hbW91bnQsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChpbnN0cnVjdGlvbi50eXBlID09PSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ub2tlblRyYW5zZmVyKSB7XG4gICAgICAgIGNvbnN0IHRyYW5zZmVySW5zdHJ1Y3Rpb246IFRva2VuVHJhbnNmZXIgPSBpbnN0cnVjdGlvbjtcbiAgICAgICAgdGhpcy5zZW5kZXIodHJhbnNmZXJJbnN0cnVjdGlvbi5wYXJhbXMuZnJvbUFkZHJlc3MpO1xuICAgICAgICB0aGlzLnNlbmQoe1xuICAgICAgICAgIGFkZHJlc3M6IHRyYW5zZmVySW5zdHJ1Y3Rpb24ucGFyYW1zLnRvQWRkcmVzcyxcbiAgICAgICAgICBhbW91bnQ6IHRyYW5zZmVySW5zdHJ1Y3Rpb24ucGFyYW1zLmFtb3VudCxcbiAgICAgICAgICB0b2tlbk5hbWU6IHRyYW5zZmVySW5zdHJ1Y3Rpb24ucGFyYW1zLnRva2VuTmFtZSxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKGluc3RydWN0aW9uLnR5cGUgPT09IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkNyZWF0ZUFzc29jaWF0ZWRUb2tlbkFjY291bnQpIHtcbiAgICAgICAgY29uc3QgYXRhSW5pdEluc3RydWN0aW9uOiBBdGFJbml0ID0gaW5zdHJ1Y3Rpb247XG4gICAgICAgIHRoaXMuX2NyZWF0ZUF0YVBhcmFtcy5wdXNoKHtcbiAgICAgICAgICBvd25lckFkZHJlc3M6IGF0YUluaXRJbnN0cnVjdGlvbi5wYXJhbXMub3duZXJBZGRyZXNzLFxuICAgICAgICAgIHRva2VuTmFtZTogYXRhSW5pdEluc3RydWN0aW9uLnBhcmFtcy50b2tlbk5hbWUsXG4gICAgICAgICAgYXRhQWRkcmVzczogYXRhSW5pdEluc3RydWN0aW9uLnBhcmFtcy5hdGFBZGRyZXNzLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgZmVlUGF5ZXJcbiAgICogQHBhcmFtIHBheWVyQWRkcmVzc1xuICAgKi9cbiAgZmVlUGF5ZXIocGF5ZXJBZGRyZXNzOiBzdHJpbmcpOiB0aGlzIHtcbiAgICB2YWxpZGF0ZUFkZHJlc3MocGF5ZXJBZGRyZXNzLCAnYWRkcmVzcycpO1xuICAgIHRoaXMuX2ZlZVBheWVyID0gcGF5ZXJBZGRyZXNzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqICBTZXQgYSB0cmFuc2ZlclxuICAgKlxuICAgKiBAcGFyYW0ge1NlbmRQYXJhbXN9IHNlbmRQYXJhbXMgLSBzZW5kUGFyYW1zXG4gICAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkJ1aWxkZXJ9IFRoaXMgdHJhbnNhY3Rpb24gYnVpbGRlclxuICAgKi9cbiAgc2VuZChzZW5kUGFyYW1zOiBTZW5kUGFyYW1zKTogdGhpcyB7XG4gICAgdmFsaWRhdGVBZGRyZXNzKHNlbmRQYXJhbXMuYWRkcmVzcywgJ2FkZHJlc3MnKTtcbiAgICBpZiAoIXNlbmRQYXJhbXMuYW1vdW50IHx8ICFpc1ZhbGlkQW1vdW50KHNlbmRQYXJhbXMuYW1vdW50KSkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCBvciBtaXNzaW5nIGFtb3VudCwgZ290OiAnICsgc2VuZFBhcmFtcy5hbW91bnQpO1xuICAgIH1cbiAgICBpZiAoc2VuZFBhcmFtcy50b2tlbk5hbWUgJiYgQmlnSW50KHNlbmRQYXJhbXMuYW1vdW50KSA+IFVOU0lHTkVEX0JJR0lOVF9NQVgpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYGlucHV0IGFtb3VudCAke3NlbmRQYXJhbXMuYW1vdW50fSBleGNlZWRzIGJpZyBpbnQgbGltaXQgJHtVTlNJR05FRF9CSUdJTlRfTUFYfWApO1xuICAgIH0gZWxzZSBpZiAoIXNlbmRQYXJhbXMudG9rZW5OYW1lICYmIEJpZ0ludChzZW5kUGFyYW1zLmFtb3VudCkgPiBCaWdJbnQoTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICBgaW5wdXQgYW1vdW50ICR7c2VuZFBhcmFtcy5hbW91bnR9IGV4Y2VlZHMgbWF4IHNhZmUgaW50ICR7TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJ9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zZW5kUGFyYW1zLnB1c2goc2VuZFBhcmFtcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtUb2tlbkFzc29jaWF0ZVJlY2lwaWVudH0gcmVjaXBpZW50IC0gcmVjaXBpZW50IG9mIHRoZSBhc3NvY2lhdGVkIHRva2VuIGFjY291bnQgY3JlYXRpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlY2lwaWVudC5vd25lckFkZHJlc3MgLSBvd25lciBvZiB0aGUgYXNzb2NpYXRlZCB0b2tlbiBhY2NvdW50XG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWNpcGllbnQudG9rZW5OYW1lIC0gbmFtZSBvZiB0aGUgdG9rZW4gdGhhdCBpcyBpbnRlbmRlZCB0byBhc3NvY2lhdGVcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBjcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50KHJlY2lwaWVudDogVG9rZW5Bc3NvY2lhdGVSZWNpcGllbnQpOiB0aGlzIHtcbiAgICB2YWxpZGF0ZU93bmVyQWRkcmVzcyhyZWNpcGllbnQub3duZXJBZGRyZXNzKTtcbiAgICBjb25zdCB0b2tlbiA9IGdldFNvbFRva2VuRnJvbVRva2VuTmFtZShyZWNpcGllbnQudG9rZW5OYW1lKTtcbiAgICBsZXQgdG9rZW5BZGRyZXNzO1xuICAgIGlmIChyZWNpcGllbnQudG9rZW5BZGRyZXNzKSB7XG4gICAgICB0b2tlbkFkZHJlc3MgPSByZWNpcGllbnQudG9rZW5BZGRyZXNzO1xuICAgIH0gZWxzZSBpZiAodG9rZW4pIHtcbiAgICAgIHRva2VuQWRkcmVzcyA9IHRva2VuLnRva2VuQWRkcmVzcztcbiAgICB9XG5cbiAgICBpZiAoIXRva2VuQWRkcmVzcykge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0b2tlbiBuYW1lLCBnb3Q6ICcgKyByZWNpcGllbnQudG9rZW5OYW1lKTtcbiAgICB9XG4gICAgdmFsaWRhdGVNaW50QWRkcmVzcyh0b2tlbkFkZHJlc3MpO1xuXG4gICAgdGhpcy5fY3JlYXRlQXRhUGFyYW1zLnB1c2gocmVjaXBpZW50KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgYXNzZXJ0KHRoaXMuX3NlbmRlciwgJ1NlbmRlciBtdXN0IGJlIHNldCBiZWZvcmUgYnVpbGRpbmcgdGhlIHRyYW5zYWN0aW9uJyk7XG4gICAgY29uc3Qgc2VuZEluc3RydWN0aW9ucyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgdGhpcy5fc2VuZFBhcmFtcy5tYXAoYXN5bmMgKHNlbmRQYXJhbXM6IFNlbmRQYXJhbXMpOiBQcm9taXNlPFRyYW5zZmVyIHwgVG9rZW5UcmFuc2Zlcj4gPT4ge1xuICAgICAgICBpZiAoc2VuZFBhcmFtcy50b2tlbk5hbWUpIHtcbiAgICAgICAgICBjb25zdCBjb2luID0gZ2V0U29sVG9rZW5Gcm9tVG9rZW5OYW1lKHNlbmRQYXJhbXMudG9rZW5OYW1lKTtcbiAgICAgICAgICBsZXQgdG9rZW5BZGRyZXNzOiBzdHJpbmc7XG4gICAgICAgICAgbGV0IHRva2VuTmFtZTogc3RyaW5nO1xuICAgICAgICAgIGxldCBwcm9ncmFtSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgICBsZXQgZGVjaW1hbHM6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICAgICAgICBpZiAoc2VuZFBhcmFtcy50b2tlbkFkZHJlc3MgJiYgc2VuZFBhcmFtcy5wcm9ncmFtSWQgJiYgc2VuZFBhcmFtcy5kZWNpbWFsUGxhY2VzICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRva2VuTmFtZSA9IHNlbmRQYXJhbXMudG9rZW5OYW1lO1xuICAgICAgICAgICAgdG9rZW5BZGRyZXNzID0gc2VuZFBhcmFtcy50b2tlbkFkZHJlc3M7XG4gICAgICAgICAgICBkZWNpbWFscyA9IHNlbmRQYXJhbXMuZGVjaW1hbFBsYWNlcztcbiAgICAgICAgICAgIHByb2dyYW1JZCA9IHNlbmRQYXJhbXMucHJvZ3JhbUlkO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY29pbikge1xuICAgICAgICAgICAgdG9rZW5OYW1lID0gY29pbi5uYW1lO1xuICAgICAgICAgICAgdG9rZW5BZGRyZXNzID0gY29pbi50b2tlbkFkZHJlc3M7XG4gICAgICAgICAgICBkZWNpbWFscyA9IGNvaW4uZGVjaW1hbFBsYWNlcztcbiAgICAgICAgICAgIHByb2dyYW1JZCA9IGNvaW4ucHJvZ3JhbUlkO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBkZXRlcm1pbmUgdG9rZW4gaW5mb3JtYXRpb24gZm9yICR7c2VuZFBhcmFtcy50b2tlbk5hbWV9YCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgc291cmNlQWRkcmVzcyA9IGF3YWl0IGdldEFzc29jaWF0ZWRUb2tlbkFjY291bnRBZGRyZXNzKHRva2VuQWRkcmVzcywgdGhpcy5fc2VuZGVyLCBmYWxzZSwgcHJvZ3JhbUlkKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuVG9rZW5UcmFuc2ZlcixcbiAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICBmcm9tQWRkcmVzczogdGhpcy5fc2VuZGVyLFxuICAgICAgICAgICAgICB0b0FkZHJlc3M6IHNlbmRQYXJhbXMuYWRkcmVzcyxcbiAgICAgICAgICAgICAgYW1vdW50OiBzZW5kUGFyYW1zLmFtb3VudCxcbiAgICAgICAgICAgICAgdG9rZW5OYW1lOiB0b2tlbk5hbWUsXG4gICAgICAgICAgICAgIHNvdXJjZUFkZHJlc3M6IHNvdXJjZUFkZHJlc3MsXG4gICAgICAgICAgICAgIHRva2VuQWRkcmVzczogdG9rZW5BZGRyZXNzLFxuICAgICAgICAgICAgICBwcm9ncmFtSWQ6IHByb2dyYW1JZCxcbiAgICAgICAgICAgICAgZGVjaW1hbFBsYWNlczogZGVjaW1hbHMsXG4gICAgICAgICAgICAgIC4uLih0aGlzLl90cmFuc2Zlckhvb2tBY2NvdW50cyA/IHsgdHJhbnNmZXJIb29rQWNjb3VudHM6IHRoaXMuX3RyYW5zZmVySG9va0FjY291bnRzIH0gOiB7fSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlRyYW5zZmVyLFxuICAgICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICAgIGZyb21BZGRyZXNzOiB0aGlzLl9zZW5kZXIsXG4gICAgICAgICAgICAgIHRvQWRkcmVzczogc2VuZFBhcmFtcy5hZGRyZXNzLFxuICAgICAgICAgICAgICBhbW91bnQ6IHNlbmRQYXJhbXMuYW1vdW50LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgY29uc3QgdW5pcXVlQ3JlYXRlQXRhUGFyYW1zID0gXy51bmlxQnkodGhpcy5fY3JlYXRlQXRhUGFyYW1zLCAocmVjaXBpZW50OiBUb2tlbkFzc29jaWF0ZVJlY2lwaWVudCkgPT4ge1xuICAgICAgcmV0dXJuIHJlY2lwaWVudC5vd25lckFkZHJlc3MgKyByZWNpcGllbnQudG9rZW5OYW1lO1xuICAgIH0pO1xuICAgIGNvbnN0IGNyZWF0ZUF0YUluc3RydWN0aW9ucyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgdW5pcXVlQ3JlYXRlQXRhUGFyYW1zLm1hcChhc3luYyAocmVjaXBpZW50OiBUb2tlbkFzc29jaWF0ZVJlY2lwaWVudCk6IFByb21pc2U8QXRhSW5pdD4gPT4ge1xuICAgICAgICBjb25zdCBjb2luID0gZ2V0U29sVG9rZW5Gcm9tVG9rZW5OYW1lKHJlY2lwaWVudC50b2tlbk5hbWUpO1xuICAgICAgICBsZXQgdG9rZW5BZGRyZXNzOiBzdHJpbmc7XG4gICAgICAgIGxldCB0b2tlbk5hbWU6IHN0cmluZztcbiAgICAgICAgbGV0IHByb2dyYW1JZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBpZiAocmVjaXBpZW50LnRva2VuQWRkcmVzcyAmJiByZWNpcGllbnQucHJvZ3JhbUlkKSB7XG4gICAgICAgICAgdG9rZW5OYW1lID0gcmVjaXBpZW50LnRva2VuTmFtZTtcbiAgICAgICAgICB0b2tlbkFkZHJlc3MgPSByZWNpcGllbnQudG9rZW5BZGRyZXNzO1xuICAgICAgICAgIHByb2dyYW1JZCA9IHJlY2lwaWVudC5wcm9ncmFtSWQ7XG4gICAgICAgIH0gZWxzZSBpZiAoY29pbikge1xuICAgICAgICAgIHRva2VuTmFtZSA9IGNvaW4ubmFtZTtcbiAgICAgICAgICB0b2tlbkFkZHJlc3MgPSBjb2luLnRva2VuQWRkcmVzcztcbiAgICAgICAgICBwcm9ncmFtSWQgPSBjb2luLnByb2dyYW1JZDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBkZXRlcm1pbmUgdG9rZW4gaW5mb3JtYXRpb24gZm9yICR7cmVjaXBpZW50LnRva2VuTmFtZX1gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZWNpcGllbnRUb2tlbkFkZHJlc3MgPSBhd2FpdCBnZXRBc3NvY2lhdGVkVG9rZW5BY2NvdW50QWRkcmVzcyhcbiAgICAgICAgICB0b2tlbkFkZHJlc3MsXG4gICAgICAgICAgcmVjaXBpZW50Lm93bmVyQWRkcmVzcyxcbiAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICBwcm9ncmFtSWRcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50LFxuICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgb3duZXJBZGRyZXNzOiByZWNpcGllbnQub3duZXJBZGRyZXNzLFxuICAgICAgICAgICAgdG9rZW5OYW1lOiB0b2tlbk5hbWUsXG4gICAgICAgICAgICBtaW50QWRkcmVzczogdG9rZW5BZGRyZXNzLFxuICAgICAgICAgICAgYXRhQWRkcmVzczogcmVjaXBpZW50VG9rZW5BZGRyZXNzLFxuICAgICAgICAgICAgLy8gTWF0Y2ggdHJhbnNhY3Rpb25CdWlsZGVyIGZlZSBwYXllciBzZWxlY3Rpb246IHdoZW4gYSBkaXN0aW5jdCBmZWUgcGF5ZXJcbiAgICAgICAgICAgIC8vIGlzIHNldCAoZS5nLiBnYXMgdGFuayBvbiBjb25zb2xpZGF0aW9uKSwgaXQgbXVzdCBmdW5kIEFUQSByZW50IOKAlCB0aGVcbiAgICAgICAgICAgIC8vIHRva2VuIHNlbmRlci9hdXRob3JpdHkgb2Z0ZW4gaGFzIG5vIFNPTC5cbiAgICAgICAgICAgIHBheWVyQWRkcmVzczogdGhpcy5fZmVlUGF5ZXIgPz8gdGhpcy5fc2VuZGVyLFxuICAgICAgICAgICAgcHJvZ3JhbUlkOiBwcm9ncmFtSWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIC8vIFdoZW4gcmVzb2x2ZWQsIGVtaXQgdGhlIHBlcm1pc3Npb25sZXNzIHRoYXcgYmV0d2VlbiBBVEEgY3JlYXRpb24gYW5kIHRoZSB0cmFuc2ZlciBzbyB0aGVcbiAgICAvLyBidWlsdCBvcmRlciBpcyBbQ3JlYXRlQVRBPywgUGVybWlzc2lvbmxlc3NUaGF3SWRlbXBvdGVudCwgVG9rZW5UcmFuc2Zlcl0uXG4gICAgY29uc3QgdGhhd0luc3RydWN0aW9uczogUGVybWlzc2lvbmxlc3NUaGF3SWRlbXBvdGVudFtdID0gdGhpcy5fcGVybWlzc2lvbmxlc3NUaGF3XG4gICAgICA/IFt7IHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlBlcm1pc3Npb25sZXNzVGhhd0lkZW1wb3RlbnQsIHBhcmFtczogdGhpcy5fcGVybWlzc2lvbmxlc3NUaGF3IH1dXG4gICAgICA6IFtdO1xuXG4gICAgbGV0IGFkZFByaW9yaXR5RmVlSW5zdHJ1Y3Rpb246IFNldFByaW9yaXR5RmVlO1xuICAgIGlmICghdGhpcy5fcHJpb3JpdHlGZWUgfHwgdGhpcy5fcHJpb3JpdHlGZWUgPT09IE51bWJlcigwKSkge1xuICAgICAgdGhpcy5faW5zdHJ1Y3Rpb25zRGF0YSA9IFsuLi5jcmVhdGVBdGFJbnN0cnVjdGlvbnMsIC4uLnRoYXdJbnN0cnVjdGlvbnMsIC4uLnNlbmRJbnN0cnVjdGlvbnNdO1xuICAgIH0gZWxzZSB7XG4gICAgICBhZGRQcmlvcml0eUZlZUluc3RydWN0aW9uID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5TZXRQcmlvcml0eUZlZSxcbiAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgZmVlOiB0aGlzLl9wcmlvcml0eUZlZSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgICB0aGlzLl9pbnN0cnVjdGlvbnNEYXRhID0gW1xuICAgICAgICBhZGRQcmlvcml0eUZlZUluc3RydWN0aW9uLFxuICAgICAgICAuLi5jcmVhdGVBdGFJbnN0cnVjdGlvbnMsXG4gICAgICAgIC4uLnRoYXdJbnN0cnVjdGlvbnMsXG4gICAgICAgIC4uLnNlbmRJbnN0cnVjdGlvbnMsXG4gICAgICBdO1xuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCBzdXBlci5idWlsZEltcGxlbWVudGF0aW9uKCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,216 @@
1
+ import { SolInstruction, SolVersionedInstruction, TransactionType } from '@bitgo-beta/sdk-core';
2
+ import { BaseCoin, BaseNetwork, SolCoin } from '@bitgo-beta/statics';
3
+ import { SignaturePubkeyPair, Transaction as SolTransaction, TransactionInstruction } from '@solana/web3.js';
4
+ import { ValidInstructionTypes } from './iface';
5
+ /**
6
+ * Checks if an ATA instruction is idempotent (discriminator byte = 1).
7
+ *
8
+ * Idempotent ATA instructions use Buffer.from([1]) as instruction data, created by
9
+ * @solana/spl-token's createAssociatedTokenAccountIdempotentInstruction() (v0.4.1+).
10
+ * An idempotent ATA instruction succeed even if account exists,
11
+ * preventing race condition errors in concurrent scenarios.
12
+ *
13
+ * @param {TransactionInstruction} instruction - The instruction to validate
14
+ * @returns {boolean} True if instruction data is a single byte with value 1
15
+ */
16
+ export declare function isIdempotentAtaInstruction(instruction: TransactionInstruction): boolean;
17
+ /** @inheritdoc */
18
+ export declare function isValidAddress(address: string): boolean;
19
+ /** @inheritdoc */
20
+ export declare function isValidBlockId(hash: string): boolean;
21
+ /** @inheritdoc */
22
+ export declare function isValidPrivateKey(prvKey: string | Uint8Array): boolean;
23
+ /** @inheritdoc */
24
+ export declare function isValidPublicKey(pubKey: string): boolean;
25
+ /** @inheritdoc */
26
+ export declare function isValidSignature(signature: string): boolean;
27
+ /** @inheritdoc */
28
+ export declare function isValidTransactionId(txId: string): boolean;
29
+ /**
30
+ * Returns whether or not the string is a valid amount of lamports number
31
+ *
32
+ * @param {string} amount - the string to validate
33
+ * @returns {boolean} - the validation result
34
+ */
35
+ export declare function isValidAmount(amount: string): boolean;
36
+ /**
37
+ * Check if the string is a valid amount of lamports number on staking
38
+ *
39
+ * @param {string} amount - the string to validate
40
+ * @returns {boolean} - the validation result
41
+ */
42
+ export declare function isValidStakingAmount(amount: string): boolean;
43
+ /**
44
+ * Check if this is a valid memo or not.
45
+ *
46
+ * @param memo - the memo string
47
+ * @returns {boolean} - the validation result
48
+ */
49
+ export declare function isValidMemo(memo: string): boolean;
50
+ /**
51
+ * Checks if a string is valid base64 encoded data
52
+ * @param str - The string to validate
53
+ * @returns True if the string is valid base64, false otherwise
54
+ */
55
+ export declare function isValidBase64(str: string): boolean;
56
+ /**
57
+ * Checks if a string is valid hexadecimal data
58
+ * @param str - The string to validate
59
+ * @returns True if the string is valid hex, false otherwise
60
+ */
61
+ export declare function isValidHex(str: string): boolean;
62
+ /**
63
+ * Checks if raw transaction can be deserialized
64
+ *
65
+ * @param {string} rawTransaction - transaction in base64 string format
66
+ * @param {boolean} requireAllSignatures - require all signatures to be present
67
+ * @param {boolean} verifySignatures - verify signatures
68
+ * @returns {boolean} - the validation result
69
+ */
70
+ export declare function isValidRawTransaction(rawTransaction: string, requireAllSignatures?: boolean, verifySignatures?: boolean): boolean;
71
+ /**
72
+ * Verifies if signature for message is valid.
73
+ *
74
+ * @param {Buffer} serializedTx - tx as a base64 string
75
+ * @param {string} signature - signature as a string
76
+ * @param {string} publicKey - public key as base 58
77
+ * @returns {Boolean} true if signature is valid.
78
+ */
79
+ export declare function verifySignature(serializedTx: string, signature: string, publicKey: string): boolean;
80
+ /**
81
+ * Converts a base58 string into a Uint8Array.
82
+ *
83
+ * @param {string} input - a string in base58
84
+ * @returns {Uint8Array} - an Uint8Array
85
+ */
86
+ export declare function base58ToUint8Array(input: string): Uint8Array;
87
+ /**
88
+ * Converts a Uint8Array to a base58 string.
89
+ *
90
+ * @param {Uint8Array} input - an Uint8Array
91
+ * @returns {string} - a string in base58
92
+ */
93
+ export declare function Uint8ArrayTobase58(input: Uint8Array): string;
94
+ /**
95
+ * Count the amount of signatures are not null.
96
+ *
97
+ * @param {SignaturePubkeyPair[]} signatures - an array of SignaturePubkeyPair
98
+ * @returns {number} - the amount of valid signatures
99
+ */
100
+ export declare function countNotNullSignatures(signatures: SignaturePubkeyPair[]): number;
101
+ /**
102
+ * Check if all signatures are completed.
103
+ *
104
+ * @param {SignaturePubkeyPair[]} signatures - signatures
105
+ * @returns {boolean}
106
+ */
107
+ export declare function requiresAllSignatures(signatures: SignaturePubkeyPair[]): boolean;
108
+ /**
109
+ * Check the transaction type matching instructions by order. Memo and AdvanceNonceAccount instructions
110
+ * are ignored.
111
+ *
112
+ * @param {TransactionInstruction[]} instructions - the array of supported Solana instructions to be parsed
113
+ * @param {Record<string, number>} instructionIndexes - the instructions indexes of the current transaction
114
+ * @returns true if it matches by order.
115
+ */
116
+ export declare function matchTransactionTypeByInstructionsOrder(instructions: TransactionInstruction[], instructionIndexes: Record<string, number>): boolean;
117
+ /**
118
+ * Returns true when any instruction in the transaction is a confidential-transfer
119
+ * instruction.
120
+ *
121
+ * Unlike the staking and ATA patterns above, CT transactions cannot be identified by a
122
+ * fixed instruction order: enablement carries CreateATA + Reallocate before
123
+ * ConfigureAccount, while spend transactions lead with ApplyPendingBalance. They are
124
+ * identified by program + discriminator instead, so this is a membership test rather
125
+ * than an ordered match.
126
+ */
127
+ export declare function matchConfidentialTransferInstructions(instructions: TransactionInstruction[]): boolean;
128
+ /**
129
+ * Returns the transaction Type based on the transaction instructions.
130
+ * Wallet initialization, Transfer and Staking transactions are supported.
131
+ *
132
+ * @param {SolTransaction} transaction - the solana transaction
133
+ * @returns {TransactionType} - the type of transaction
134
+ */
135
+ export declare function getTransactionType(transaction: SolTransaction): TransactionType;
136
+ /**
137
+ * Returns the instruction Type based on the solana instructions.
138
+ * Throws if the solana instruction program is not supported
139
+ *
140
+ * @param {TransactionInstruction} instruction - a solana instruction
141
+ * @returns {ValidInstructionTypes} - a solana instruction type
142
+ */
143
+ export declare function getInstructionType(instruction: TransactionInstruction): ValidInstructionTypes;
144
+ /**
145
+ * Validate solana instructions types to see if they are supported by the builder.
146
+ * Throws if the instruction type is invalid.
147
+ *
148
+ * @param {TransactionInstruction} instructions - a solana instruction
149
+ * @returns {void}
150
+ */
151
+ export declare function validateIntructionTypes(instructions: TransactionInstruction[]): void;
152
+ /**
153
+ * Validate solana instructions match raw msg authorize transaction
154
+ *
155
+ * @param {TransactionInstruction} instructions - a solana instruction
156
+ * @returns {boolean} true if the instructions match the raw msg authorize transaction
157
+ */
158
+ export declare function validateRawMsgInstruction(instructions: TransactionInstruction[]): boolean;
159
+ /**
160
+ * Check the raw transaction has a valid format in the blockchain context, throw otherwise.
161
+ *
162
+ * @param {string} rawTransaction - Transaction in base64 string format
163
+ */
164
+ export declare function validateRawTransaction(rawTransaction: string, requireAllSignatures?: boolean, verifySignatures?: boolean): void;
165
+ /**
166
+ * Validates address to check if it exists and is a valid Solana public key
167
+ *
168
+ * @param {string} address The address to be validated
169
+ * @param {string} fieldName Name of the field to validate, its needed to return which field is failing on case of error.
170
+ */
171
+ export declare function validateAddress(address: string, fieldName: string): void;
172
+ /**
173
+ * Get the statics coin object matching a given Solana token address if it exists
174
+ *
175
+ * @param tokenAddress The token address to match against
176
+ * @param network Solana Mainnet or Testnet
177
+ * @returns statics BaseCoin object for the matching token
178
+ */
179
+ export declare function getSolTokenFromAddress(tokenAddress: string, network: BaseNetwork): Readonly<BaseCoin> | undefined;
180
+ /**
181
+ * Get the statics coin object matching a given Solana token address if it exists
182
+ *
183
+ * @param tokenAddress The token address to match against
184
+ * @param network Solana Mainnet or Testnet
185
+ * @returns statics BaseCoin object for the matching token
186
+ */
187
+ export declare function getSolTokenFromAddressOnly(tokenAddress: string): Readonly<BaseCoin> | undefined;
188
+ /**
189
+ * Get the solana token object from token name
190
+ * @param tokenName The token name to match against
191
+ * */
192
+ export declare function getSolTokenFromTokenName(tokenName: string): Readonly<SolCoin> | undefined;
193
+ /**
194
+ * Get the solana associated token account address
195
+ * @param tokenAddress token mint address
196
+ * @param ownerAddress The owner of the associated token account
197
+ * @returns The associated token account address
198
+ * */
199
+ export declare function getAssociatedTokenAccountAddress(tokenMintAddress: string, ownerAddress: string, allowOwnerOffCurve?: boolean, programId?: string): Promise<string>;
200
+ export declare function validateMintAddress(mintAddress: string): void;
201
+ export declare function validateOwnerAddress(ownerAddress: string): void;
202
+ /**
203
+ * Type predicate to check if an instruction is a legacy SolInstruction.
204
+ * Uses 'programId' property as the discriminator since it's unique to legacy instructions
205
+ * Versioned instructions have 'programIdIndex' property.
206
+ *
207
+ * @param instruction - The instruction to check
208
+ * @returns True if the instruction is a SolInstruction (has programId field)
209
+ */
210
+ export declare function isSolLegacyInstruction(instruction: SolInstruction | SolVersionedInstruction): instruction is SolInstruction;
211
+ /**
212
+ * Token-2022 transfer fee: min(amount * basisPoints / 10000, maximumFee), in raw base units.
213
+ * All math in BigInt to avoid precision loss.
214
+ */
215
+ export declare function computeTransferFee(amount: string, basisPoints: number, maximumFee: string): string;
216
+ //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"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"}