@bitgo-beta/sdk-coin-sol 7.6.4-beta.73 → 7.6.4-beta.730

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 (532) 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 +128 -0
  12. package/dist/cjs/src/lib/confidentialTransferBuilder.d.ts.map +1 -0
  13. package/dist/cjs/src/lib/confidentialTransferBuilder.js +311 -0
  14. package/dist/{src → cjs/src}/lib/constants.d.ts +96 -2
  15. package/dist/cjs/src/lib/constants.d.ts.map +1 -0
  16. package/dist/cjs/src/lib/constants.js +276 -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 +526 -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 +1280 -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 +1094 -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 +34 -1
  93. package/dist/cjs/src/lib/transaction.d.ts.map +1 -0
  94. package/dist/cjs/src/lib/transaction.js +704 -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 +5 -0
  107. package/dist/cjs/src/lib/utils.d.ts.map +1 -0
  108. package/dist/cjs/src/lib/utils.js +665 -0
  109. package/dist/cjs/src/lib/v1CustomInstructionBuilder.d.ts +21 -0
  110. package/dist/cjs/src/lib/v1CustomInstructionBuilder.d.ts.map +1 -0
  111. package/dist/cjs/src/lib/v1CustomInstructionBuilder.js +28 -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 +1697 -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/explainTransactionWasm.d.ts +5 -0
  137. package/dist/cjs/test/unit/explainTransactionWasm.d.ts.map +1 -0
  138. package/dist/cjs/test/unit/explainTransactionWasm.js +66 -0
  139. package/dist/cjs/test/unit/fixtures/solBackupKey.d.ts.map +1 -0
  140. package/dist/cjs/test/unit/fixtures/solBackupKey.js +8 -0
  141. package/dist/cjs/test/unit/getBuilderFactory.d.ts.map +1 -0
  142. package/dist/cjs/test/unit/getBuilderFactory.js +10 -0
  143. package/dist/cjs/test/unit/instructionParamsFactory.d.ts.map +1 -0
  144. package/dist/cjs/test/unit/instructionParamsFactory.js +425 -0
  145. package/dist/cjs/test/unit/instructionParamsFactory.staking.d.ts.map +1 -0
  146. package/dist/cjs/test/unit/instructionParamsFactory.staking.js +1059 -0
  147. package/dist/cjs/test/unit/jitoWasmVerification.d.ts +2 -0
  148. package/dist/cjs/test/unit/jitoWasmVerification.d.ts.map +1 -0
  149. package/dist/cjs/test/unit/jitoWasmVerification.js +78 -0
  150. package/dist/{test → cjs/test}/unit/keyPair.d.ts.map +1 -1
  151. package/dist/cjs/test/unit/keyPair.js +177 -0
  152. package/dist/cjs/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
  153. package/dist/cjs/test/unit/messages/messageBuilderFactory.js +118 -0
  154. package/dist/cjs/test/unit/messages/simpleMessageBuilder.d.ts.map +1 -0
  155. package/dist/cjs/test/unit/messages/simpleMessageBuilder.js +194 -0
  156. package/dist/cjs/test/unit/register.d.ts +2 -0
  157. package/dist/cjs/test/unit/register.d.ts.map +1 -0
  158. package/dist/cjs/test/unit/register.js +65 -0
  159. package/dist/cjs/test/unit/scaledUiAmount.d.ts +2 -0
  160. package/dist/cjs/test/unit/scaledUiAmount.d.ts.map +1 -0
  161. package/dist/cjs/test/unit/scaledUiAmount.js +101 -0
  162. package/dist/cjs/test/unit/serialization/decodeV1Message.d.ts +2 -0
  163. package/dist/cjs/test/unit/serialization/decodeV1Message.d.ts.map +1 -0
  164. package/dist/cjs/test/unit/serialization/decodeV1Message.js +63 -0
  165. package/dist/cjs/test/unit/serialization/exportV1.d.ts +2 -0
  166. package/dist/cjs/test/unit/serialization/exportV1.d.ts.map +1 -0
  167. package/dist/cjs/test/unit/serialization/exportV1.js +21 -0
  168. package/dist/cjs/test/unit/serialization/parseWireTransaction.d.ts +2 -0
  169. package/dist/cjs/test/unit/serialization/parseWireTransaction.d.ts.map +1 -0
  170. package/dist/cjs/test/unit/serialization/parseWireTransaction.js +90 -0
  171. package/dist/cjs/test/unit/serialization/transactionV1.d.ts +2 -0
  172. package/dist/cjs/test/unit/serialization/transactionV1.d.ts.map +1 -0
  173. package/dist/cjs/test/unit/serialization/transactionV1.js +136 -0
  174. package/dist/{test → cjs/test}/unit/sol.d.ts.map +1 -1
  175. package/dist/cjs/test/unit/sol.js +5364 -0
  176. package/dist/cjs/test/unit/solInstructionFactory.d.ts.map +1 -0
  177. package/dist/cjs/test/unit/solInstructionFactory.js +623 -0
  178. package/dist/cjs/test/unit/solToken.d.ts.map +1 -0
  179. package/dist/cjs/test/unit/solToken.js +37 -0
  180. package/dist/cjs/test/unit/token2022Resolve.d.ts +2 -0
  181. package/dist/cjs/test/unit/token2022Resolve.d.ts.map +1 -0
  182. package/dist/cjs/test/unit/token2022Resolve.js +252 -0
  183. package/dist/cjs/test/unit/tokenExtensions.d.ts +2 -0
  184. package/dist/cjs/test/unit/tokenExtensions.d.ts.map +1 -0
  185. package/dist/cjs/test/unit/tokenExtensions.js +73 -0
  186. package/dist/cjs/test/unit/transaction.d.ts.map +1 -0
  187. package/dist/cjs/test/unit/transaction.js +1129 -0
  188. package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +1 -0
  189. package/dist/cjs/test/unit/transactionBuilder/StakingWithdrawBuilder.js +202 -0
  190. package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +1 -0
  191. package/dist/cjs/test/unit/transactionBuilder/ataInitBuilder.js +508 -0
  192. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.d.ts +2 -0
  193. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.d.ts.map +1 -0
  194. package/dist/cjs/test/unit/transactionBuilder/closeAtaBuilder.js +343 -0
  195. package/dist/cjs/test/unit/transactionBuilder/computeUnitLimit.d.ts +2 -0
  196. package/dist/cjs/test/unit/transactionBuilder/computeUnitLimit.d.ts.map +1 -0
  197. package/dist/cjs/test/unit/transactionBuilder/computeUnitLimit.js +346 -0
  198. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.d.ts +2 -0
  199. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.d.ts.map +1 -0
  200. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferBuilder.js +909 -0
  201. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1.d.ts +2 -0
  202. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1.d.ts.map +1 -0
  203. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1.js +144 -0
  204. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1Ops.d.ts +2 -0
  205. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1Ops.d.ts.map +1 -0
  206. package/dist/cjs/test/unit/transactionBuilder/confidentialTransferV1Ops.js +167 -0
  207. package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +1 -0
  208. package/dist/cjs/test/unit/transactionBuilder/customInstructionBuilder.js +724 -0
  209. package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +1 -0
  210. package/dist/cjs/test/unit/transactionBuilder/stakingActivateBuilder.js +430 -0
  211. package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +1 -0
  212. package/dist/cjs/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +157 -0
  213. package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +1 -0
  214. package/dist/cjs/test/unit/transactionBuilder/stakingDeactivateBuilder.js +384 -0
  215. package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +1 -0
  216. package/dist/cjs/test/unit/transactionBuilder/stakingDelegateBuilder.js +224 -0
  217. package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
  218. package/dist/cjs/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +259 -0
  219. package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
  220. package/dist/cjs/test/unit/transactionBuilder/tokenTransferBuilder.js +926 -0
  221. package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
  222. package/dist/cjs/test/unit/transactionBuilder/transactionBuilder.js +495 -0
  223. package/dist/cjs/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  224. package/dist/cjs/test/unit/transactionBuilder/transferBuilder.js +302 -0
  225. package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +1 -0
  226. package/dist/cjs/test/unit/transactionBuilder/transferBuilderV2.js +910 -0
  227. package/dist/cjs/test/unit/transactionBuilder/v1PaymentBuilder.d.ts +2 -0
  228. package/dist/cjs/test/unit/transactionBuilder/v1PaymentBuilder.d.ts.map +1 -0
  229. package/dist/cjs/test/unit/transactionBuilder/v1PaymentBuilder.js +138 -0
  230. package/dist/cjs/test/unit/transactionBuilder/v1TransactionBuilder.d.ts +2 -0
  231. package/dist/cjs/test/unit/transactionBuilder/v1TransactionBuilder.d.ts.map +1 -0
  232. package/dist/cjs/test/unit/transactionBuilder/v1TransactionBuilder.js +331 -0
  233. package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +1 -0
  234. package/dist/cjs/test/unit/transactionBuilder/walletInitBuilder.js +259 -0
  235. package/dist/{test → cjs/test}/unit/utils.d.ts.map +1 -1
  236. package/dist/cjs/test/unit/utils.js +628 -0
  237. package/dist/cjs/test/unit/versionedTransaction.d.ts.map +1 -0
  238. package/dist/cjs/test/unit/versionedTransaction.js +207 -0
  239. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  240. package/dist/esm/bigint-buffer-guard.d.ts +1 -0
  241. package/dist/esm/index.d.ts +7 -0
  242. package/dist/esm/index.js +7 -0
  243. package/dist/esm/lib/ataInitializationBuilder.d.ts +58 -0
  244. package/dist/esm/lib/ataInitializationBuilder.d.ts.map +1 -0
  245. package/dist/esm/lib/ataInitializationBuilder.js +191 -0
  246. package/dist/esm/lib/closeAtaBuilder.d.ts +55 -0
  247. package/dist/esm/lib/closeAtaBuilder.d.ts.map +1 -0
  248. package/dist/esm/lib/closeAtaBuilder.js +155 -0
  249. package/dist/esm/lib/confidentialTransferBuilder.d.ts +128 -0
  250. package/dist/esm/lib/confidentialTransferBuilder.d.ts.map +1 -0
  251. package/dist/esm/lib/confidentialTransferBuilder.js +304 -0
  252. package/dist/esm/lib/constants.d.ts +234 -0
  253. package/dist/esm/lib/constants.d.ts.map +1 -0
  254. package/dist/esm/lib/constants.js +273 -0
  255. package/dist/esm/lib/customInstructionBuilder.d.ts +83 -0
  256. package/dist/{src → esm}/lib/customInstructionBuilder.d.ts.map +1 -1
  257. package/dist/esm/lib/customInstructionBuilder.js +385 -0
  258. package/dist/esm/lib/explainTransactionWasm.d.ts +21 -0
  259. package/dist/esm/lib/explainTransactionWasm.d.ts.map +1 -0
  260. package/dist/esm/lib/explainTransactionWasm.js +301 -0
  261. package/dist/esm/lib/iface.d.ts +526 -0
  262. package/dist/esm/lib/iface.d.ts.map +1 -0
  263. package/dist/esm/lib/iface.js +3 -0
  264. package/dist/esm/lib/index.d.ts +31 -0
  265. package/dist/esm/lib/index.d.ts.map +1 -0
  266. package/dist/esm/lib/index.js +31 -0
  267. package/dist/esm/lib/instructionParamsFactory.d.ts +14 -0
  268. package/dist/esm/lib/instructionParamsFactory.d.ts.map +1 -0
  269. package/dist/esm/lib/instructionParamsFactory.js +1272 -0
  270. package/dist/esm/lib/jitoStakePoolOperations.d.ts +113 -0
  271. package/dist/esm/lib/jitoStakePoolOperations.js +189 -0
  272. package/dist/esm/lib/keyPair.d.ts +32 -0
  273. package/dist/esm/lib/keyPair.d.ts.map +1 -0
  274. package/dist/esm/lib/keyPair.js +75 -0
  275. package/dist/esm/lib/messages/index.d.ts +2 -0
  276. package/dist/esm/lib/messages/index.js +2 -0
  277. package/dist/esm/lib/messages/messageBuilderFactory.d.ts +7 -0
  278. package/dist/{src → esm}/lib/messages/messageBuilderFactory.js +5 -9
  279. package/dist/esm/lib/recoverNestedAtaBuilder.d.ts +25 -0
  280. package/dist/esm/lib/recoverNestedAtaBuilder.d.ts.map +1 -0
  281. package/dist/esm/lib/recoverNestedAtaBuilder.js +83 -0
  282. package/dist/esm/lib/scaledUiAmount.d.ts +30 -0
  283. package/dist/esm/lib/scaledUiAmount.d.ts.map +1 -0
  284. package/dist/esm/lib/scaledUiAmount.js +108 -0
  285. package/dist/esm/lib/serialization/codecs/v1/config.d.ts +21 -0
  286. package/dist/esm/lib/serialization/codecs/v1/config.d.ts.map +1 -0
  287. package/dist/esm/lib/serialization/codecs/v1/config.js +30 -0
  288. package/dist/esm/lib/serialization/codecs/v1/instruction.d.ts +14 -0
  289. package/dist/esm/lib/serialization/codecs/v1/instruction.d.ts.map +1 -0
  290. package/dist/esm/lib/serialization/codecs/v1/instruction.js +29 -0
  291. package/dist/esm/lib/serialization/codecs/v1/message.d.ts +27 -0
  292. package/dist/esm/lib/serialization/codecs/v1/message.d.ts.map +1 -0
  293. package/dist/esm/lib/serialization/codecs/v1/message.js +188 -0
  294. package/dist/esm/lib/serialization/compileTransactionMessage.d.ts +36 -0
  295. package/dist/esm/lib/serialization/compileTransactionMessage.d.ts.map +1 -0
  296. package/dist/esm/lib/serialization/compileTransactionMessage.js +208 -0
  297. package/dist/esm/lib/serialization/index.d.ts +5 -0
  298. package/dist/esm/lib/serialization/index.d.ts.map +1 -0
  299. package/dist/esm/lib/serialization/index.js +5 -0
  300. package/dist/esm/lib/serialization/parseWireTransaction.d.ts +9 -0
  301. package/dist/esm/lib/serialization/parseWireTransaction.d.ts.map +1 -0
  302. package/dist/esm/lib/serialization/parseWireTransaction.js +50 -0
  303. package/dist/esm/lib/serialization/wire-transaction.d.ts +14 -0
  304. package/dist/esm/lib/serialization/wire-transaction.d.ts.map +1 -0
  305. package/dist/esm/lib/serialization/wire-transaction.js +48 -0
  306. package/dist/esm/lib/solInstructionFactory.d.ts +10 -0
  307. package/dist/esm/lib/solInstructionFactory.d.ts.map +1 -0
  308. package/dist/esm/lib/solInstructionFactory.js +1088 -0
  309. package/dist/esm/lib/stakingActivateBuilder.d.ts +59 -0
  310. package/dist/{src → esm}/lib/stakingActivateBuilder.d.ts.map +1 -1
  311. package/dist/esm/lib/stakingActivateBuilder.js +122 -0
  312. package/dist/esm/lib/stakingAuthorizeBuilder.d.ts +43 -0
  313. package/dist/esm/lib/stakingAuthorizeBuilder.js +82 -0
  314. package/dist/esm/lib/stakingDeactivateBuilder.d.ts +81 -0
  315. package/dist/{src → esm}/lib/stakingDeactivateBuilder.d.ts.map +1 -1
  316. package/dist/esm/lib/stakingDeactivateBuilder.js +207 -0
  317. package/dist/esm/lib/stakingDelegateBuilder.d.ts +42 -0
  318. package/dist/{src → esm}/lib/stakingDelegateBuilder.d.ts.map +1 -1
  319. package/dist/esm/lib/stakingDelegateBuilder.js +119 -0
  320. package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.d.ts +33 -0
  321. package/dist/esm/lib/stakingRawMsgAuthorizeBuilder.js +103 -0
  322. package/dist/esm/lib/stakingWithdrawBuilder.d.ts +31 -0
  323. package/dist/{src → esm}/lib/stakingWithdrawBuilder.d.ts.map +1 -1
  324. package/dist/esm/lib/stakingWithdrawBuilder.js +80 -0
  325. package/dist/esm/lib/token2022Resolve.d.ts +106 -0
  326. package/dist/esm/lib/token2022Resolve.d.ts.map +1 -0
  327. package/dist/esm/lib/token2022Resolve.js +194 -0
  328. package/dist/esm/lib/tokenExtensions.d.ts +26 -0
  329. package/dist/esm/lib/tokenExtensions.d.ts.map +1 -0
  330. package/dist/esm/lib/tokenExtensions.js +103 -0
  331. package/dist/esm/lib/tokenTransferBuilder.d.ts +67 -0
  332. package/dist/esm/lib/tokenTransferBuilder.d.ts.map +1 -0
  333. package/dist/esm/lib/tokenTransferBuilder.js +230 -0
  334. package/dist/esm/lib/transaction.d.ts +136 -0
  335. package/dist/esm/lib/transaction.d.ts.map +1 -0
  336. package/dist/esm/lib/transaction.js +697 -0
  337. package/dist/esm/lib/transactionBuilder.d.ts +169 -0
  338. package/dist/esm/lib/transactionBuilder.d.ts.map +1 -0
  339. package/dist/esm/lib/transactionBuilder.js +455 -0
  340. package/dist/esm/lib/transactionBuilderFactory.d.ts +152 -0
  341. package/dist/esm/lib/transactionBuilderFactory.d.ts.map +1 -0
  342. package/dist/esm/lib/transactionBuilderFactory.js +245 -0
  343. package/dist/esm/lib/transferBuilder.d.ts +26 -0
  344. package/dist/{src → esm}/lib/transferBuilder.d.ts.map +1 -1
  345. package/dist/esm/lib/transferBuilder.js +74 -0
  346. package/dist/esm/lib/transferBuilderV2.d.ts +69 -0
  347. package/dist/esm/lib/transferBuilderV2.d.ts.map +1 -0
  348. package/dist/esm/lib/transferBuilderV2.js +245 -0
  349. package/dist/esm/lib/utils.d.ts +205 -0
  350. package/dist/{src → esm}/lib/utils.d.ts.map +1 -1
  351. package/dist/esm/lib/utils.js +627 -0
  352. package/dist/esm/lib/v1CustomInstructionBuilder.d.ts +21 -0
  353. package/dist/esm/lib/v1CustomInstructionBuilder.d.ts.map +1 -0
  354. package/dist/esm/lib/v1CustomInstructionBuilder.js +24 -0
  355. package/dist/esm/lib/v1PaymentBuilder.d.ts +36 -0
  356. package/dist/esm/lib/v1PaymentBuilder.d.ts.map +1 -0
  357. package/dist/esm/lib/v1PaymentBuilder.js +63 -0
  358. package/dist/esm/lib/v1TransactionBuilder.d.ts +253 -0
  359. package/dist/esm/lib/v1TransactionBuilder.d.ts.map +1 -0
  360. package/dist/esm/lib/v1TransactionBuilder.js +591 -0
  361. package/dist/esm/lib/walletInitializationBuilder.d.ts +26 -0
  362. package/dist/esm/lib/walletInitializationBuilder.js +64 -0
  363. package/dist/esm/register.d.ts +5 -0
  364. package/dist/esm/register.d.ts.map +1 -0
  365. package/dist/esm/register.js +24 -0
  366. package/dist/esm/sol.d.ts +351 -0
  367. package/dist/esm/sol.d.ts.map +1 -0
  368. package/dist/esm/sol.js +1656 -0
  369. package/dist/esm/solToken.d.ts +44 -0
  370. package/dist/esm/solToken.d.ts.map +1 -0
  371. package/dist/esm/solToken.js +75 -0
  372. package/dist/esm/tsol.d.ts +11 -0
  373. package/dist/esm/tsol.js +20 -0
  374. package/package.json +37 -17
  375. package/dist/src/config/token2022StaticConfig.d.ts +0 -3
  376. package/dist/src/config/token2022StaticConfig.d.ts.map +0 -1
  377. package/dist/src/config/token2022StaticConfig.js +0 -50
  378. package/dist/src/lib/ataInitializationBuilder.d.ts.map +0 -1
  379. package/dist/src/lib/ataInitializationBuilder.js +0 -196
  380. package/dist/src/lib/closeAtaBuilder.d.ts +0 -19
  381. package/dist/src/lib/closeAtaBuilder.d.ts.map +0 -1
  382. package/dist/src/lib/closeAtaBuilder.js +0 -69
  383. package/dist/src/lib/constants.d.ts.map +0 -1
  384. package/dist/src/lib/constants.js +0 -171
  385. package/dist/src/lib/customInstructionBuilder.js +0 -289
  386. package/dist/src/lib/iface.d.ts +0 -244
  387. package/dist/src/lib/iface.d.ts.map +0 -1
  388. package/dist/src/lib/iface.js +0 -7
  389. package/dist/src/lib/index.d.ts.map +0 -1
  390. package/dist/src/lib/index.js +0 -77
  391. package/dist/src/lib/instructionParamsFactory.d.ts.map +0 -1
  392. package/dist/src/lib/instructionParamsFactory.js +0 -1036
  393. package/dist/src/lib/jitoStakePoolOperations.js +0 -200
  394. package/dist/src/lib/keyPair.d.ts.map +0 -1
  395. package/dist/src/lib/keyPair.js +0 -63
  396. package/dist/src/lib/solInstructionFactory.d.ts.map +0 -1
  397. package/dist/src/lib/solInstructionFactory.js +0 -572
  398. package/dist/src/lib/stakingActivateBuilder.js +0 -120
  399. package/dist/src/lib/stakingAuthorizeBuilder.js +0 -89
  400. package/dist/src/lib/stakingDeactivateBuilder.js +0 -208
  401. package/dist/src/lib/stakingDelegateBuilder.js +0 -120
  402. package/dist/src/lib/stakingRawMsgAuthorizeBuilder.js +0 -110
  403. package/dist/src/lib/stakingWithdrawBuilder.js +0 -78
  404. package/dist/src/lib/token2022Config.d.ts +0 -44
  405. package/dist/src/lib/token2022Config.d.ts.map +0 -1
  406. package/dist/src/lib/token2022Config.js +0 -27
  407. package/dist/src/lib/tokenTransferBuilder.d.ts.map +0 -1
  408. package/dist/src/lib/tokenTransferBuilder.js +0 -188
  409. package/dist/src/lib/transaction.d.ts.map +0 -1
  410. package/dist/src/lib/transaction.js +0 -595
  411. package/dist/src/lib/transactionBuilder.d.ts.map +0 -1
  412. package/dist/src/lib/transactionBuilder.js +0 -380
  413. package/dist/src/lib/transactionBuilderFactory.d.ts.map +0 -1
  414. package/dist/src/lib/transactionBuilderFactory.js +0 -202
  415. package/dist/src/lib/transferBuilder.js +0 -70
  416. package/dist/src/lib/transferBuilderV2.d.ts +0 -43
  417. package/dist/src/lib/transferBuilderV2.d.ts.map +0 -1
  418. package/dist/src/lib/transferBuilderV2.js +0 -210
  419. package/dist/src/lib/utils.js +0 -589
  420. package/dist/src/lib/walletInitializationBuilder.js +0 -71
  421. package/dist/src/register.d.ts +0 -3
  422. package/dist/src/register.d.ts.map +0 -1
  423. package/dist/src/register.js +0 -15
  424. package/dist/src/sol.d.ts.map +0 -1
  425. package/dist/src/sol.js +0 -1324
  426. package/dist/src/solToken.d.ts.map +0 -1
  427. package/dist/src/solToken.js +0 -69
  428. package/dist/src/tsol.js +0 -24
  429. package/dist/test/fixtures/sol.js +0 -1433
  430. package/dist/test/resources/sol.d.ts.map +0 -1
  431. package/dist/test/resources/sol.js +0 -320
  432. package/dist/test/unit/fixtures/solBackupKey.d.ts.map +0 -1
  433. package/dist/test/unit/fixtures/solBackupKey.js +0 -8
  434. package/dist/test/unit/getBuilderFactory.d.ts.map +0 -1
  435. package/dist/test/unit/getBuilderFactory.js +0 -10
  436. package/dist/test/unit/instructionParamsFactory.d.ts.map +0 -1
  437. package/dist/test/unit/instructionParamsFactory.js +0 -412
  438. package/dist/test/unit/instructionParamsFactory.staking.d.ts.map +0 -1
  439. package/dist/test/unit/instructionParamsFactory.staking.js +0 -1059
  440. package/dist/test/unit/keyPair.js +0 -177
  441. package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +0 -1
  442. package/dist/test/unit/messages/messageBuilderFactory.js +0 -118
  443. package/dist/test/unit/messages/simpleMessageBuilder.d.ts.map +0 -1
  444. package/dist/test/unit/messages/simpleMessageBuilder.js +0 -194
  445. package/dist/test/unit/sol.js +0 -3180
  446. package/dist/test/unit/solInstructionFactory.d.ts.map +0 -1
  447. package/dist/test/unit/solInstructionFactory.js +0 -454
  448. package/dist/test/unit/solToken.d.ts.map +0 -1
  449. package/dist/test/unit/solToken.js +0 -31
  450. package/dist/test/unit/transaction.d.ts.map +0 -1
  451. package/dist/test/unit/transaction.js +0 -983
  452. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +0 -1
  453. package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.js +0 -202
  454. package/dist/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +0 -1
  455. package/dist/test/unit/transactionBuilder/ataInitBuilder.js +0 -471
  456. package/dist/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +0 -1
  457. package/dist/test/unit/transactionBuilder/customInstructionBuilder.js +0 -413
  458. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +0 -1
  459. package/dist/test/unit/transactionBuilder/stakingActivateBuilder.js +0 -430
  460. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +0 -1
  461. package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +0 -157
  462. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +0 -1
  463. package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.js +0 -384
  464. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +0 -1
  465. package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.js +0 -224
  466. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -1
  467. package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +0 -259
  468. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +0 -1
  469. package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +0 -787
  470. package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +0 -1
  471. package/dist/test/unit/transactionBuilder/transactionBuilder.js +0 -495
  472. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +0 -1
  473. package/dist/test/unit/transactionBuilder/transferBuilder.js +0 -286
  474. package/dist/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +0 -1
  475. package/dist/test/unit/transactionBuilder/transferBuilderV2.js +0 -862
  476. package/dist/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +0 -1
  477. package/dist/test/unit/transactionBuilder/walletInitBuilder.js +0 -259
  478. package/dist/test/unit/utils.js +0 -517
  479. package/dist/test/unit/versionedTransaction.d.ts.map +0 -1
  480. package/dist/test/unit/versionedTransaction.js +0 -207
  481. package/dist/tsconfig.tsbuildinfo +0 -1
  482. /package/dist/{src → cjs/src}/bigint-buffer-guard.d.ts +0 -0
  483. /package/dist/{src → cjs/src}/index.d.ts +0 -0
  484. /package/dist/{src → cjs/src}/lib/jitoStakePoolOperations.d.ts +0 -0
  485. /package/dist/{src → cjs/src}/lib/messages/index.d.ts +0 -0
  486. /package/dist/{src → cjs/src}/lib/messages/messageBuilderFactory.d.ts +0 -0
  487. /package/dist/{src → cjs/src}/lib/stakingActivateBuilder.d.ts +0 -0
  488. /package/dist/{src → cjs/src}/lib/stakingAuthorizeBuilder.d.ts +0 -0
  489. /package/dist/{src → cjs/src}/lib/stakingDeactivateBuilder.d.ts +0 -0
  490. /package/dist/{src → cjs/src}/lib/stakingDelegateBuilder.d.ts +0 -0
  491. /package/dist/{src → cjs/src}/lib/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
  492. /package/dist/{src → cjs/src}/lib/stakingWithdrawBuilder.d.ts +0 -0
  493. /package/dist/{src → cjs/src}/lib/transferBuilder.d.ts +0 -0
  494. /package/dist/{src → cjs/src}/lib/walletInitializationBuilder.d.ts +0 -0
  495. /package/dist/{src → cjs/src}/tsol.d.ts +0 -0
  496. /package/dist/{test → cjs/test}/fixtures/sol.d.ts +0 -0
  497. /package/dist/{test → cjs/test}/unit/fixtures/solBackupKey.d.ts +0 -0
  498. /package/dist/{test → cjs/test}/unit/getBuilderFactory.d.ts +0 -0
  499. /package/dist/{test → cjs/test}/unit/instructionParamsFactory.d.ts +0 -0
  500. /package/dist/{test → cjs/test}/unit/instructionParamsFactory.staking.d.ts +0 -0
  501. /package/dist/{test → cjs/test}/unit/keyPair.d.ts +0 -0
  502. /package/dist/{test → cjs/test}/unit/messages/messageBuilderFactory.d.ts +0 -0
  503. /package/dist/{test → cjs/test}/unit/messages/simpleMessageBuilder.d.ts +0 -0
  504. /package/dist/{test → cjs/test}/unit/sol.d.ts +0 -0
  505. /package/dist/{test → cjs/test}/unit/solInstructionFactory.d.ts +0 -0
  506. /package/dist/{test → cjs/test}/unit/solToken.d.ts +0 -0
  507. /package/dist/{test → cjs/test}/unit/transaction.d.ts +0 -0
  508. /package/dist/{test → cjs/test}/unit/transactionBuilder/StakingWithdrawBuilder.d.ts +0 -0
  509. /package/dist/{test → cjs/test}/unit/transactionBuilder/ataInitBuilder.d.ts +0 -0
  510. /package/dist/{test → cjs/test}/unit/transactionBuilder/customInstructionBuilder.d.ts +0 -0
  511. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingActivateBuilder.d.ts +0 -0
  512. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts +0 -0
  513. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDeactivateBuilder.d.ts +0 -0
  514. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingDelegateBuilder.d.ts +0 -0
  515. /package/dist/{test → cjs/test}/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts +0 -0
  516. /package/dist/{test → cjs/test}/unit/transactionBuilder/tokenTransferBuilder.d.ts +0 -0
  517. /package/dist/{test → cjs/test}/unit/transactionBuilder/transactionBuilder.d.ts +0 -0
  518. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilder.d.ts +0 -0
  519. /package/dist/{test → cjs/test}/unit/transactionBuilder/transferBuilderV2.d.ts +0 -0
  520. /package/dist/{test → cjs/test}/unit/transactionBuilder/walletInitBuilder.d.ts +0 -0
  521. /package/dist/{test → cjs/test}/unit/utils.d.ts +0 -0
  522. /package/dist/{test → cjs/test}/unit/versionedTransaction.d.ts +0 -0
  523. /package/dist/{src → esm}/bigint-buffer-guard.d.ts.map +0 -0
  524. /package/dist/{src → esm}/bigint-buffer-guard.js +0 -0
  525. /package/dist/{src → esm}/index.d.ts.map +0 -0
  526. /package/dist/{src → esm}/lib/jitoStakePoolOperations.d.ts.map +0 -0
  527. /package/dist/{src → esm}/lib/messages/index.d.ts.map +0 -0
  528. /package/dist/{src → esm}/lib/messages/messageBuilderFactory.d.ts.map +0 -0
  529. /package/dist/{src → esm}/lib/stakingAuthorizeBuilder.d.ts.map +0 -0
  530. /package/dist/{src → esm}/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +0 -0
  531. /package/dist/{src → esm}/lib/walletInitializationBuilder.d.ts.map +0 -0
  532. /package/dist/{src → esm}/tsol.d.ts.map +0 -0
@@ -0,0 +1,199 @@
1
+ "use strict";
2
+ /**
3
+ * @prettier
4
+ *
5
+ * Reusable Token-2022 resolution logic (Transfer Hook extra accounts and sRFC-37
6
+ * Token ACL permissionless thaw), decoupled from the `Sol` coin class so any caller
7
+ * with its own account-fetcher (e.g. wallet-platform reading chain state via IMS RPC)
8
+ * can resolve these dependencies offline of the SDK's node transport.
9
+ *
10
+ * The resolution functions take a `Connection` (only `getAccountInfo` is required);
11
+ * {@link buildSolAccountConnection} adapts a plain {@link SolAccountFetcher} into the
12
+ * shape `@solana/spl-token`'s transfer-hook helpers expect.
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.buildSolAccountConnection = buildSolAccountConnection;
16
+ exports.resolveTransferHookAccounts = resolveTransferHookAccounts;
17
+ exports.resolvePermissionlessThaw = resolvePermissionlessThaw;
18
+ const spl_token_1 = require("@solana/spl-token");
19
+ const web3_js_1 = require("@solana/web3.js");
20
+ const constants_1 = require("./constants");
21
+ /**
22
+ * Build a minimal `Connection`-like shim backed by a {@link SolAccountFetcher}.
23
+ *
24
+ * `@solana/spl-token`'s transfer-hook resolution helpers only require
25
+ * `getAccountInfo(publicKey)` returning an `AccountInfo<Buffer>`. This adapts a
26
+ * plain address-based fetcher to that shape so any transport can drive the
27
+ * resolution below without opening a dedicated RPC connection.
28
+ *
29
+ * @param {SolAccountFetcher} fetch - fetcher returning decoded account info by address
30
+ * @returns {Connection} a shim exposing `getAccountInfo`, cast to `Connection`
31
+ */
32
+ function buildSolAccountConnection(fetch) {
33
+ const getAccountInfo = async (publicKey, _commitmentOrConfig) => {
34
+ return fetch(publicKey.toBase58());
35
+ };
36
+ return { getAccountInfo };
37
+ }
38
+ /**
39
+ * Map the extra keys appended to a resolved transfer instruction into the
40
+ * serializable {@link ExtraAccountMeta} shape.
41
+ */
42
+ function toExtraAccountMetas(instruction, baseKeyCount) {
43
+ return instruction.keys.slice(baseKeyCount).map((meta) => ({
44
+ pubkey: meta.pubkey.toBase58(),
45
+ isSigner: meta.isSigner,
46
+ isWritable: meta.isWritable,
47
+ }));
48
+ }
49
+ /**
50
+ * Decode the fields of a Token ACL MintConfig account we depend on.
51
+ *
52
+ * Layout: `u8 discriminator, u8 bump, bool enablePermissionlessThaw, bool enablePermissionlessFreeze,
53
+ * pubkey mint(32), pubkey freezeAuthority(32), pubkey gatingProgram(32)`.
54
+ */
55
+ function decodeTokenAclMintConfig(data) {
56
+ const enablePermissionlessThaw = data[2] === 1;
57
+ const gatingProgram = new web3_js_1.PublicKey(data.subarray(68, 100));
58
+ return { enablePermissionlessThaw, gatingProgram };
59
+ }
60
+ /**
61
+ * Resolve the gating program's thaw ExtraAccountMetaList onto a can-thaw context.
62
+ *
63
+ * Mirrors the reference `resolveExtraMetas`: fetch the extra-metas account, unpack its
64
+ * ExtraAccountMeta entries, then resolve each one (fixed address, PDA, or account-data derived)
65
+ * against the accumulating metas using the spl-token transfer-hook helpers. When the extra-metas
66
+ * account does not exist, there are no extras to append.
67
+ */
68
+ async function resolveTokenAclExtraMetas(connection, extraMetasAddress, previousMetas, gatingProgram) {
69
+ const instructionData = Buffer.from([constants_1.THAW_PERMISSIONLESS_IDEMPOTENT_DISCRIMINATOR]);
70
+ const resolvedMetas = [...previousMetas];
71
+ const extraMetasAccount = await connection.getAccountInfo(extraMetasAddress);
72
+ if (!extraMetasAccount) {
73
+ return resolvedMetas;
74
+ }
75
+ const extraAccountMetas = (0, spl_token_1.getExtraAccountMetas)(extraMetasAccount);
76
+ for (const extraAccountMeta of extraAccountMetas) {
77
+ const resolvedMeta = await (0, spl_token_1.resolveExtraAccountMeta)(connection, extraAccountMeta, resolvedMetas, instructionData, gatingProgram);
78
+ resolvedMetas.push(resolvedMeta);
79
+ }
80
+ return resolvedMetas;
81
+ }
82
+ /**
83
+ * Resolve the Token-2022 Transfer Hook extra accounts for a specific transfer.
84
+ *
85
+ * This is generic: it works for any Token-2022 mint by reading the mint's
86
+ * TransferHook extension and the hook program's ExtraAccountMetaList live from
87
+ * the node, then resolving each extra account (including seed-derived PDAs) via
88
+ * the standard `spl-transfer-hook-interface` helpers. The returned metas are in
89
+ * the exact order the hook requires and are suitable for
90
+ * `TokenTransfer.params.transferHookAccounts`.
91
+ *
92
+ * When the mint has no Transfer Hook, this returns an empty array and callers can
93
+ * omit the param.
94
+ *
95
+ * @param {Connection} connection - a `Connection` (or shim) exposing `getAccountInfo`
96
+ * @param params - the transfer parameters
97
+ * @param {string} params.mint - the Token-2022 mint address
98
+ * @param {string} params.source - the source token account (sender ATA)
99
+ * @param {string} params.destination - the destination token account (recipient ATA)
100
+ * @param {string} params.owner - the source account owner / transfer authority
101
+ * @param {string} params.amount - the raw transfer amount in base units
102
+ * @returns {Promise<ExtraAccountMeta[]>} ordered extra account metas, or [] when no hook
103
+ */
104
+ async function resolveTransferHookAccounts(connection, params) {
105
+ const { mint, source, destination, owner, amount } = params;
106
+ const mintPubkey = new web3_js_1.PublicKey(mint);
107
+ // Read the mint and detect whether a Transfer Hook extension is configured.
108
+ const mintAccountInfo = await connection.getAccountInfo(mintPubkey);
109
+ if (!mintAccountInfo) {
110
+ return [];
111
+ }
112
+ const mintState = (0, spl_token_1.unpackMint)(mintPubkey, mintAccountInfo, spl_token_1.TOKEN_2022_PROGRAM_ID);
113
+ const transferHook = (0, spl_token_1.getTransferHook)(mintState);
114
+ if (!transferHook || transferHook.programId.equals(web3_js_1.PublicKey.default)) {
115
+ return [];
116
+ }
117
+ const sourcePubkey = new web3_js_1.PublicKey(source);
118
+ const destinationPubkey = new web3_js_1.PublicKey(destination);
119
+ const ownerPubkey = new web3_js_1.PublicKey(owner);
120
+ const transferAmount = BigInt(amount);
121
+ // Start from a base transferChecked instruction; addExtraAccountMetasForExecute
122
+ // appends the resolved extra accounts, the hook program, and the validation
123
+ // state account in the required order.
124
+ const instruction = (0, spl_token_1.createTransferCheckedInstruction)(sourcePubkey, mintPubkey, destinationPubkey, ownerPubkey, transferAmount, mintState.decimals, [], spl_token_1.TOKEN_2022_PROGRAM_ID);
125
+ const baseKeyCount = instruction.keys.length;
126
+ await (0, spl_token_1.addExtraAccountMetasForExecute)(connection, instruction, transferHook.programId, sourcePubkey, mintPubkey, destinationPubkey, ownerPubkey, transferAmount);
127
+ return toExtraAccountMetas(instruction, baseKeyCount);
128
+ }
129
+ /**
130
+ * Resolve the sRFC-37 Token ACL permissionless-thaw dependencies for a token account.
131
+ *
132
+ * This is generic: it works for ANY allowlist/blocklist (DefaultAccountState) Token-2022 mint
133
+ * gated by the Token ACL program — no issuer is hardcoded. It reads the mint's MintConfig PDA
134
+ * live from the node, and only when permissionless thaw is enabled does it derive the flag /
135
+ * mint-config / thaw-extra-metas PDAs and resolve the gating program's extra account metas (in
136
+ * the exact order the gating program requires, mirroring `resolveExtraMetas`).
137
+ *
138
+ * When the mint is not a Token ACL mint, or permissionless thaw is disabled, this returns
139
+ * `{ applicable: false }` and callers skip the thaw.
140
+ *
141
+ * @param {Connection} connection - a `Connection` (or shim) exposing `getAccountInfo`
142
+ * @param params - the thaw parameters
143
+ * @param {string} params.mint - the Token-2022 mint address
144
+ * @param {string} params.tokenAccount - the token account (ATA) to thaw
145
+ * @param {string} params.tokenAccountOwner - the owner of the token account
146
+ * @param {string} params.authority - the signer invoking the thaw (fee payer / authority)
147
+ * @returns {Promise<ResolvePermissionlessThawResult>} the resolved thaw params, or `{ applicable: false }`
148
+ */
149
+ async function resolvePermissionlessThaw(connection, params) {
150
+ const { mint, tokenAccount, tokenAccountOwner, authority } = params;
151
+ const mintPubkey = new web3_js_1.PublicKey(mint);
152
+ const tokenAccountPubkey = new web3_js_1.PublicKey(tokenAccount);
153
+ const tokenAccountOwnerPubkey = new web3_js_1.PublicKey(tokenAccountOwner);
154
+ const authorityPubkey = new web3_js_1.PublicKey(authority);
155
+ const tokenAclProgramId = new web3_js_1.PublicKey(constants_1.TOKEN_ACL_PROGRAM_ID);
156
+ // 1. Read the mint's MintConfig PDA. Absent => the mint is not a Token ACL mint.
157
+ const [mintConfigPda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(constants_1.TOKEN_ACL_MINT_CONFIG_SEED), mintPubkey.toBuffer()], tokenAclProgramId);
158
+ const mintConfigAccount = await connection.getAccountInfo(mintConfigPda);
159
+ if (!mintConfigAccount) {
160
+ return { applicable: false };
161
+ }
162
+ // 2. Decode the MintConfig; permissionless thaw must be enabled.
163
+ const mintConfig = decodeTokenAclMintConfig(mintConfigAccount.data);
164
+ if (!mintConfig.enablePermissionlessThaw) {
165
+ return { applicable: false };
166
+ }
167
+ const gatingProgramPubkey = mintConfig.gatingProgram;
168
+ // 3. Derive the remaining PDAs (flag account under Token ACL, thaw extra metas under gating).
169
+ const [flagAccountPda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(constants_1.TOKEN_ACL_FLAG_ACCOUNT_SEED), tokenAccountPubkey.toBuffer()], tokenAclProgramId);
170
+ const [thawExtraMetasPda] = web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(constants_1.TOKEN_ACL_THAW_EXTRA_METAS_SEED), mintPubkey.toBuffer()], gatingProgramPubkey);
171
+ // 4. Build the 6-account can-thaw context (all readonly), then resolve the gating program's
172
+ // extra account metas onto it.
173
+ const canThawContext = [
174
+ { pubkey: authorityPubkey, isSigner: false, isWritable: false },
175
+ { pubkey: tokenAccountPubkey, isSigner: false, isWritable: false },
176
+ { pubkey: mintPubkey, isSigner: false, isWritable: false },
177
+ { pubkey: tokenAccountOwnerPubkey, isSigner: false, isWritable: false },
178
+ { pubkey: flagAccountPda, isSigner: false, isWritable: false },
179
+ { pubkey: thawExtraMetasPda, isSigner: false, isWritable: false },
180
+ ];
181
+ const resolvedMetas = await resolveTokenAclExtraMetas(connection, thawExtraMetasPda, canThawContext, gatingProgramPubkey);
182
+ // 5. Drop the first five context accounts; the remainder ([thawExtraMetas, ...extras]) are the
183
+ // accounts appended after the thaw instruction's fixed nine.
184
+ const extraAccounts = resolvedMetas.slice(5).map((meta) => ({
185
+ pubkey: meta.pubkey.toBase58(),
186
+ isSigner: meta.isSigner,
187
+ isWritable: meta.isWritable,
188
+ }));
189
+ return {
190
+ applicable: true,
191
+ gatingProgram: gatingProgramPubkey.toBase58(),
192
+ flagAccount: flagAccountPda.toBase58(),
193
+ mintConfig: mintConfigPda.toBase58(),
194
+ tokenProgram: spl_token_1.TOKEN_2022_PROGRAM_ID.toBase58(),
195
+ systemProgram: web3_js_1.SystemProgram.programId.toBase58(),
196
+ extraAccounts,
197
+ };
198
+ }
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4yMDIyUmVzb2x2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdG9rZW4yMDIyUmVzb2x2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7O0FBbUVILDhEQVFDO0FBa0ZELGtFQWlEQztBQXNCRCw4REF3RUM7QUExU0QsaURBUTJCO0FBQzNCLDZDQVF5QjtBQUV6QiwyQ0FNcUI7QUE2QnJCOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFnQix5QkFBeUIsQ0FBQyxLQUF3QjtJQUNoRSxNQUFNLGNBQWMsR0FBRyxLQUFLLEVBQzFCLFNBQXVCLEVBQ3ZCLG1CQUFnQyxFQUNLLEVBQUU7UUFDdkMsT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDckMsQ0FBQyxDQUFDO0lBQ0YsT0FBTyxFQUFFLGNBQWMsRUFBMkIsQ0FBQztBQUNyRCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxtQkFBbUIsQ0FBQyxXQUFtQyxFQUFFLFlBQW9CO0lBQ3BGLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtRQUM5QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7UUFDdkIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO0tBQzVCLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyx3QkFBd0IsQ0FBQyxJQUFZO0lBQzVDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQyxNQUFNLGFBQWEsR0FBRyxJQUFJLG1CQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsYUFBYSxFQUFFLENBQUM7QUFDckQsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxLQUFLLFVBQVUseUJBQXlCLENBQ3RDLFVBQXNCLEVBQ3RCLGlCQUErQixFQUMvQixhQUE0QixFQUM1QixhQUEyQjtJQUUzQixNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsd0RBQTRDLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLE1BQU0sYUFBYSxHQUFrQixDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUM7SUFDeEQsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLFVBQVUsQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUM3RSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN2QixPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBQ0QsTUFBTSxpQkFBaUIsR0FBRyxJQUFBLGdDQUFvQixFQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDbEUsS0FBSyxNQUFNLGdCQUFnQixJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDakQsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFBLG1DQUF1QixFQUNoRCxVQUFVLEVBQ1YsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYixlQUFlLEVBQ2YsYUFBYSxDQUNkLENBQUM7UUFDRixhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFDRCxPQUFPLGFBQWEsQ0FBQztBQUN2QixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNJLEtBQUssVUFBVSwyQkFBMkIsQ0FDL0MsVUFBc0IsRUFDdEIsTUFBNEY7SUFFNUYsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUM7SUFDNUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxtQkFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRTFDLDRFQUE0RTtJQUM1RSxNQUFNLGVBQWUsR0FBRyxNQUFNLFVBQVUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUNELE1BQU0sU0FBUyxHQUFHLElBQUEsc0JBQVUsRUFBQyxVQUFVLEVBQUUsZUFBZSxFQUFFLGlDQUFxQixDQUFDLENBQUM7SUFDakYsTUFBTSxZQUFZLEdBQUcsSUFBQSwyQkFBZSxFQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hELElBQUksQ0FBQyxZQUFZLElBQUksWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsbUJBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ3pFLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLElBQUksbUJBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QyxNQUFNLGlCQUFpQixHQUFHLElBQUksbUJBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN4RCxNQUFNLFdBQVcsR0FBRyxJQUFJLG1CQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXRDLGdGQUFnRjtJQUNoRiw0RUFBNEU7SUFDNUUsdUNBQXVDO0lBQ3ZDLE1BQU0sV0FBVyxHQUFHLElBQUEsNENBQWdDLEVBQ2xELFlBQVksRUFDWixVQUFVLEVBQ1YsaUJBQWlCLEVBQ2pCLFdBQVcsRUFDWCxjQUFjLEVBQ2QsU0FBUyxDQUFDLFFBQVEsRUFDbEIsRUFBRSxFQUNGLGlDQUFxQixDQUN0QixDQUFDO0lBQ0YsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDN0MsTUFBTSxJQUFBLDBDQUE4QixFQUNsQyxVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksQ0FBQyxTQUFTLEVBQ3RCLFlBQVksRUFDWixVQUFVLEVBQ1YsaUJBQWlCLEVBQ2pCLFdBQVcsRUFDWCxjQUFjLENBQ2YsQ0FBQztJQUVGLE9BQU8sbUJBQW1CLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNJLEtBQUssVUFBVSx5QkFBeUIsQ0FDN0MsVUFBc0IsRUFDdEIsTUFBNEY7SUFFNUYsTUFBTSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxDQUFDO0lBQ3BFLE1BQU0sVUFBVSxHQUFHLElBQUksbUJBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxNQUFNLGtCQUFrQixHQUFHLElBQUksbUJBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMxRCxNQUFNLHVCQUF1QixHQUFHLElBQUksbUJBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sZUFBZSxHQUFHLElBQUksbUJBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwRCxNQUFNLGlCQUFpQixHQUFHLElBQUksbUJBQVksQ0FBQyxnQ0FBb0IsQ0FBQyxDQUFDO0lBRWpFLGlGQUFpRjtJQUNqRixNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsbUJBQVksQ0FBQyxzQkFBc0IsQ0FDekQsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHNDQUEwQixDQUFDLEVBQUUsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQ2hFLGlCQUFpQixDQUNsQixDQUFDO0lBQ0YsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLFVBQVUsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDekUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDdkIsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsaUVBQWlFO0lBQ2pFLE1BQU0sVUFBVSxHQUFHLHdCQUF3QixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BFLElBQUksQ0FBQyxVQUFVLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFDRCxNQUFNLG1CQUFtQixHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUM7SUFFckQsOEZBQThGO0lBQzlGLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxtQkFBWSxDQUFDLHNCQUFzQixDQUMxRCxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUNBQTJCLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUN6RSxpQkFBaUIsQ0FDbEIsQ0FBQztJQUNGLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLG1CQUFZLENBQUMsc0JBQXNCLENBQzdELENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQywyQ0FBK0IsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUNyRSxtQkFBbUIsQ0FDcEIsQ0FBQztJQUVGLDRGQUE0RjtJQUM1RixrQ0FBa0M7SUFDbEMsTUFBTSxjQUFjLEdBQWtCO1FBQ3BDLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUU7UUFDL0QsRUFBRSxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFO1FBQ2xFLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUU7UUFDMUQsRUFBRSxNQUFNLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFO1FBQ3ZFLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUU7UUFDOUQsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFO0tBQ2xFLENBQUM7SUFDRixNQUFNLGFBQWEsR0FBRyxNQUFNLHlCQUF5QixDQUNuRCxVQUFVLEVBQ1YsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxtQkFBbUIsQ0FDcEIsQ0FBQztJQUVGLCtGQUErRjtJQUMvRixnRUFBZ0U7SUFDaEUsTUFBTSxhQUFhLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDMUQsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFO1FBQzlCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtRQUN2QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7S0FDNUIsQ0FBQyxDQUFDLENBQUM7SUFFSixPQUFPO1FBQ0wsVUFBVSxFQUFFLElBQUk7UUFDaEIsYUFBYSxFQUFFLG1CQUFtQixDQUFDLFFBQVEsRUFBRTtRQUM3QyxXQUFXLEVBQUUsY0FBYyxDQUFDLFFBQVEsRUFBRTtRQUN0QyxVQUFVLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRTtRQUNwQyxZQUFZLEVBQUUsaUNBQXFCLENBQUMsUUFBUSxFQUFFO1FBQzlDLGFBQWEsRUFBRSx1QkFBYSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUU7UUFDakQsYUFBYTtLQUNkLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqXG4gKiBSZXVzYWJsZSBUb2tlbi0yMDIyIHJlc29sdXRpb24gbG9naWMgKFRyYW5zZmVyIEhvb2sgZXh0cmEgYWNjb3VudHMgYW5kIHNSRkMtMzdcbiAqIFRva2VuIEFDTCBwZXJtaXNzaW9ubGVzcyB0aGF3KSwgZGVjb3VwbGVkIGZyb20gdGhlIGBTb2xgIGNvaW4gY2xhc3Mgc28gYW55IGNhbGxlclxuICogd2l0aCBpdHMgb3duIGFjY291bnQtZmV0Y2hlciAoZS5nLiB3YWxsZXQtcGxhdGZvcm0gcmVhZGluZyBjaGFpbiBzdGF0ZSB2aWEgSU1TIFJQQylcbiAqIGNhbiByZXNvbHZlIHRoZXNlIGRlcGVuZGVuY2llcyBvZmZsaW5lIG9mIHRoZSBTREsncyBub2RlIHRyYW5zcG9ydC5cbiAqXG4gKiBUaGUgcmVzb2x1dGlvbiBmdW5jdGlvbnMgdGFrZSBhIGBDb25uZWN0aW9uYCAob25seSBgZ2V0QWNjb3VudEluZm9gIGlzIHJlcXVpcmVkKTtcbiAqIHtAbGluayBidWlsZFNvbEFjY291bnRDb25uZWN0aW9ufSBhZGFwdHMgYSBwbGFpbiB7QGxpbmsgU29sQWNjb3VudEZldGNoZXJ9IGludG8gdGhlXG4gKiBzaGFwZSBgQHNvbGFuYS9zcGwtdG9rZW5gJ3MgdHJhbnNmZXItaG9vayBoZWxwZXJzIGV4cGVjdC5cbiAqL1xuXG5pbXBvcnQge1xuICBUT0tFTl8yMDIyX1BST0dSQU1fSUQsXG4gIGFkZEV4dHJhQWNjb3VudE1ldGFzRm9yRXhlY3V0ZSxcbiAgY3JlYXRlVHJhbnNmZXJDaGVja2VkSW5zdHJ1Y3Rpb24sXG4gIGdldEV4dHJhQWNjb3VudE1ldGFzLFxuICBnZXRUcmFuc2Zlckhvb2ssXG4gIHJlc29sdmVFeHRyYUFjY291bnRNZXRhLFxuICB1bnBhY2tNaW50LFxufSBmcm9tICdAc29sYW5hL3NwbC10b2tlbic7XG5pbXBvcnQge1xuICBBY2NvdW50SW5mbyxcbiAgQWNjb3VudE1ldGEsXG4gIENvbW1pdG1lbnQsXG4gIENvbm5lY3Rpb24sXG4gIFB1YmxpY0tleSBhcyBTb2xQdWJsaWNLZXksXG4gIFN5c3RlbVByb2dyYW0sXG4gIFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb24sXG59IGZyb20gJ0Bzb2xhbmEvd2ViMy5qcyc7XG5cbmltcG9ydCB7XG4gIFRIQVdfUEVSTUlTU0lPTkxFU1NfSURFTVBPVEVOVF9ESVNDUklNSU5BVE9SLFxuICBUT0tFTl9BQ0xfRkxBR19BQ0NPVU5UX1NFRUQsXG4gIFRPS0VOX0FDTF9NSU5UX0NPTkZJR19TRUVELFxuICBUT0tFTl9BQ0xfUFJPR1JBTV9JRCxcbiAgVE9LRU5fQUNMX1RIQVdfRVhUUkFfTUVUQVNfU0VFRCxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgRXh0cmFBY2NvdW50TWV0YSB9IGZyb20gJy4vaWZhY2UnO1xuXG4vKipcbiAqIEEgbWluaW1hbCBhY2NvdW50LWZldGNoZXI6IGdpdmVuIGEgYmFzZTU4IGFkZHJlc3MsIHJldHVybiBpdHMgb24tY2hhaW5cbiAqIHtAbGluayBBY2NvdW50SW5mb30gKHdpdGggYGRhdGFgIGFscmVhZHkgZGVjb2RlZCBpbnRvIGEgYEJ1ZmZlcmApIG9yIGBudWxsYFxuICogd2hlbiB0aGUgYWNjb3VudCBkb2VzIG5vdCBleGlzdC4gQ2FsbGVycyBzdXBwbHkgdGhlaXIgb3duIHRyYW5zcG9ydCAoU0RLIG5vZGVcbiAqIHJlcXVlc3QsIHdhbGxldC1wbGF0Zm9ybSBJTVMgUlBDLCBhIGZ1bGwgYENvbm5lY3Rpb25gLCBldGMuKS5cbiAqL1xuZXhwb3J0IHR5cGUgU29sQWNjb3VudEZldGNoZXIgPSAoYWRkcmVzczogc3RyaW5nKSA9PiBQcm9taXNlPEFjY291bnRJbmZvPEJ1ZmZlcj4gfCBudWxsPjtcblxuLyoqXG4gKiBSZXN1bHQgb2YgcmVzb2x2aW5nIHRoZSBzUkZDLTM3IFRva2VuIEFDTCBwZXJtaXNzaW9ubGVzcyB0aGF3IGZvciBhIG1pbnQgLyB0b2tlbiBhY2NvdW50LlxuICpcbiAqIFdoZW4gYGFwcGxpY2FibGVgIGlzIGZhbHNlICh0aGUgbWludCBoYXMgbm8gVG9rZW4gQUNMIE1pbnRDb25maWcsIG9yIHBlcm1pc3Npb25sZXNzIHRoYXcgaXNcbiAqIGRpc2FibGVkKSBhbGwgb3RoZXIgZmllbGRzIGFyZSBvbWl0dGVkIGFuZCB0aGUgY2FsbGVyIHNob3VsZCBub3QgZW1pdCBhIHRoYXcgaW5zdHJ1Y3Rpb24uXG4gKiBXaGVuIGBhcHBsaWNhYmxlYCBpcyB0cnVlLCB0aGUgZmllbGRzIGFyZSByZWFkeSB0byB0aHJlYWQgaW50byB0aGUgdG9rZW4tdHJhbnNmZXIgYnVpbGRlciB2aWFcbiAqIGBwZXJtaXNzaW9ubGVzc1RoYXcoLi4uKWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZVBlcm1pc3Npb25sZXNzVGhhd1Jlc3VsdCB7XG4gIGFwcGxpY2FibGU6IGJvb2xlYW47XG4gIGdhdGluZ1Byb2dyYW0/OiBzdHJpbmc7XG4gIGZsYWdBY2NvdW50Pzogc3RyaW5nO1xuICBtaW50Q29uZmlnPzogc3RyaW5nO1xuICB0b2tlblByb2dyYW0/OiBzdHJpbmc7XG4gIHN5c3RlbVByb2dyYW0/OiBzdHJpbmc7XG4gIGV4dHJhQWNjb3VudHM/OiBFeHRyYUFjY291bnRNZXRhW107XG59XG5cbi8qKlxuICogQnVpbGQgYSBtaW5pbWFsIGBDb25uZWN0aW9uYC1saWtlIHNoaW0gYmFja2VkIGJ5IGEge0BsaW5rIFNvbEFjY291bnRGZXRjaGVyfS5cbiAqXG4gKiBgQHNvbGFuYS9zcGwtdG9rZW5gJ3MgdHJhbnNmZXItaG9vayByZXNvbHV0aW9uIGhlbHBlcnMgb25seSByZXF1aXJlXG4gKiBgZ2V0QWNjb3VudEluZm8ocHVibGljS2V5KWAgcmV0dXJuaW5nIGFuIGBBY2NvdW50SW5mbzxCdWZmZXI+YC4gVGhpcyBhZGFwdHMgYVxuICogcGxhaW4gYWRkcmVzcy1iYXNlZCBmZXRjaGVyIHRvIHRoYXQgc2hhcGUgc28gYW55IHRyYW5zcG9ydCBjYW4gZHJpdmUgdGhlXG4gKiByZXNvbHV0aW9uIGJlbG93IHdpdGhvdXQgb3BlbmluZyBhIGRlZGljYXRlZCBSUEMgY29ubmVjdGlvbi5cbiAqXG4gKiBAcGFyYW0ge1NvbEFjY291bnRGZXRjaGVyfSBmZXRjaCAtIGZldGNoZXIgcmV0dXJuaW5nIGRlY29kZWQgYWNjb3VudCBpbmZvIGJ5IGFkZHJlc3NcbiAqIEByZXR1cm5zIHtDb25uZWN0aW9ufSBhIHNoaW0gZXhwb3NpbmcgYGdldEFjY291bnRJbmZvYCwgY2FzdCB0byBgQ29ubmVjdGlvbmBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU29sQWNjb3VudENvbm5lY3Rpb24oZmV0Y2g6IFNvbEFjY291bnRGZXRjaGVyKTogQ29ubmVjdGlvbiB7XG4gIGNvbnN0IGdldEFjY291bnRJbmZvID0gYXN5bmMgKFxuICAgIHB1YmxpY0tleTogU29sUHVibGljS2V5LFxuICAgIF9jb21taXRtZW50T3JDb25maWc/OiBDb21taXRtZW50XG4gICk6IFByb21pc2U8QWNjb3VudEluZm88QnVmZmVyPiB8IG51bGw+ID0+IHtcbiAgICByZXR1cm4gZmV0Y2gocHVibGljS2V5LnRvQmFzZTU4KCkpO1xuICB9O1xuICByZXR1cm4geyBnZXRBY2NvdW50SW5mbyB9IGFzIHVua25vd24gYXMgQ29ubmVjdGlvbjtcbn1cblxuLyoqXG4gKiBNYXAgdGhlIGV4dHJhIGtleXMgYXBwZW5kZWQgdG8gYSByZXNvbHZlZCB0cmFuc2ZlciBpbnN0cnVjdGlvbiBpbnRvIHRoZVxuICogc2VyaWFsaXphYmxlIHtAbGluayBFeHRyYUFjY291bnRNZXRhfSBzaGFwZS5cbiAqL1xuZnVuY3Rpb24gdG9FeHRyYUFjY291bnRNZXRhcyhpbnN0cnVjdGlvbjogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbiwgYmFzZUtleUNvdW50OiBudW1iZXIpOiBFeHRyYUFjY291bnRNZXRhW10ge1xuICByZXR1cm4gaW5zdHJ1Y3Rpb24ua2V5cy5zbGljZShiYXNlS2V5Q291bnQpLm1hcCgobWV0YSkgPT4gKHtcbiAgICBwdWJrZXk6IG1ldGEucHVia2V5LnRvQmFzZTU4KCksXG4gICAgaXNTaWduZXI6IG1ldGEuaXNTaWduZXIsXG4gICAgaXNXcml0YWJsZTogbWV0YS5pc1dyaXRhYmxlLFxuICB9KSk7XG59XG5cbi8qKlxuICogRGVjb2RlIHRoZSBmaWVsZHMgb2YgYSBUb2tlbiBBQ0wgTWludENvbmZpZyBhY2NvdW50IHdlIGRlcGVuZCBvbi5cbiAqXG4gKiBMYXlvdXQ6IGB1OCBkaXNjcmltaW5hdG9yLCB1OCBidW1wLCBib29sIGVuYWJsZVBlcm1pc3Npb25sZXNzVGhhdywgYm9vbCBlbmFibGVQZXJtaXNzaW9ubGVzc0ZyZWV6ZSxcbiAqIHB1YmtleSBtaW50KDMyKSwgcHVia2V5IGZyZWV6ZUF1dGhvcml0eSgzMiksIHB1YmtleSBnYXRpbmdQcm9ncmFtKDMyKWAuXG4gKi9cbmZ1bmN0aW9uIGRlY29kZVRva2VuQWNsTWludENvbmZpZyhkYXRhOiBCdWZmZXIpOiB7IGVuYWJsZVBlcm1pc3Npb25sZXNzVGhhdzogYm9vbGVhbjsgZ2F0aW5nUHJvZ3JhbTogU29sUHVibGljS2V5IH0ge1xuICBjb25zdCBlbmFibGVQZXJtaXNzaW9ubGVzc1RoYXcgPSBkYXRhWzJdID09PSAxO1xuICBjb25zdCBnYXRpbmdQcm9ncmFtID0gbmV3IFNvbFB1YmxpY0tleShkYXRhLnN1YmFycmF5KDY4LCAxMDApKTtcbiAgcmV0dXJuIHsgZW5hYmxlUGVybWlzc2lvbmxlc3NUaGF3LCBnYXRpbmdQcm9ncmFtIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZSB0aGUgZ2F0aW5nIHByb2dyYW0ncyB0aGF3IEV4dHJhQWNjb3VudE1ldGFMaXN0IG9udG8gYSBjYW4tdGhhdyBjb250ZXh0LlxuICpcbiAqIE1pcnJvcnMgdGhlIHJlZmVyZW5jZSBgcmVzb2x2ZUV4dHJhTWV0YXNgOiBmZXRjaCB0aGUgZXh0cmEtbWV0YXMgYWNjb3VudCwgdW5wYWNrIGl0c1xuICogRXh0cmFBY2NvdW50TWV0YSBlbnRyaWVzLCB0aGVuIHJlc29sdmUgZWFjaCBvbmUgKGZpeGVkIGFkZHJlc3MsIFBEQSwgb3IgYWNjb3VudC1kYXRhIGRlcml2ZWQpXG4gKiBhZ2FpbnN0IHRoZSBhY2N1bXVsYXRpbmcgbWV0YXMgdXNpbmcgdGhlIHNwbC10b2tlbiB0cmFuc2Zlci1ob29rIGhlbHBlcnMuIFdoZW4gdGhlIGV4dHJhLW1ldGFzXG4gKiBhY2NvdW50IGRvZXMgbm90IGV4aXN0LCB0aGVyZSBhcmUgbm8gZXh0cmFzIHRvIGFwcGVuZC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZVRva2VuQWNsRXh0cmFNZXRhcyhcbiAgY29ubmVjdGlvbjogQ29ubmVjdGlvbixcbiAgZXh0cmFNZXRhc0FkZHJlc3M6IFNvbFB1YmxpY0tleSxcbiAgcHJldmlvdXNNZXRhczogQWNjb3VudE1ldGFbXSxcbiAgZ2F0aW5nUHJvZ3JhbTogU29sUHVibGljS2V5XG4pOiBQcm9taXNlPEFjY291bnRNZXRhW10+IHtcbiAgY29uc3QgaW5zdHJ1Y3Rpb25EYXRhID0gQnVmZmVyLmZyb20oW1RIQVdfUEVSTUlTU0lPTkxFU1NfSURFTVBPVEVOVF9ESVNDUklNSU5BVE9SXSk7XG4gIGNvbnN0IHJlc29sdmVkTWV0YXM6IEFjY291bnRNZXRhW10gPSBbLi4ucHJldmlvdXNNZXRhc107XG4gIGNvbnN0IGV4dHJhTWV0YXNBY2NvdW50ID0gYXdhaXQgY29ubmVjdGlvbi5nZXRBY2NvdW50SW5mbyhleHRyYU1ldGFzQWRkcmVzcyk7XG4gIGlmICghZXh0cmFNZXRhc0FjY291bnQpIHtcbiAgICByZXR1cm4gcmVzb2x2ZWRNZXRhcztcbiAgfVxuICBjb25zdCBleHRyYUFjY291bnRNZXRhcyA9IGdldEV4dHJhQWNjb3VudE1ldGFzKGV4dHJhTWV0YXNBY2NvdW50KTtcbiAgZm9yIChjb25zdCBleHRyYUFjY291bnRNZXRhIG9mIGV4dHJhQWNjb3VudE1ldGFzKSB7XG4gICAgY29uc3QgcmVzb2x2ZWRNZXRhID0gYXdhaXQgcmVzb2x2ZUV4dHJhQWNjb3VudE1ldGEoXG4gICAgICBjb25uZWN0aW9uLFxuICAgICAgZXh0cmFBY2NvdW50TWV0YSxcbiAgICAgIHJlc29sdmVkTWV0YXMsXG4gICAgICBpbnN0cnVjdGlvbkRhdGEsXG4gICAgICBnYXRpbmdQcm9ncmFtXG4gICAgKTtcbiAgICByZXNvbHZlZE1ldGFzLnB1c2gocmVzb2x2ZWRNZXRhKTtcbiAgfVxuICByZXR1cm4gcmVzb2x2ZWRNZXRhcztcbn1cblxuLyoqXG4gKiBSZXNvbHZlIHRoZSBUb2tlbi0yMDIyIFRyYW5zZmVyIEhvb2sgZXh0cmEgYWNjb3VudHMgZm9yIGEgc3BlY2lmaWMgdHJhbnNmZXIuXG4gKlxuICogVGhpcyBpcyBnZW5lcmljOiBpdCB3b3JrcyBmb3IgYW55IFRva2VuLTIwMjIgbWludCBieSByZWFkaW5nIHRoZSBtaW50J3NcbiAqIFRyYW5zZmVySG9vayBleHRlbnNpb24gYW5kIHRoZSBob29rIHByb2dyYW0ncyBFeHRyYUFjY291bnRNZXRhTGlzdCBsaXZlIGZyb21cbiAqIHRoZSBub2RlLCB0aGVuIHJlc29sdmluZyBlYWNoIGV4dHJhIGFjY291bnQgKGluY2x1ZGluZyBzZWVkLWRlcml2ZWQgUERBcykgdmlhXG4gKiB0aGUgc3RhbmRhcmQgYHNwbC10cmFuc2Zlci1ob29rLWludGVyZmFjZWAgaGVscGVycy4gVGhlIHJldHVybmVkIG1ldGFzIGFyZSBpblxuICogdGhlIGV4YWN0IG9yZGVyIHRoZSBob29rIHJlcXVpcmVzIGFuZCBhcmUgc3VpdGFibGUgZm9yXG4gKiBgVG9rZW5UcmFuc2Zlci5wYXJhbXMudHJhbnNmZXJIb29rQWNjb3VudHNgLlxuICpcbiAqIFdoZW4gdGhlIG1pbnQgaGFzIG5vIFRyYW5zZmVyIEhvb2ssIHRoaXMgcmV0dXJucyBhbiBlbXB0eSBhcnJheSBhbmQgY2FsbGVycyBjYW5cbiAqIG9taXQgdGhlIHBhcmFtLlxuICpcbiAqIEBwYXJhbSB7Q29ubmVjdGlvbn0gY29ubmVjdGlvbiAtIGEgYENvbm5lY3Rpb25gIChvciBzaGltKSBleHBvc2luZyBgZ2V0QWNjb3VudEluZm9gXG4gKiBAcGFyYW0gcGFyYW1zIC0gdGhlIHRyYW5zZmVyIHBhcmFtZXRlcnNcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXJhbXMubWludCAtIHRoZSBUb2tlbi0yMDIyIG1pbnQgYWRkcmVzc1xuICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtcy5zb3VyY2UgLSB0aGUgc291cmNlIHRva2VuIGFjY291bnQgKHNlbmRlciBBVEEpXG4gKiBAcGFyYW0ge3N0cmluZ30gcGFyYW1zLmRlc3RpbmF0aW9uIC0gdGhlIGRlc3RpbmF0aW9uIHRva2VuIGFjY291bnQgKHJlY2lwaWVudCBBVEEpXG4gKiBAcGFyYW0ge3N0cmluZ30gcGFyYW1zLm93bmVyIC0gdGhlIHNvdXJjZSBhY2NvdW50IG93bmVyIC8gdHJhbnNmZXIgYXV0aG9yaXR5XG4gKiBAcGFyYW0ge3N0cmluZ30gcGFyYW1zLmFtb3VudCAtIHRoZSByYXcgdHJhbnNmZXIgYW1vdW50IGluIGJhc2UgdW5pdHNcbiAqIEByZXR1cm5zIHtQcm9taXNlPEV4dHJhQWNjb3VudE1ldGFbXT59IG9yZGVyZWQgZXh0cmEgYWNjb3VudCBtZXRhcywgb3IgW10gd2hlbiBubyBob29rXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXNvbHZlVHJhbnNmZXJIb29rQWNjb3VudHMoXG4gIGNvbm5lY3Rpb246IENvbm5lY3Rpb24sXG4gIHBhcmFtczogeyBtaW50OiBzdHJpbmc7IHNvdXJjZTogc3RyaW5nOyBkZXN0aW5hdGlvbjogc3RyaW5nOyBvd25lcjogc3RyaW5nOyBhbW91bnQ6IHN0cmluZyB9XG4pOiBQcm9taXNlPEV4dHJhQWNjb3VudE1ldGFbXT4ge1xuICBjb25zdCB7IG1pbnQsIHNvdXJjZSwgZGVzdGluYXRpb24sIG93bmVyLCBhbW91bnQgfSA9IHBhcmFtcztcbiAgY29uc3QgbWludFB1YmtleSA9IG5ldyBTb2xQdWJsaWNLZXkobWludCk7XG5cbiAgLy8gUmVhZCB0aGUgbWludCBhbmQgZGV0ZWN0IHdoZXRoZXIgYSBUcmFuc2ZlciBIb29rIGV4dGVuc2lvbiBpcyBjb25maWd1cmVkLlxuICBjb25zdCBtaW50QWNjb3VudEluZm8gPSBhd2FpdCBjb25uZWN0aW9uLmdldEFjY291bnRJbmZvKG1pbnRQdWJrZXkpO1xuICBpZiAoIW1pbnRBY2NvdW50SW5mbykge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBjb25zdCBtaW50U3RhdGUgPSB1bnBhY2tNaW50KG1pbnRQdWJrZXksIG1pbnRBY2NvdW50SW5mbywgVE9LRU5fMjAyMl9QUk9HUkFNX0lEKTtcbiAgY29uc3QgdHJhbnNmZXJIb29rID0gZ2V0VHJhbnNmZXJIb29rKG1pbnRTdGF0ZSk7XG4gIGlmICghdHJhbnNmZXJIb29rIHx8IHRyYW5zZmVySG9vay5wcm9ncmFtSWQuZXF1YWxzKFNvbFB1YmxpY0tleS5kZWZhdWx0KSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IHNvdXJjZVB1YmtleSA9IG5ldyBTb2xQdWJsaWNLZXkoc291cmNlKTtcbiAgY29uc3QgZGVzdGluYXRpb25QdWJrZXkgPSBuZXcgU29sUHVibGljS2V5KGRlc3RpbmF0aW9uKTtcbiAgY29uc3Qgb3duZXJQdWJrZXkgPSBuZXcgU29sUHVibGljS2V5KG93bmVyKTtcbiAgY29uc3QgdHJhbnNmZXJBbW91bnQgPSBCaWdJbnQoYW1vdW50KTtcblxuICAvLyBTdGFydCBmcm9tIGEgYmFzZSB0cmFuc2ZlckNoZWNrZWQgaW5zdHJ1Y3Rpb247IGFkZEV4dHJhQWNjb3VudE1ldGFzRm9yRXhlY3V0ZVxuICAvLyBhcHBlbmRzIHRoZSByZXNvbHZlZCBleHRyYSBhY2NvdW50cywgdGhlIGhvb2sgcHJvZ3JhbSwgYW5kIHRoZSB2YWxpZGF0aW9uXG4gIC8vIHN0YXRlIGFjY291bnQgaW4gdGhlIHJlcXVpcmVkIG9yZGVyLlxuICBjb25zdCBpbnN0cnVjdGlvbiA9IGNyZWF0ZVRyYW5zZmVyQ2hlY2tlZEluc3RydWN0aW9uKFxuICAgIHNvdXJjZVB1YmtleSxcbiAgICBtaW50UHVia2V5LFxuICAgIGRlc3RpbmF0aW9uUHVia2V5LFxuICAgIG93bmVyUHVia2V5LFxuICAgIHRyYW5zZmVyQW1vdW50LFxuICAgIG1pbnRTdGF0ZS5kZWNpbWFscyxcbiAgICBbXSxcbiAgICBUT0tFTl8yMDIyX1BST0dSQU1fSURcbiAgKTtcbiAgY29uc3QgYmFzZUtleUNvdW50ID0gaW5zdHJ1Y3Rpb24ua2V5cy5sZW5ndGg7XG4gIGF3YWl0IGFkZEV4dHJhQWNjb3VudE1ldGFzRm9yRXhlY3V0ZShcbiAgICBjb25uZWN0aW9uLFxuICAgIGluc3RydWN0aW9uLFxuICAgIHRyYW5zZmVySG9vay5wcm9ncmFtSWQsXG4gICAgc291cmNlUHVia2V5LFxuICAgIG1pbnRQdWJrZXksXG4gICAgZGVzdGluYXRpb25QdWJrZXksXG4gICAgb3duZXJQdWJrZXksXG4gICAgdHJhbnNmZXJBbW91bnRcbiAgKTtcblxuICByZXR1cm4gdG9FeHRyYUFjY291bnRNZXRhcyhpbnN0cnVjdGlvbiwgYmFzZUtleUNvdW50KTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIHRoZSBzUkZDLTM3IFRva2VuIEFDTCBwZXJtaXNzaW9ubGVzcy10aGF3IGRlcGVuZGVuY2llcyBmb3IgYSB0b2tlbiBhY2NvdW50LlxuICpcbiAqIFRoaXMgaXMgZ2VuZXJpYzogaXQgd29ya3MgZm9yIEFOWSBhbGxvd2xpc3QvYmxvY2tsaXN0IChEZWZhdWx0QWNjb3VudFN0YXRlKSBUb2tlbi0yMDIyIG1pbnRcbiAqIGdhdGVkIGJ5IHRoZSBUb2tlbiBBQ0wgcHJvZ3JhbSDigJQgbm8gaXNzdWVyIGlzIGhhcmRjb2RlZC4gSXQgcmVhZHMgdGhlIG1pbnQncyBNaW50Q29uZmlnIFBEQVxuICogbGl2ZSBmcm9tIHRoZSBub2RlLCBhbmQgb25seSB3aGVuIHBlcm1pc3Npb25sZXNzIHRoYXcgaXMgZW5hYmxlZCBkb2VzIGl0IGRlcml2ZSB0aGUgZmxhZyAvXG4gKiBtaW50LWNvbmZpZyAvIHRoYXctZXh0cmEtbWV0YXMgUERBcyBhbmQgcmVzb2x2ZSB0aGUgZ2F0aW5nIHByb2dyYW0ncyBleHRyYSBhY2NvdW50IG1ldGFzIChpblxuICogdGhlIGV4YWN0IG9yZGVyIHRoZSBnYXRpbmcgcHJvZ3JhbSByZXF1aXJlcywgbWlycm9yaW5nIGByZXNvbHZlRXh0cmFNZXRhc2ApLlxuICpcbiAqIFdoZW4gdGhlIG1pbnQgaXMgbm90IGEgVG9rZW4gQUNMIG1pbnQsIG9yIHBlcm1pc3Npb25sZXNzIHRoYXcgaXMgZGlzYWJsZWQsIHRoaXMgcmV0dXJuc1xuICogYHsgYXBwbGljYWJsZTogZmFsc2UgfWAgYW5kIGNhbGxlcnMgc2tpcCB0aGUgdGhhdy5cbiAqXG4gKiBAcGFyYW0ge0Nvbm5lY3Rpb259IGNvbm5lY3Rpb24gLSBhIGBDb25uZWN0aW9uYCAob3Igc2hpbSkgZXhwb3NpbmcgYGdldEFjY291bnRJbmZvYFxuICogQHBhcmFtIHBhcmFtcyAtIHRoZSB0aGF3IHBhcmFtZXRlcnNcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXJhbXMubWludCAtIHRoZSBUb2tlbi0yMDIyIG1pbnQgYWRkcmVzc1xuICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtcy50b2tlbkFjY291bnQgLSB0aGUgdG9rZW4gYWNjb3VudCAoQVRBKSB0byB0aGF3XG4gKiBAcGFyYW0ge3N0cmluZ30gcGFyYW1zLnRva2VuQWNjb3VudE93bmVyIC0gdGhlIG93bmVyIG9mIHRoZSB0b2tlbiBhY2NvdW50XG4gKiBAcGFyYW0ge3N0cmluZ30gcGFyYW1zLmF1dGhvcml0eSAtIHRoZSBzaWduZXIgaW52b2tpbmcgdGhlIHRoYXcgKGZlZSBwYXllciAvIGF1dGhvcml0eSlcbiAqIEByZXR1cm5zIHtQcm9taXNlPFJlc29sdmVQZXJtaXNzaW9ubGVzc1RoYXdSZXN1bHQ+fSB0aGUgcmVzb2x2ZWQgdGhhdyBwYXJhbXMsIG9yIGB7IGFwcGxpY2FibGU6IGZhbHNlIH1gXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXNvbHZlUGVybWlzc2lvbmxlc3NUaGF3KFxuICBjb25uZWN0aW9uOiBDb25uZWN0aW9uLFxuICBwYXJhbXM6IHsgbWludDogc3RyaW5nOyB0b2tlbkFjY291bnQ6IHN0cmluZzsgdG9rZW5BY2NvdW50T3duZXI6IHN0cmluZzsgYXV0aG9yaXR5OiBzdHJpbmcgfVxuKTogUHJvbWlzZTxSZXNvbHZlUGVybWlzc2lvbmxlc3NUaGF3UmVzdWx0PiB7XG4gIGNvbnN0IHsgbWludCwgdG9rZW5BY2NvdW50LCB0b2tlbkFjY291bnRPd25lciwgYXV0aG9yaXR5IH0gPSBwYXJhbXM7XG4gIGNvbnN0IG1pbnRQdWJrZXkgPSBuZXcgU29sUHVibGljS2V5KG1pbnQpO1xuICBjb25zdCB0b2tlbkFjY291bnRQdWJrZXkgPSBuZXcgU29sUHVibGljS2V5KHRva2VuQWNjb3VudCk7XG4gIGNvbnN0IHRva2VuQWNjb3VudE93bmVyUHVia2V5ID0gbmV3IFNvbFB1YmxpY0tleSh0b2tlbkFjY291bnRPd25lcik7XG4gIGNvbnN0IGF1dGhvcml0eVB1YmtleSA9IG5ldyBTb2xQdWJsaWNLZXkoYXV0aG9yaXR5KTtcbiAgY29uc3QgdG9rZW5BY2xQcm9ncmFtSWQgPSBuZXcgU29sUHVibGljS2V5KFRPS0VOX0FDTF9QUk9HUkFNX0lEKTtcblxuICAvLyAxLiBSZWFkIHRoZSBtaW50J3MgTWludENvbmZpZyBQREEuIEFic2VudCA9PiB0aGUgbWludCBpcyBub3QgYSBUb2tlbiBBQ0wgbWludC5cbiAgY29uc3QgW21pbnRDb25maWdQZGFdID0gU29sUHVibGljS2V5LmZpbmRQcm9ncmFtQWRkcmVzc1N5bmMoXG4gICAgW0J1ZmZlci5mcm9tKFRPS0VOX0FDTF9NSU5UX0NPTkZJR19TRUVEKSwgbWludFB1YmtleS50b0J1ZmZlcigpXSxcbiAgICB0b2tlbkFjbFByb2dyYW1JZFxuICApO1xuICBjb25zdCBtaW50Q29uZmlnQWNjb3VudCA9IGF3YWl0IGNvbm5lY3Rpb24uZ2V0QWNjb3VudEluZm8obWludENvbmZpZ1BkYSk7XG4gIGlmICghbWludENvbmZpZ0FjY291bnQpIHtcbiAgICByZXR1cm4geyBhcHBsaWNhYmxlOiBmYWxzZSB9O1xuICB9XG5cbiAgLy8gMi4gRGVjb2RlIHRoZSBNaW50Q29uZmlnOyBwZXJtaXNzaW9ubGVzcyB0aGF3IG11c3QgYmUgZW5hYmxlZC5cbiAgY29uc3QgbWludENvbmZpZyA9IGRlY29kZVRva2VuQWNsTWludENvbmZpZyhtaW50Q29uZmlnQWNjb3VudC5kYXRhKTtcbiAgaWYgKCFtaW50Q29uZmlnLmVuYWJsZVBlcm1pc3Npb25sZXNzVGhhdykge1xuICAgIHJldHVybiB7IGFwcGxpY2FibGU6IGZhbHNlIH07XG4gIH1cbiAgY29uc3QgZ2F0aW5nUHJvZ3JhbVB1YmtleSA9IG1pbnRDb25maWcuZ2F0aW5nUHJvZ3JhbTtcblxuICAvLyAzLiBEZXJpdmUgdGhlIHJlbWFpbmluZyBQREFzIChmbGFnIGFjY291bnQgdW5kZXIgVG9rZW4gQUNMLCB0aGF3IGV4dHJhIG1ldGFzIHVuZGVyIGdhdGluZykuXG4gIGNvbnN0IFtmbGFnQWNjb3VudFBkYV0gPSBTb2xQdWJsaWNLZXkuZmluZFByb2dyYW1BZGRyZXNzU3luYyhcbiAgICBbQnVmZmVyLmZyb20oVE9LRU5fQUNMX0ZMQUdfQUNDT1VOVF9TRUVEKSwgdG9rZW5BY2NvdW50UHVia2V5LnRvQnVmZmVyKCldLFxuICAgIHRva2VuQWNsUHJvZ3JhbUlkXG4gICk7XG4gIGNvbnN0IFt0aGF3RXh0cmFNZXRhc1BkYV0gPSBTb2xQdWJsaWNLZXkuZmluZFByb2dyYW1BZGRyZXNzU3luYyhcbiAgICBbQnVmZmVyLmZyb20oVE9LRU5fQUNMX1RIQVdfRVhUUkFfTUVUQVNfU0VFRCksIG1pbnRQdWJrZXkudG9CdWZmZXIoKV0sXG4gICAgZ2F0aW5nUHJvZ3JhbVB1YmtleVxuICApO1xuXG4gIC8vIDQuIEJ1aWxkIHRoZSA2LWFjY291bnQgY2FuLXRoYXcgY29udGV4dCAoYWxsIHJlYWRvbmx5KSwgdGhlbiByZXNvbHZlIHRoZSBnYXRpbmcgcHJvZ3JhbSdzXG4gIC8vICAgIGV4dHJhIGFjY291bnQgbWV0YXMgb250byBpdC5cbiAgY29uc3QgY2FuVGhhd0NvbnRleHQ6IEFjY291bnRNZXRhW10gPSBbXG4gICAgeyBwdWJrZXk6IGF1dGhvcml0eVB1YmtleSwgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiBmYWxzZSB9LFxuICAgIHsgcHVia2V5OiB0b2tlbkFjY291bnRQdWJrZXksIGlzU2lnbmVyOiBmYWxzZSwgaXNXcml0YWJsZTogZmFsc2UgfSxcbiAgICB7IHB1YmtleTogbWludFB1YmtleSwgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiBmYWxzZSB9LFxuICAgIHsgcHVia2V5OiB0b2tlbkFjY291bnRPd25lclB1YmtleSwgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiBmYWxzZSB9LFxuICAgIHsgcHVia2V5OiBmbGFnQWNjb3VudFBkYSwgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiBmYWxzZSB9LFxuICAgIHsgcHVia2V5OiB0aGF3RXh0cmFNZXRhc1BkYSwgaXNTaWduZXI6IGZhbHNlLCBpc1dyaXRhYmxlOiBmYWxzZSB9LFxuICBdO1xuICBjb25zdCByZXNvbHZlZE1ldGFzID0gYXdhaXQgcmVzb2x2ZVRva2VuQWNsRXh0cmFNZXRhcyhcbiAgICBjb25uZWN0aW9uLFxuICAgIHRoYXdFeHRyYU1ldGFzUGRhLFxuICAgIGNhblRoYXdDb250ZXh0LFxuICAgIGdhdGluZ1Byb2dyYW1QdWJrZXlcbiAgKTtcblxuICAvLyA1LiBEcm9wIHRoZSBmaXJzdCBmaXZlIGNvbnRleHQgYWNjb3VudHM7IHRoZSByZW1haW5kZXIgKFt0aGF3RXh0cmFNZXRhcywgLi4uZXh0cmFzXSkgYXJlIHRoZVxuICAvLyAgICBhY2NvdW50cyBhcHBlbmRlZCBhZnRlciB0aGUgdGhhdyBpbnN0cnVjdGlvbidzIGZpeGVkIG5pbmUuXG4gIGNvbnN0IGV4dHJhQWNjb3VudHMgPSByZXNvbHZlZE1ldGFzLnNsaWNlKDUpLm1hcCgobWV0YSkgPT4gKHtcbiAgICBwdWJrZXk6IG1ldGEucHVia2V5LnRvQmFzZTU4KCksXG4gICAgaXNTaWduZXI6IG1ldGEuaXNTaWduZXIsXG4gICAgaXNXcml0YWJsZTogbWV0YS5pc1dyaXRhYmxlLFxuICB9KSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhcHBsaWNhYmxlOiB0cnVlLFxuICAgIGdhdGluZ1Byb2dyYW06IGdhdGluZ1Byb2dyYW1QdWJrZXkudG9CYXNlNTgoKSxcbiAgICBmbGFnQWNjb3VudDogZmxhZ0FjY291bnRQZGEudG9CYXNlNTgoKSxcbiAgICBtaW50Q29uZmlnOiBtaW50Q29uZmlnUGRhLnRvQmFzZTU4KCksXG4gICAgdG9rZW5Qcm9ncmFtOiBUT0tFTl8yMDIyX1BST0dSQU1fSUQudG9CYXNlNTgoKSxcbiAgICBzeXN0ZW1Qcm9ncmFtOiBTeXN0ZW1Qcm9ncmFtLnByb2dyYW1JZC50b0Jhc2U1OCgpLFxuICAgIGV4dHJhQWNjb3VudHMsXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,26 @@
1
+ import { SolTokenExtensions, SolTokenExtensionType } from '@bitgo-beta/statics';
2
+ import { type Mint } from '@solana/spl-token';
3
+ import { Commitment, Connection, PublicKey } from '@solana/web3.js';
4
+ /**
5
+ * Result of reading a Token-2022 mint's extension data.
6
+ *
7
+ * `detectedTypeNames` lists EVERY extension present on the mint — including ones BitGo does
8
+ * not model — so callers can run the onboarding safety gate (`getUnsupportedSolTokenExtensions`).
9
+ * `extensions` is the typed, storable config for the extensions BitGo does model.
10
+ */
11
+ export interface MintExtensionReadResult {
12
+ detectedTypeNames: string[];
13
+ extensions: SolTokenExtensions;
14
+ }
15
+ /** Human-readable names of every extension type present on the mint. */
16
+ export declare function extensionTypeNames(mintInfo: Mint): string[];
17
+ /** The subset of detected extensions that BitGo models. Pure — unit-testable without chain data. */
18
+ export declare function mapModeledExtensions(detectedTypeNames: readonly string[]): SolTokenExtensionType[];
19
+ /**
20
+ * Parse a decoded Token-2022 `Mint` into BitGo's extension model. Separated from the RPC call
21
+ * so it can be unit-tested against recorded mint fixtures.
22
+ */
23
+ export declare function parseMintExtensions(mintInfo: Mint): MintExtensionReadResult;
24
+ /** Fetch a Token-2022 mint and parse its extensions. Uses `finalized` commitment rules. */
25
+ export declare function readMintExtensions(connection: Connection, mint: string | PublicKey, commitment?: Commitment): Promise<MintExtensionReadResult>;
26
+ //# sourceMappingURL=tokenExtensions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenExtensions.d.ts","sourceRoot":"","sources":["../../../../src/lib/tokenExtensions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAWL,KAAK,IAAI,EAEV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,UAAU,EAAE,kBAAkB,CAAC;CAChC;AAYD,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,IAAI,GAAG,MAAM,EAAE,CAK3D;AAED,oGAAoG;AACpG,wBAAgB,oBAAoB,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,GAAG,qBAAqB,EAAE,CASlG;AAcD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,IAAI,GAAG,uBAAuB,CA4D3E;AAED,2FAA2F;AAC3F,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,UAAU,GAAE,UAAwB,GACnC,OAAO,CAAC,uBAAuB,CAAC,CAIlC"}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extensionTypeNames = extensionTypeNames;
4
+ exports.mapModeledExtensions = mapModeledExtensions;
5
+ exports.parseMintExtensions = parseMintExtensions;
6
+ exports.readMintExtensions = readMintExtensions;
7
+ const statics_1 = require("@bitgo-beta/statics");
8
+ const spl_token_1 = require("@solana/spl-token");
9
+ const web3_js_1 = require("@solana/web3.js");
10
+ /** Map from `@solana/spl-token` ExtensionType names to BitGo's modeled extension types. */
11
+ const EXTENSION_NAME_MAP = {
12
+ TransferFeeConfig: statics_1.SolTokenExtensionType.TransferFee,
13
+ TransferHook: statics_1.SolTokenExtensionType.TransferHook,
14
+ PermanentDelegate: statics_1.SolTokenExtensionType.PermanentDelegate,
15
+ InterestBearingConfig: statics_1.SolTokenExtensionType.InterestBearing,
16
+ DefaultAccountState: statics_1.SolTokenExtensionType.DefaultAccountState,
17
+ ScaledUiAmountConfig: statics_1.SolTokenExtensionType.ScaledUiAmount,
18
+ };
19
+ /** Human-readable names of every extension type present on the mint. */
20
+ function extensionTypeNames(mintInfo) {
21
+ if (mintInfo.tlvData.length === 0) {
22
+ return [];
23
+ }
24
+ return (0, spl_token_1.getExtensionTypes)(mintInfo.tlvData).map((t) => spl_token_1.ExtensionType[t] ?? `unknown(${t})`);
25
+ }
26
+ /** The subset of detected extensions that BitGo models. Pure — unit-testable without chain data. */
27
+ function mapModeledExtensions(detectedTypeNames) {
28
+ const modeled = [];
29
+ for (const name of detectedTypeNames) {
30
+ const mapped = EXTENSION_NAME_MAP[name];
31
+ if (mapped !== undefined && !modeled.includes(mapped)) {
32
+ modeled.push(mapped);
33
+ }
34
+ }
35
+ return modeled;
36
+ }
37
+ // No SDK-level extension-combination assert: the on-chain program already
38
+ // enforces its own invalid-combination rules at extension init
39
+ // (`check_for_invalid_mint_extension_combinations` in token-2022), and it does
40
+ // NOT forbid TransferHook + ConfidentialTransferMint. A previous assert here
41
+ // rejected that legal pair and blocked onboarding of real mints. Custody
42
+ // policy on which combinations BitGo will serve belongs to consumers
43
+ // (statics `getUnsupportedSolTokenExtensions`, the AMS onboarding gate).
44
+ function toBase58(key) {
45
+ return key ? key.toBase58() : undefined;
46
+ }
47
+ /**
48
+ * Parse a decoded Token-2022 `Mint` into BitGo's extension model. Separated from the RPC call
49
+ * so it can be unit-tested against recorded mint fixtures.
50
+ */
51
+ function parseMintExtensions(mintInfo) {
52
+ const detectedTypeNames = extensionTypeNames(mintInfo);
53
+ const extensions = { detected: mapModeledExtensions(detectedTypeNames) };
54
+ const authorities = {
55
+ mintAuthority: toBase58(mintInfo.mintAuthority),
56
+ freezeAuthority: toBase58(mintInfo.freezeAuthority),
57
+ };
58
+ const feeConfig = (0, spl_token_1.getTransferFeeConfig)(mintInfo);
59
+ if (feeConfig) {
60
+ extensions.transferFee = {
61
+ transferFeeBasisPoints: feeConfig.newerTransferFee.transferFeeBasisPoints,
62
+ maximumFee: feeConfig.newerTransferFee.maximumFee.toString(),
63
+ };
64
+ authorities.transferFeeConfigAuthority = toBase58(feeConfig.transferFeeConfigAuthority);
65
+ authorities.withdrawWithheldAuthority = toBase58(feeConfig.withdrawWithheldAuthority);
66
+ }
67
+ const hook = (0, spl_token_1.getTransferHook)(mintInfo);
68
+ if (hook) {
69
+ extensions.transferHookProgramId = hook.programId.toBase58();
70
+ }
71
+ const delegate = (0, spl_token_1.getPermanentDelegate)(mintInfo);
72
+ if (delegate?.delegate) {
73
+ authorities.permanentDelegate = delegate.delegate.toBase58();
74
+ }
75
+ const interest = (0, spl_token_1.getInterestBearingMintConfigState)(mintInfo);
76
+ if (interest) {
77
+ extensions.interestBearing = { rateBasisPoints: interest.currentRate };
78
+ authorities.rateAuthority = toBase58(interest.rateAuthority);
79
+ }
80
+ // DefaultAccountState is a single byte (AccountState). Decoded generically to avoid depending
81
+ // on a version-specific typed getter. permissionlessThaw is NOT on-chain — resolved separately
82
+ // at onboarding; defaults false until confirmed.
83
+ const defaultStateData = (0, spl_token_1.getExtensionData)(spl_token_1.ExtensionType.DefaultAccountState, mintInfo.tlvData);
84
+ if (defaultStateData) {
85
+ extensions.defaultAccountState = {
86
+ frozen: defaultStateData[0] === spl_token_1.AccountState.Frozen,
87
+ permissionlessThaw: false,
88
+ };
89
+ }
90
+ // ScaledUiAmountConfig: capture the multiplier effective at onboarding. `multiplier` is the
91
+ // live value; a scheduled change (newMultiplier + newMultiplierEffectiveTimestamp) is tracked
92
+ // by the indexer's mint-config-changes feed, not by this frozen snapshot (CSHLD-1688).
93
+ // multiplier is an f64 — stringify for the exact-decimal contract the consumers use.
94
+ const scaledUi = (0, spl_token_1.getScaledUiAmountConfig)(mintInfo);
95
+ if (scaledUi) {
96
+ extensions.scaledUiAmount = { initialMultiplier: scaledUi.multiplier.toString() };
97
+ }
98
+ if (Object.values(authorities).some((v) => v !== undefined)) {
99
+ extensions.authorities = authorities;
100
+ }
101
+ return { detectedTypeNames, extensions };
102
+ }
103
+ /** Fetch a Token-2022 mint and parse its extensions. Uses `finalized` commitment rules. */
104
+ async function readMintExtensions(connection, mint, commitment = 'finalized') {
105
+ const mintPubkey = typeof mint === 'string' ? new web3_js_1.PublicKey(mint) : mint;
106
+ const mintInfo = await (0, spl_token_1.getMint)(connection, mintPubkey, commitment, spl_token_1.TOKEN_2022_PROGRAM_ID);
107
+ return parseMintExtensions(mintInfo);
108
+ }
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5FeHRlbnNpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi90b2tlbkV4dGVuc2lvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF3Q0EsZ0RBS0M7QUFHRCxvREFTQztBQWtCRCxrREE0REM7QUFHRCxnREFRQztBQWxKRCxpREFBZ0Y7QUFDaEYsaURBYTJCO0FBQzNCLDZDQUFvRTtBQWNwRSwyRkFBMkY7QUFDM0YsTUFBTSxrQkFBa0IsR0FBb0Q7SUFDMUUsaUJBQWlCLEVBQUUsK0JBQXFCLENBQUMsV0FBVztJQUNwRCxZQUFZLEVBQUUsK0JBQXFCLENBQUMsWUFBWTtJQUNoRCxpQkFBaUIsRUFBRSwrQkFBcUIsQ0FBQyxpQkFBaUI7SUFDMUQscUJBQXFCLEVBQUUsK0JBQXFCLENBQUMsZUFBZTtJQUM1RCxtQkFBbUIsRUFBRSwrQkFBcUIsQ0FBQyxtQkFBbUI7SUFDOUQsb0JBQW9CLEVBQUUsK0JBQXFCLENBQUMsY0FBYztDQUMzRCxDQUFDO0FBRUYsd0VBQXdFO0FBQ3hFLFNBQWdCLGtCQUFrQixDQUFDLFFBQWM7SUFDL0MsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNsQyxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxPQUFPLElBQUEsNkJBQWlCLEVBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMseUJBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDN0YsQ0FBQztBQUVELG9HQUFvRztBQUNwRyxTQUFnQixvQkFBb0IsQ0FBQyxpQkFBb0M7SUFDdkUsTUFBTSxPQUFPLEdBQTRCLEVBQUUsQ0FBQztJQUM1QyxLQUFLLE1BQU0sSUFBSSxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDckMsTUFBTSxNQUFNLEdBQUcsa0JB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Q0FBQyxNQUFNO1lBQ25ELGtCQUFrQixFQUFFLEtBQUs7U0FDMUIsQ0FBQztJQUNKLENBQUM7SUFFRCw0RkFBNEY7SUFDNUYsOEZBQThGO0lBQzlGLHVGQUF1RjtJQUN2RixxRkFBcUY7SUFDckYsTUFBTSxRQUFRLEdBQUcsSUFBQSxtQ0FBdUIsRUFBQyxRQUFRLENBQUMsQ0FBQztJQUNuRCxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2IsVUFBVSxDQUFDLGNBQWMsR0FBRyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztJQUNwRixDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDNUQsVUFBVSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDdkMsQ0FBQztJQUVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsQ0FBQztBQUMzQyxDQUFDO0FBRUQsMkZBQTJGO0FBQ3BGLEtBQUssVUFBVSxrQkFBa0IsQ0FDdEMsVUFBc0IsRUFDdEIsSUFBd0IsRUFDeEIsYUFBeUIsV0FBVztJQUVwQyxNQUFNLFVBQVUsR0FBRyxPQUFPLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksbUJBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3pFLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSxtQkFBTyxFQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGlDQUFxQixDQUFDLENBQUM7SUFDMUYsT0FBTyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU29sVG9rZW5FeHRlbnNpb25zLCBTb2xUb2tlbkV4dGVuc2lvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7XG4gIEFjY291bnRTdGF0ZSxcbiAgRXh0ZW5zaW9uVHlwZSxcbiAgZ2V0RXh0ZW5zaW9uRGF0YSxcbiAgZ2V0RXh0ZW5zaW9uVHlwZXMsXG4gIGdldEludGVyZXN0QmVhcmluZ01pbnRDb25maWdTdGF0ZSxcbiAgZ2V0TWludCxcbiAgZ2V0UGVybWFuZW50RGVsZWdhdGUsXG4gIGdldFNjYWxlZFVpQW1vdW50Q29uZmlnLFxuICBnZXRUcmFuc2ZlckZlZUNvbmZpZyxcbiAgZ2V0VHJhbnNmZXJIb29rLFxuICB0eXBlIE1pbnQsXG4gIFRPS0VOXzIwMjJfUFJPR1JBTV9JRCxcbn0gZnJvbSAnQHNvbGFuYS9zcGwtdG9rZW4nO1xuaW1wb3J0IHsgQ29tbWl0bWVudCwgQ29ubmVjdGlvbiwgUHVibGljS2V5IH0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcblxuLyoqXG4gKiBSZXN1bHQgb2YgcmVhZGluZyBhIFRva2VuLTIwMjIgbWludCdzIGV4dGVuc2lvbiBkYXRhLlxuICpcbiAqIGBkZXRlY3RlZFR5cGVOYW1lc2AgbGlzdHMgRVZFUlkgZXh0ZW5zaW9uIHByZXNlbnQgb24gdGhlIG1pbnQg4oCUIGluY2x1ZGluZyBvbmVzIEJpdEdvIGRvZXNcbiAqIG5vdCBtb2RlbCDigJQgc28gY2FsbGVycyBjYW4gcnVuIHRoZSBvbmJvYXJkaW5nIHNhZmV0eSBnYXRlIChgZ2V0VW5zdXBwb3J0ZWRTb2xUb2tlbkV4dGVuc2lvbnNgKS5cbiAqIGBleHRlbnNpb25zYCBpcyB0aGUgdHlwZWQsIHN0b3JhYmxlIGNvbmZpZyBmb3IgdGhlIGV4dGVuc2lvbnMgQml0R28gZG9lcyBtb2RlbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNaW50RXh0ZW5zaW9uUmVhZFJlc3VsdCB7XG4gIGRldGVjdGVkVHlwZU5hbWVzOiBzdHJpbmdbXTtcbiAgZXh0ZW5zaW9uczogU29sVG9rZW5FeHRlbnNpb25zO1xufVxuXG4vKiogTWFwIGZyb20gYEBzb2xhbmEvc3BsLXRva2VuYCBFeHRlbnNpb25UeXBlIG5hbWVzIHRvIEJpdEdvJ3MgbW9kZWxlZCBleHRlbnNpb24gdHlwZXMuICovXG5jb25zdCBFWFRFTlNJT05fTkFNRV9NQVA6IFJlYWRvbmx5PFJlY29yZDxzdHJpbmcsIFNvbFRva2VuRXh0ZW5zaW9uVHlwZT4+ID0ge1xuICBUcmFuc2ZlckZlZUNvbmZpZzogU29sVG9rZW5FeHRlbnNpb25UeXBlLlRyYW5zZmVyRmVlLFxuICBUcmFuc2Zlckhvb2s6IFNvbFRva2VuRXh0ZW5zaW9uVHlwZS5UcmFuc2Zlckhvb2ssXG4gIFBlcm1hbmVudERlbGVnYXRlOiBTb2xUb2tlbkV4dGVuc2lvblR5cGUuUGVybWFuZW50RGVsZWdhdGUsXG4gIEludGVyZXN0QmVhcmluZ0NvbmZpZzogU29sVG9rZW5FeHRlbnNpb25UeXBlLkludGVyZXN0QmVhcmluZyxcbiAgRGVmYXVsdEFjY291bnRTdGF0ZTogU29sVG9rZW5FeHRlbnNpb25UeXBlLkRlZmF1bHRBY2NvdW50U3RhdGUsXG4gIFNjYWxlZFVpQW1vdW50Q29uZmlnOiBTb2xUb2tlbkV4dGVuc2lvblR5cGUuU2NhbGVkVWlBbW91bnQsXG59O1xuXG4vKiogSHVtYW4tcmVhZGFibGUgbmFtZXMgb2YgZXZlcnkgZXh0ZW5zaW9uIHR5cGUgcHJlc2VudCBvbiB0aGUgbWludC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRlbnNpb25UeXBlTmFtZXMobWludEluZm86IE1pbnQpOiBzdHJpbmdbXSB7XG4gIGlmIChtaW50SW5mby50bHZEYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICByZXR1cm4gZ2V0RXh0ZW5zaW9uVHlwZXMobWludEluZm8udGx2RGF0YSkubWFwKCh0KSA9PiBFeHRlbnNpb25UeXBlW3RdID8/IGB1bmtub3duKCR7dH0pYCk7XG59XG5cbi8qKiBUaGUgc3Vic2V0IG9mIGRldGVjdGVkIGV4dGVuc2lvbnMgdGhhdCBCaXRHbyBtb2RlbHMuIFB1cmUg4oCUIHVuaXQtdGVzdGFibGUgd2l0aG91dCBjaGFpbiBkYXRhLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcE1vZGVsZWRFeHRlbnNpb25zKGRldGVjdGVkVHlwZU5hbWVzOiByZWFkb25seSBzdHJpbmdbXSk6IFNvbFRva2VuRXh0ZW5zaW9uVHlwZVtdIHtcbiAgY29uc3QgbW9kZWxlZDogU29sVG9rZW5FeHRlbnNpb25UeXBlW10gPSBbXTtcbiAgZm9yIChjb25zdCBuYW1lIG9mIGRldGVjdGVkVHlwZU5hbWVzKSB7XG4gICAgY29uc3QgbWFwcGVkID0gRVhURU5TSU9OX05BTUVfTUFQW25hbWVdO1xuICAgIGlmIChtYXBwZWQgIT09IHVuZGVmaW5lZCAmJiAhbW9kZWxlZC5pbmNsdWRlcyhtYXBwZWQpKSB7XG4gICAgICBtb2RlbGVkLnB1c2gobWFwcGVkKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1vZGVsZWQ7XG59XG5cbi8vIE5vIFNESy1sZXZlbCBleHRlbnNpb24tY29tYmluYXRpb24gYXNzZXJ0OiB0aGUgb24tY2hhaW4gcHJvZ3JhbSBhbHJlYWR5XG4vLyBlbmZvcmNlcyBpdHMgb3duIGludmFsaWQtY29tYmluYXRpb24gcnVsZXMgYXQgZXh0ZW5zaW9uIGluaXRcbi8vIChgY2hlY2tfZm9yX2ludmFsaWRfbWludF9leHRlbnNpb25fY29tYmluYXRpb25zYCBpbiB0b2tlbi0yMDIyKSwgYW5kIGl0IGRvZXNcbi8vIE5PVCBmb3JiaWQgVHJhbnNmZXJIb29rICsgQ29uZmlkZW50aWFsVHJhbnNmZXJNaW50LiBBIHByZXZpb3VzIGFzc2VydCBoZXJlXG4vLyByZWplY3RlZCB0aGF0IGxlZ2FsIHBhaXIgYW5kIGJsb2NrZWQgb25ib2FyZGluZyBvZiByZWFsIG1pbnRzLiBDdXN0b2R5XG4vLyBwb2xpY3kgb24gd2hpY2ggY29tYmluYXRpb25zIEJpdEdvIHdpbGwgc2VydmUgYmVsb25ncyB0byBjb25zdW1lcnNcbi8vIChzdGF0aWNzIGBnZXRVbnN1cHBvcnRlZFNvbFRva2VuRXh0ZW5zaW9uc2AsIHRoZSBBTVMgb25ib2FyZGluZyBnYXRlKS5cblxuZnVuY3Rpb24gdG9CYXNlNTgoa2V5OiBQdWJsaWNLZXkgfCBudWxsKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGtleSA/IGtleS50b0Jhc2U1OCgpIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFBhcnNlIGEgZGVjb2RlZCBUb2tlbi0yMDIyIGBNaW50YCBpbnRvIEJpdEdvJ3MgZXh0ZW5zaW9uIG1vZGVsLiBTZXBhcmF0ZWQgZnJvbSB0aGUgUlBDIGNhbGxcbiAqIHNvIGl0IGNhbiBiZSB1bml0LXRlc3RlZCBhZ2FpbnN0IHJlY29yZGVkIG1pbnQgZml4dHVyZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU1pbnRFeHRlbnNpb25zKG1pbnRJbmZvOiBNaW50KTogTWludEV4dGVuc2lvblJlYWRSZXN1bHQge1xuICBjb25zdCBkZXRlY3RlZFR5cGVOYW1lcyA9IGV4dGVuc2lvblR5cGVOYW1lcyhtaW50SW5mbyk7XG5cbiAgY29uc3QgZXh0ZW5zaW9uczogU29sVG9rZW5FeHRlbnNpb25zID0geyBkZXRlY3RlZDogbWFwTW9kZWxlZEV4dGVuc2lvbnMoZGV0ZWN0ZWRUeXBlTmFtZXMpIH07XG4gIGNvbnN0IGF1dGhvcml0aWVzOiBOb25OdWxsYWJsZTxTb2xUb2tlbkV4dGVuc2lvbnNbJ2F1dGhvcml0aWVzJ10+ID0ge1xuICAgIG1pbnRBdXRob3JpdHk6IHRvQmFzZTU4KG1pbnRJbmZvLm1pbnRBdXRob3JpdHkpLFxuICAgIGZyZWV6ZUF1dGhvcml0eTogdG9CYXNlNTgobWludEluZm8uZnJlZXplQXV0aG9yaXR5KSxcbiAgfTtcblxuICBjb25zdCBmZWVDb25maWcgPSBnZXRUcmFuc2ZlckZlZUNvbmZpZyhtaW50SW5mbyk7XG4gIGlmIChmZWVDb25maWcpIHtcbiAgICBleHRlbnNpb25zLnRyYW5zZmVyRmVlID0ge1xuICAgICAgdHJhbnNmZXJGZWVCYXNpc1BvaW50czogZmVlQ29uZmlnLm5ld2VyVHJhbnNmZXJGZWUudHJhbnNmZXJGZWVCYXNpc1BvaW50cyxcbiAgICAgIG1heGltdW1GZWU6IGZlZUNvbmZpZy5uZXdlclRyYW5zZmVyRmVlLm1heGltdW1GZWUudG9TdHJpbmcoKSxcbiAgICB9O1xuICAgIGF1dGhvcml0aWVzLnRyYW5zZmVyRmVlQ29uZmlnQXV0aG9yaXR5ID0gdG9CYXNlNTgoZmVlQ29uZmlnLnRyYW5zZmVyRmVlQ29uZmlnQXV0aG9yaXR5KTtcbiAgICBhdXRob3JpdGllcy53aXRoZHJhd1dpdGhoZWxkQXV0aG9yaXR5ID0gdG9CYXNlNTgoZmVlQ29uZmlnLndpdGhkcmF3V2l0aGhlbGRBdXRob3JpdHkpO1xuICB9XG5cbiAgY29uc3QgaG9vayA9IGdldFRyYW5zZmVySG9vayhtaW50SW5mbyk7XG4gIGlmIChob29rKSB7XG4gICAgZXh0ZW5zaW9ucy50cmFuc2Zlckhvb2tQcm9ncmFtSWQgPSBob29rLnByb2dyYW1JZC50b0Jhc2U1OCgpO1xuICB9XG5cbiAgY29uc3QgZGVsZWdhdGUgPSBnZXRQZXJtYW5lbnREZWxlZ2F0ZShtaW50SW5mbyk7XG4gIGlmIChkZWxlZ2F0ZT8uZGVsZWdhdGUpIHtcbiAgICBhdXRob3JpdGllcy5wZXJtYW5lbnREZWxlZ2F0ZSA9IGRlbGVnYXRlLmRlbGVnYXRlLnRvQmFzZTU4KCk7XG4gIH1cblxuICBjb25zdCBpbnRlcmVzdCA9IGdldEludGVyZXN0QmVhcmluZ01pbnRDb25maWdTdGF0ZShtaW50SW5mbyk7XG4gIGlmIChpbnRlcmVzdCkge1xuICAgIGV4dGVuc2lvbnMuaW50ZXJlc3RCZWFyaW5nID0geyByYXRlQmFzaXNQb2ludHM6IGludGVyZXN0LmN1cnJlbnRSYXRlIH07XG4gICAgYXV0aG9yaXRpZXMucmF0ZUF1dGhvcml0eSA9IHRvQmFzZTU4KGludGVyZXN0LnJhdGVBdXRob3JpdHkpO1xuICB9XG5cbiAgLy8gRGVmYXVsdEFjY291bnRTdGF0ZSBpcyBhIHNpbmdsZSBieXRlIChBY2NvdW50U3RhdGUpLiBEZWNvZGVkIGdlbmVyaWNhbGx5IHRvIGF2b2lkIGRlcGVuZGluZ1xuICAvLyBvbiBhIHZlcnNpb24tc3BlY2lmaWMgdHlwZWQgZ2V0dGVyLiBwZXJtaXNzaW9ubGVzc1RoYXcgaXMgTk9UIG9uLWNoYWluIOKAlCByZXNvbHZlZCBzZXBhcmF0ZWx5XG4gIC8vIGF0IG9uYm9hcmRpbmc7IGRlZmF1bHRzIGZhbHNlIHVudGlsIGNvbmZpcm1lZC5cbiAgY29uc3QgZGVmYXVsdFN0YXRlRGF0YSA9IGdldEV4dGVuc2lvbkRhdGEoRXh0ZW5zaW9uVHlwZS5EZWZhdWx0QWNjb3VudFN0YXRlLCBtaW50SW5mby50bHZEYXRhKTtcbiAgaWYgKGRlZmF1bHRTdGF0ZURhdGEpIHtcbiAgICBleHRlbnNpb25zLmRlZmF1bHRBY2NvdW50U3RhdGUgPSB7XG4gICAgICBmcm96ZW46IGRlZmF1bHRTdGF0ZURhdGFbMF0gPT09IEFjY291bnRTdGF0ZS5Gcm96ZW4sXG4gICAgICBwZXJtaXNzaW9ubGVzc1RoYXc6IGZhbHNlLFxuICAgIH07XG4gIH1cblxuICAvLyBTY2FsZWRVaUFtb3VudENvbmZpZzogY2FwdHVyZSB0aGUgbXVsdGlwbGllciBlZmZlY3RpdmUgYXQgb25ib2FyZGluZy4gYG11bHRpcGxpZXJgIGlzIHRoZVxuICAvLyBsaXZlIHZhbHVlOyBhIHNjaGVkdWxlZCBjaGFuZ2UgKG5ld011bHRpcGxpZXIgKyBuZXdNdWx0aXBsaWVyRWZmZWN0aXZlVGltZXN0YW1wKSBpcyB0cmFja2VkXG4gIC8vIGJ5IHRoZSBpbmRleGVyJ3MgbWludC1jb25maWctY2hhbmdlcyBmZWVkLCBub3QgYnkgdGhpcyBmcm96ZW4gc25hcHNob3QgKENTSExELTE2ODgpLlxuICAvLyBtdWx0aXBsaWVyIGlzIGFuIGY2NCDigJQgc3RyaW5naWZ5IGZvciB0aGUgZXhhY3QtZGVjaW1hbCBjb250cmFjdCB0aGUgY29uc3VtZXJzIHVzZS5cbiAgY29uc3Qgc2NhbGVkVWkgPSBnZXRTY2FsZWRVaUFtb3VudENvbmZpZyhtaW50SW5mbyk7XG4gIGlmIChzY2FsZWRVaSkge1xuICAgIGV4dGVuc2lvbnMuc2NhbGVkVWlBbW91bnQgPSB7IGluaXRpYWxNdWx0aXBsaWVyOiBzY2FsZWRVaS5tdWx0aXBsaWVyLnRvU3RyaW5nKCkgfTtcbiAgfVxuXG4gIGlmIChPYmplY3QudmFsdWVzKGF1dGhvcml0aWVzKS5zb21lKCh2KSA9PiB2ICE9PSB1bmRlZmluZWQpKSB7XG4gICAgZXh0ZW5zaW9ucy5hdXRob3JpdGllcyA9IGF1dGhvcml0aWVzO1xuICB9XG5cbiAgcmV0dXJuIHsgZGV0ZWN0ZWRUeXBlTmFtZXMsIGV4dGVuc2lvbnMgfTtcbn1cblxuLyoqIEZldGNoIGEgVG9rZW4tMjAyMiBtaW50IGFuZCBwYXJzZSBpdHMgZXh0ZW5zaW9ucy4gVXNlcyBgZmluYWxpemVkYCBjb21taXRtZW50IHJ1bGVzLiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRNaW50RXh0ZW5zaW9ucyhcbiAgY29ubmVjdGlvbjogQ29ubmVjdGlvbixcbiAgbWludDogc3RyaW5nIHwgUHVibGljS2V5LFxuICBjb21taXRtZW50OiBDb21taXRtZW50ID0gJ2ZpbmFsaXplZCdcbik6IFByb21pc2U8TWludEV4dGVuc2lvblJlYWRSZXN1bHQ+IHtcbiAgY29uc3QgbWludFB1YmtleSA9IHR5cGVvZiBtaW50ID09PSAnc3RyaW5nJyA/IG5ldyBQdWJsaWNLZXkobWludCkgOiBtaW50O1xuICBjb25zdCBtaW50SW5mbyA9IGF3YWl0IGdldE1pbnQoY29ubmVjdGlvbiwgbWludFB1YmtleSwgY29tbWl0bWVudCwgVE9LRU5fMjAyMl9QUk9HUkFNX0lEKTtcbiAgcmV0dXJuIHBhcnNlTWludEV4dGVuc2lvbnMobWludEluZm8pO1xufVxuIl19
@@ -1,7 +1,7 @@
1
1
  import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
2
  import { TransactionType } from '@bitgo-beta/sdk-core';
3
3
  import { Transaction } from './transaction';
4
- import { TokenAssociateRecipient } from './iface';
4
+ import { ExtraAccountMeta, PermissionlessThawIdempotent, TokenAssociateRecipient } from './iface';
5
5
  import { TransactionBuilder } from './transactionBuilder';
6
6
  export interface SendParams {
7
7
  address: string;
@@ -14,7 +14,33 @@ export interface SendParams {
14
14
  export declare class TokenTransferBuilder extends TransactionBuilder {
15
15
  private _sendParams;
16
16
  private _createAtaParams;
17
+ private _transferHookAccounts?;
18
+ private _permissionlessThaw?;
17
19
  constructor(_coinConfig: Readonly<CoinConfig>);
20
+ /**
21
+ * Set the resolved sRFC-37 Token ACL permissionless-thaw params for this transfer.
22
+ *
23
+ * These must be resolved live by the caller (e.g. via `Sol.resolvePermissionlessThaw`) since
24
+ * builders remain offline and never perform RPC. When set, the built transaction bundles a
25
+ * `PermissionlessThawIdempotent` instruction after any ATA creation and before the transfer, so
26
+ * a freshly created (frozen) allowlist/blocklist token account is thawed atomically with the
27
+ * transfer — all-or-nothing.
28
+ *
29
+ * @param {PermissionlessThawIdempotent['params']} params - resolved thaw params
30
+ * @returns {TokenTransferBuilder} This transaction builder
31
+ */
32
+ permissionlessThaw(params: PermissionlessThawIdempotent['params']): this;
33
+ /**
34
+ * Set the resolved Token-2022 Transfer Hook extra account metas for this transfer.
35
+ *
36
+ * These must be resolved live by the caller (e.g. via `Sol.resolveTransferHookAccounts`)
37
+ * since builders remain offline and never perform RPC. The order is significant and
38
+ * must match the hook's ExtraAccountMetaList.
39
+ *
40
+ * @param {ExtraAccountMeta[]} metas - resolved extra account metas, in hook order
41
+ * @returns {TokenTransferBuilder} This transaction builder
42
+ */
43
+ transferHookAccounts(metas: ExtraAccountMeta[]): this;
18
44
  protected get transactionType(): TransactionType;
19
45
  initBuilder(tx: Transaction): void;
20
46
  /**
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenTransferBuilder.d.ts","sourceRoot":"","sources":["../../../../src/lib/tokenTransferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAyB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAU5C,OAAO,EAEL,gBAAgB,EAChB,4BAA4B,EAC5B,uBAAuB,EAGxB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID,qBAAa,oBAAqB,SAAQ,kBAAkB;IAC1D,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,gBAAgB,CAA4B;IACpD,OAAO,CAAC,qBAAqB,CAAC,CAAqB;IACnD,OAAO,CAAC,mBAAmB,CAAC,CAAyC;gBAEzD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C;;;;;;;;;;;OAWG;IACH,kBAAkB,CAAC,MAAM,EAAE,4BAA4B,CAAC,QAAQ,CAAC,GAAG,IAAI;IAKxE;;;;;;;;;OASG;IACH,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,EAAE,GAAG,IAAI;IAKrD,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IA6BlC;;;;;;;;OAQG;IACH,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE,UAAU,GAAG,IAAI;IAa9F;;;;;;OAMG;IACH,4BAA4B,CAAC,SAAS,EAAE,uBAAuB,GAAG,IAAI;IAmBtE,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;CA8G5D"}