@across-protocol/sdk 4.3.111-alpha.3 → 4.3.111

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 (566) hide show
  1. package/dist/cjs/addressAggregator/adapters/abstract.js +64 -50
  2. package/dist/cjs/addressAggregator/adapters/abstract.js.map +1 -1
  3. package/dist/cjs/addressAggregator/adapters/bybit.js +29 -16
  4. package/dist/cjs/addressAggregator/adapters/bybit.js.map +1 -1
  5. package/dist/cjs/addressAggregator/adapters/env.js +15 -11
  6. package/dist/cjs/addressAggregator/adapters/env.js.map +1 -1
  7. package/dist/cjs/addressAggregator/adapters/file.js +45 -32
  8. package/dist/cjs/addressAggregator/adapters/file.js.map +1 -1
  9. package/dist/cjs/addressAggregator/adapters/index.js +1 -1
  10. package/dist/cjs/addressAggregator/adapters/risklabs.js +36 -22
  11. package/dist/cjs/addressAggregator/adapters/risklabs.js.map +1 -1
  12. package/dist/cjs/addressAggregator/index.js +87 -57
  13. package/dist/cjs/addressAggregator/index.js.map +1 -1
  14. package/dist/cjs/apiClient/abstractClient.js +8 -9
  15. package/dist/cjs/apiClient/abstractClient.js.map +1 -1
  16. package/dist/cjs/apiClient/index.js +1 -1
  17. package/dist/cjs/apiClient/mockedClient.js +29 -23
  18. package/dist/cjs/apiClient/mockedClient.js.map +1 -1
  19. package/dist/cjs/apiClient/productionClient.js +103 -65
  20. package/dist/cjs/apiClient/productionClient.js.map +1 -1
  21. package/dist/cjs/arch/evm/BlockUtils.js +208 -122
  22. package/dist/cjs/arch/evm/BlockUtils.js.map +1 -1
  23. package/dist/cjs/arch/evm/MessageUtils.js +1 -1
  24. package/dist/cjs/arch/evm/MessageUtils.js.map +1 -1
  25. package/dist/cjs/arch/evm/SpokeUtils.js +288 -134
  26. package/dist/cjs/arch/evm/SpokeUtils.js.map +1 -1
  27. package/dist/cjs/arch/evm/index.js +1 -1
  28. package/dist/cjs/arch/evm/utils/index.js +1 -1
  29. package/dist/cjs/arch/evm/utils/wait.js +49 -38
  30. package/dist/cjs/arch/evm/utils/wait.js.map +1 -1
  31. package/dist/cjs/arch/index.js +1 -1
  32. package/dist/cjs/arch/svm/BlockUtils.js +158 -102
  33. package/dist/cjs/arch/svm/BlockUtils.js.map +1 -1
  34. package/dist/cjs/arch/svm/MessageUtils.js +2 -2
  35. package/dist/cjs/arch/svm/MessageUtils.js.map +1 -1
  36. package/dist/cjs/arch/svm/SpokeUtils.js +1147 -708
  37. package/dist/cjs/arch/svm/SpokeUtils.js.map +1 -1
  38. package/dist/cjs/arch/svm/encoders.js +1 -1
  39. package/dist/cjs/arch/svm/encoders.js.map +1 -1
  40. package/dist/cjs/arch/svm/eventsClient.js +236 -174
  41. package/dist/cjs/arch/svm/eventsClient.js.map +1 -1
  42. package/dist/cjs/arch/svm/index.js +1 -1
  43. package/dist/cjs/arch/svm/provider.js +3 -3
  44. package/dist/cjs/arch/svm/provider.js.map +1 -1
  45. package/dist/cjs/arch/svm/utils.js +355 -166
  46. package/dist/cjs/arch/svm/utils.js.map +1 -1
  47. package/dist/cjs/caching/Arweave/ArweaveClient.js +246 -168
  48. package/dist/cjs/caching/Arweave/ArweaveClient.js.map +1 -1
  49. package/dist/cjs/caching/Arweave/index.js +1 -1
  50. package/dist/cjs/caching/IPFS/PinataIPFSClient.js +49 -40
  51. package/dist/cjs/caching/IPFS/PinataIPFSClient.js.map +1 -1
  52. package/dist/cjs/caching/IPFS/index.js +1 -1
  53. package/dist/cjs/caching/Memory/MemoryCacheClient.js +18 -13
  54. package/dist/cjs/caching/Memory/MemoryCacheClient.js.map +1 -1
  55. package/dist/cjs/caching/Memory/index.js +1 -1
  56. package/dist/cjs/caching/index.js +1 -1
  57. package/dist/cjs/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js +381 -302
  58. package/dist/cjs/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js.map +1 -1
  59. package/dist/cjs/clients/AcrossConfigStoreClient/index.js +1 -1
  60. package/dist/cjs/clients/BaseAbstractClient.js +83 -58
  61. package/dist/cjs/clients/BaseAbstractClient.js.map +1 -1
  62. package/dist/cjs/clients/BundleDataClient/BundleDataClient.js +900 -709
  63. package/dist/cjs/clients/BundleDataClient/BundleDataClient.js.map +1 -1
  64. package/dist/cjs/clients/BundleDataClient/index.js +1 -1
  65. package/dist/cjs/clients/BundleDataClient/utils/DataworkerUtils.js +128 -95
  66. package/dist/cjs/clients/BundleDataClient/utils/DataworkerUtils.js.map +1 -1
  67. package/dist/cjs/clients/BundleDataClient/utils/FillUtils.js +53 -48
  68. package/dist/cjs/clients/BundleDataClient/utils/FillUtils.js.map +1 -1
  69. package/dist/cjs/clients/BundleDataClient/utils/MerkleTreeUtils.js +8 -10
  70. package/dist/cjs/clients/BundleDataClient/utils/MerkleTreeUtils.js.map +1 -1
  71. package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js +90 -67
  72. package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
  73. package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.js +24 -46
  74. package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.js.map +1 -1
  75. package/dist/cjs/clients/BundleDataClient/utils/index.js +1 -1
  76. package/dist/cjs/clients/HubPoolClient.js +708 -526
  77. package/dist/cjs/clients/HubPoolClient.js.map +1 -1
  78. package/dist/cjs/clients/SpokePoolClient/EVMSpokePoolClient.js +179 -133
  79. package/dist/cjs/clients/SpokePoolClient/EVMSpokePoolClient.js.map +1 -1
  80. package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.js +183 -124
  81. package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.js.map +1 -1
  82. package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js +389 -357
  83. package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
  84. package/dist/cjs/clients/SpokePoolClient/SpokePoolClientManager.js +8 -9
  85. package/dist/cjs/clients/SpokePoolClient/SpokePoolClientManager.js.map +1 -1
  86. package/dist/cjs/clients/SpokePoolClient/index.js +3 -3
  87. package/dist/cjs/clients/SpokePoolClient/index.js.map +1 -1
  88. package/dist/cjs/clients/index.js +1 -1
  89. package/dist/cjs/clients/mocks/MockConfigStoreClient.js +67 -58
  90. package/dist/cjs/clients/mocks/MockConfigStoreClient.js.map +1 -1
  91. package/dist/cjs/clients/mocks/MockEvents.js +52 -47
  92. package/dist/cjs/clients/mocks/MockEvents.js.map +1 -1
  93. package/dist/cjs/clients/mocks/MockHubPoolClient.js +185 -142
  94. package/dist/cjs/clients/mocks/MockHubPoolClient.js.map +1 -1
  95. package/dist/cjs/clients/mocks/MockSpokePoolClient.js +192 -208
  96. package/dist/cjs/clients/mocks/MockSpokePoolClient.js.map +1 -1
  97. package/dist/cjs/clients/mocks/MockSvmCpiEventsClient.js +143 -140
  98. package/dist/cjs/clients/mocks/MockSvmCpiEventsClient.js.map +1 -1
  99. package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.js +73 -57
  100. package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.js.map +1 -1
  101. package/dist/cjs/clients/mocks/index.js +1 -1
  102. package/dist/cjs/coingecko/Coingecko.js +437 -285
  103. package/dist/cjs/coingecko/Coingecko.js.map +1 -1
  104. package/dist/cjs/coingecko/index.js +1 -1
  105. package/dist/cjs/constants.js +30 -23
  106. package/dist/cjs/constants.js.map +1 -1
  107. package/dist/cjs/contracts/acrossConfigStore.js +48 -27
  108. package/dist/cjs/contracts/acrossConfigStore.js.map +1 -1
  109. package/dist/cjs/contracts/hubPool.js +20 -36
  110. package/dist/cjs/contracts/hubPool.js.map +1 -1
  111. package/dist/cjs/contracts/index.js +1 -1
  112. package/dist/cjs/contracts/utils.js +8 -6
  113. package/dist/cjs/contracts/utils.js.map +1 -1
  114. package/dist/cjs/gasPriceOracle/adapters/arbitrum.js +16 -7
  115. package/dist/cjs/gasPriceOracle/adapters/arbitrum.js.map +1 -1
  116. package/dist/cjs/gasPriceOracle/adapters/ethereum.js +45 -26
  117. package/dist/cjs/gasPriceOracle/adapters/ethereum.js.map +1 -1
  118. package/dist/cjs/gasPriceOracle/adapters/linea-viem.js +28 -16
  119. package/dist/cjs/gasPriceOracle/adapters/linea-viem.js.map +1 -1
  120. package/dist/cjs/gasPriceOracle/adapters/polygon.js +112 -73
  121. package/dist/cjs/gasPriceOracle/adapters/polygon.js.map +1 -1
  122. package/dist/cjs/gasPriceOracle/adapters/solana.js +33 -20
  123. package/dist/cjs/gasPriceOracle/adapters/solana.js.map +1 -1
  124. package/dist/cjs/gasPriceOracle/oracle.js +104 -77
  125. package/dist/cjs/gasPriceOracle/oracle.js.map +1 -1
  126. package/dist/cjs/gasPriceOracle/types.js +3 -3
  127. package/dist/cjs/gasPriceOracle/types.js.map +1 -1
  128. package/dist/cjs/gasPriceOracle/util.js +8 -8
  129. package/dist/cjs/gasPriceOracle/util.js.map +1 -1
  130. package/dist/cjs/index.js +1 -1
  131. package/dist/cjs/interfaces/index.js +1 -1
  132. package/dist/cjs/lpFeeCalculator/index.js +1 -1
  133. package/dist/cjs/lpFeeCalculator/lpFeeCalculator.js +35 -33
  134. package/dist/cjs/lpFeeCalculator/lpFeeCalculator.js.map +1 -1
  135. package/dist/cjs/lpFeeCalculator/rateModel.js +9 -7
  136. package/dist/cjs/lpFeeCalculator/rateModel.js.map +1 -1
  137. package/dist/cjs/merkleDistributor/MerkleDistributor.js +18 -20
  138. package/dist/cjs/merkleDistributor/MerkleDistributor.js.map +1 -1
  139. package/dist/cjs/merkleDistributor/index.js +1 -1
  140. package/dist/cjs/merkleDistributor/model/index.js +1 -1
  141. package/dist/cjs/pool/TransactionManager.js +100 -45
  142. package/dist/cjs/pool/TransactionManager.js.map +1 -1
  143. package/dist/cjs/pool/index.js +1 -1
  144. package/dist/cjs/pool/poolClient.js +731 -464
  145. package/dist/cjs/pool/poolClient.js.map +1 -1
  146. package/dist/cjs/pool/uma/across/index.js +1 -1
  147. package/dist/cjs/pool/uma/across/transactionManager.js +100 -45
  148. package/dist/cjs/pool/uma/across/transactionManager.js.map +1 -1
  149. package/dist/cjs/pool/uma/clients/erc20/client.js +16 -18
  150. package/dist/cjs/pool/uma/clients/erc20/client.js.map +1 -1
  151. package/dist/cjs/pool/uma/clients/erc20/index.js +1 -1
  152. package/dist/cjs/pool/uma/clients/index.js +1 -1
  153. package/dist/cjs/pool/uma/index.js +1 -1
  154. package/dist/cjs/pool/uma/oracle/index.js +1 -1
  155. package/dist/cjs/pool/uma/oracle/utils.js +5 -4
  156. package/dist/cjs/pool/uma/oracle/utils.js.map +1 -1
  157. package/dist/cjs/pool/uma/utils.js +30 -11
  158. package/dist/cjs/pool/uma/utils.js.map +1 -1
  159. package/dist/cjs/priceClient/adapters/acrossApi.js +39 -22
  160. package/dist/cjs/priceClient/adapters/acrossApi.js.map +1 -1
  161. package/dist/cjs/priceClient/adapters/baseAdapter.js +73 -49
  162. package/dist/cjs/priceClient/adapters/baseAdapter.js.map +1 -1
  163. package/dist/cjs/priceClient/adapters/coingecko.js +61 -34
  164. package/dist/cjs/priceClient/adapters/coingecko.js.map +1 -1
  165. package/dist/cjs/priceClient/adapters/default.js +31 -16
  166. package/dist/cjs/priceClient/adapters/default.js.map +1 -1
  167. package/dist/cjs/priceClient/adapters/defiLlama.js +74 -40
  168. package/dist/cjs/priceClient/adapters/defiLlama.js.map +1 -1
  169. package/dist/cjs/priceClient/adapters/index.js +1 -1
  170. package/dist/cjs/priceClient/index.js +1 -1
  171. package/dist/cjs/priceClient/priceClient.js +159 -110
  172. package/dist/cjs/priceClient/priceClient.js.map +1 -1
  173. package/dist/cjs/providers/alchemy.js +19 -17
  174. package/dist/cjs/providers/alchemy.js.map +1 -1
  175. package/dist/cjs/providers/cachedProvider.js +129 -88
  176. package/dist/cjs/providers/cachedProvider.js.map +1 -1
  177. package/dist/cjs/providers/drpc.js +11 -9
  178. package/dist/cjs/providers/drpc.js.map +1 -1
  179. package/dist/cjs/providers/index.js +1 -1
  180. package/dist/cjs/providers/infura.js +12 -10
  181. package/dist/cjs/providers/infura.js.map +1 -1
  182. package/dist/cjs/providers/mocks/MockCachedSolanaRpcFactory.js +15 -7
  183. package/dist/cjs/providers/mocks/MockCachedSolanaRpcFactory.js.map +1 -1
  184. package/dist/cjs/providers/mocks/MockRateLimitedSolanaRpcFactory.js +14 -6
  185. package/dist/cjs/providers/mocks/MockRateLimitedSolanaRpcFactory.js.map +1 -1
  186. package/dist/cjs/providers/mocks/MockRetrySolanaRpcFactory.js +15 -7
  187. package/dist/cjs/providers/mocks/MockRetrySolanaRpcFactory.js.map +1 -1
  188. package/dist/cjs/providers/mocks/MockSolanaRpcFactory.js +66 -42
  189. package/dist/cjs/providers/mocks/MockSolanaRpcFactory.js.map +1 -1
  190. package/dist/cjs/providers/mocks/index.js +1 -1
  191. package/dist/cjs/providers/mocks/mockEthersProvider.js +31 -29
  192. package/dist/cjs/providers/mocks/mockEthersProvider.js.map +1 -1
  193. package/dist/cjs/providers/quicknode.js +21 -19
  194. package/dist/cjs/providers/quicknode.js.map +1 -1
  195. package/dist/cjs/providers/rateLimitedProvider.js +79 -64
  196. package/dist/cjs/providers/rateLimitedProvider.js.map +1 -1
  197. package/dist/cjs/providers/retryProvider.js +246 -163
  198. package/dist/cjs/providers/retryProvider.js.map +1 -1
  199. package/dist/cjs/providers/solana/baseRpcFactories.js +18 -14
  200. package/dist/cjs/providers/solana/baseRpcFactories.js.map +1 -1
  201. package/dist/cjs/providers/solana/cachedRpcFactory.js +112 -70
  202. package/dist/cjs/providers/solana/cachedRpcFactory.js.map +1 -1
  203. package/dist/cjs/providers/solana/defaultRpcFactory.js +15 -8
  204. package/dist/cjs/providers/solana/defaultRpcFactory.js.map +1 -1
  205. package/dist/cjs/providers/solana/index.js +1 -1
  206. package/dist/cjs/providers/solana/quorumFallbackRpcFactory.js +191 -135
  207. package/dist/cjs/providers/solana/quorumFallbackRpcFactory.js.map +1 -1
  208. package/dist/cjs/providers/solana/rateLimitedRpcFactory.js +90 -67
  209. package/dist/cjs/providers/solana/rateLimitedRpcFactory.js.map +1 -1
  210. package/dist/cjs/providers/solana/retryRpcFactory.js +79 -52
  211. package/dist/cjs/providers/solana/retryRpcFactory.js.map +1 -1
  212. package/dist/cjs/providers/solana/utils.js +2 -2
  213. package/dist/cjs/providers/solana/utils.js.map +1 -1
  214. package/dist/cjs/providers/speedProvider.js +53 -31
  215. package/dist/cjs/providers/speedProvider.js.map +1 -1
  216. package/dist/cjs/providers/types.js +1 -1
  217. package/dist/cjs/providers/types.js.map +1 -1
  218. package/dist/cjs/providers/utils.js +28 -26
  219. package/dist/cjs/providers/utils.js.map +1 -1
  220. package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.js +162 -108
  221. package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.js.map +1 -1
  222. package/dist/cjs/relayFeeCalculator/chain-queries/customGasToken.js +26 -14
  223. package/dist/cjs/relayFeeCalculator/chain-queries/customGasToken.js.map +1 -1
  224. package/dist/cjs/relayFeeCalculator/chain-queries/factory.js +29 -20
  225. package/dist/cjs/relayFeeCalculator/chain-queries/factory.js.map +1 -1
  226. package/dist/cjs/relayFeeCalculator/chain-queries/index.js +1 -1
  227. package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.js +137 -88
  228. package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -1
  229. package/dist/cjs/relayFeeCalculator/index.js +1 -1
  230. package/dist/cjs/relayFeeCalculator/relayFeeCalculator.js +297 -199
  231. package/dist/cjs/relayFeeCalculator/relayFeeCalculator.js.map +1 -1
  232. package/dist/cjs/typeguards/error.js +7 -5
  233. package/dist/cjs/typeguards/error.js.map +1 -1
  234. package/dist/cjs/typeguards/index.js +1 -1
  235. package/dist/cjs/utils/AddressUtils.js +144 -117
  236. package/dist/cjs/utils/AddressUtils.js.map +1 -1
  237. package/dist/cjs/utils/ArrayUtils.js +78 -21
  238. package/dist/cjs/utils/ArrayUtils.js.map +1 -1
  239. package/dist/cjs/utils/BigNumberUtils.js +10 -9
  240. package/dist/cjs/utils/BigNumberUtils.js.map +1 -1
  241. package/dist/cjs/utils/BlockExplorerUtils.js +30 -26
  242. package/dist/cjs/utils/BlockExplorerUtils.js.map +1 -1
  243. package/dist/cjs/utils/BlockFinder.js +5 -2
  244. package/dist/cjs/utils/BlockFinder.js.map +1 -1
  245. package/dist/cjs/utils/BlockUtils.js +41 -24
  246. package/dist/cjs/utils/BlockUtils.js.map +1 -1
  247. package/dist/cjs/utils/BundleUtils.js +24 -21
  248. package/dist/cjs/utils/BundleUtils.js.map +1 -1
  249. package/dist/cjs/utils/CCTPUtils.js +126 -62
  250. package/dist/cjs/utils/CCTPUtils.js.map +1 -1
  251. package/dist/cjs/utils/CachingUtils.js +42 -20
  252. package/dist/cjs/utils/CachingUtils.js.map +1 -1
  253. package/dist/cjs/utils/ContractUtils.js +5 -5
  254. package/dist/cjs/utils/ContractUtils.js.map +1 -1
  255. package/dist/cjs/utils/DepositUtils.js +99 -122
  256. package/dist/cjs/utils/DepositUtils.js.map +1 -1
  257. package/dist/cjs/utils/EventUtils.js +70 -49
  258. package/dist/cjs/utils/EventUtils.js.map +1 -1
  259. package/dist/cjs/utils/FormattingUtils.js +32 -26
  260. package/dist/cjs/utils/FormattingUtils.js.map +1 -1
  261. package/dist/cjs/utils/HyperLiquidUtils.js +23 -10
  262. package/dist/cjs/utils/HyperLiquidUtils.js.map +1 -1
  263. package/dist/cjs/utils/IPFSUtils.js +34 -16
  264. package/dist/cjs/utils/IPFSUtils.js.map +1 -1
  265. package/dist/cjs/utils/JSONUtils.js +6 -6
  266. package/dist/cjs/utils/JSONUtils.js.map +1 -1
  267. package/dist/cjs/utils/LogUtils.js +12 -10
  268. package/dist/cjs/utils/LogUtils.js.map +1 -1
  269. package/dist/cjs/utils/Multicall.js +115 -56
  270. package/dist/cjs/utils/Multicall.js.map +1 -1
  271. package/dist/cjs/utils/NetworkUtils.js +28 -12
  272. package/dist/cjs/utils/NetworkUtils.js.map +1 -1
  273. package/dist/cjs/utils/NumberUtils.js +3 -1
  274. package/dist/cjs/utils/NumberUtils.js.map +1 -1
  275. package/dist/cjs/utils/ObjectUtils.js +41 -27
  276. package/dist/cjs/utils/ObjectUtils.js.map +1 -1
  277. package/dist/cjs/utils/Profiler.js +83 -80
  278. package/dist/cjs/utils/Profiler.js.map +1 -1
  279. package/dist/cjs/utils/ReviverUtils.js +9 -5
  280. package/dist/cjs/utils/ReviverUtils.js.map +1 -1
  281. package/dist/cjs/utils/SpokeUtils.js +84 -84
  282. package/dist/cjs/utils/SpokeUtils.js.map +1 -1
  283. package/dist/cjs/utils/TokenUtils.js +64 -41
  284. package/dist/cjs/utils/TokenUtils.js.map +1 -1
  285. package/dist/cjs/utils/TypeGuards.js +1 -1
  286. package/dist/cjs/utils/TypeGuards.js.map +1 -1
  287. package/dist/cjs/utils/ValidatorUtils.js +7 -7
  288. package/dist/cjs/utils/ValidatorUtils.js.map +1 -1
  289. package/dist/cjs/utils/abi/contracts/index.js +1 -1
  290. package/dist/cjs/utils/abi/index.js +22 -12
  291. package/dist/cjs/utils/abi/index.js.map +1 -1
  292. package/dist/cjs/utils/abi/typechain/factories/Multicall3__factory.js +12 -9
  293. package/dist/cjs/utils/abi/typechain/factories/Multicall3__factory.js.map +1 -1
  294. package/dist/cjs/utils/abi/typechain/index.js +1 -1
  295. package/dist/cjs/utils/common.js +53 -40
  296. package/dist/cjs/utils/common.js.map +1 -1
  297. package/dist/cjs/utils/index.js +1 -1
  298. package/dist/esm/addressAggregator/adapters/abstract.js +64 -48
  299. package/dist/esm/addressAggregator/adapters/abstract.js.map +1 -1
  300. package/dist/esm/addressAggregator/adapters/bybit.js +29 -15
  301. package/dist/esm/addressAggregator/adapters/bybit.js.map +1 -1
  302. package/dist/esm/addressAggregator/adapters/env.js +14 -9
  303. package/dist/esm/addressAggregator/adapters/env.js.map +1 -1
  304. package/dist/esm/addressAggregator/adapters/file.js +43 -29
  305. package/dist/esm/addressAggregator/adapters/file.js.map +1 -1
  306. package/dist/esm/addressAggregator/adapters/risklabs.js +35 -20
  307. package/dist/esm/addressAggregator/adapters/risklabs.js.map +1 -1
  308. package/dist/esm/addressAggregator/index.js +83 -52
  309. package/dist/esm/addressAggregator/index.js.map +1 -1
  310. package/dist/esm/addressAggregator/types.js +1 -1
  311. package/dist/esm/addressAggregator/types.js.map +1 -1
  312. package/dist/esm/apiClient/abstractClient.js +9 -15
  313. package/dist/esm/apiClient/abstractClient.js.map +1 -1
  314. package/dist/esm/apiClient/mockedClient.js +26 -21
  315. package/dist/esm/apiClient/mockedClient.js.map +1 -1
  316. package/dist/esm/apiClient/productionClient.js +101 -61
  317. package/dist/esm/apiClient/productionClient.js.map +1 -1
  318. package/dist/esm/arch/evm/BlockUtils.js +217 -139
  319. package/dist/esm/arch/evm/BlockUtils.js.map +1 -1
  320. package/dist/esm/arch/evm/SpokeUtils.js +289 -146
  321. package/dist/esm/arch/evm/SpokeUtils.js.map +1 -1
  322. package/dist/esm/arch/evm/utils/wait.js +46 -34
  323. package/dist/esm/arch/evm/utils/wait.js.map +1 -1
  324. package/dist/esm/arch/svm/BlockUtils.js +166 -118
  325. package/dist/esm/arch/svm/BlockUtils.js.map +1 -1
  326. package/dist/esm/arch/svm/SpokeUtils.js +1150 -738
  327. package/dist/esm/arch/svm/SpokeUtils.js.map +1 -1
  328. package/dist/esm/arch/svm/constants.js +1 -1
  329. package/dist/esm/arch/svm/constants.js.map +1 -1
  330. package/dist/esm/arch/svm/eventsClient.js +232 -172
  331. package/dist/esm/arch/svm/eventsClient.js.map +1 -1
  332. package/dist/esm/arch/svm/provider.js +1 -1
  333. package/dist/esm/arch/svm/provider.js.map +1 -1
  334. package/dist/esm/arch/svm/utils.js +345 -155
  335. package/dist/esm/arch/svm/utils.js.map +1 -1
  336. package/dist/esm/caching/Arweave/ArweaveClient.js +256 -182
  337. package/dist/esm/caching/Arweave/ArweaveClient.js.map +1 -1
  338. package/dist/esm/caching/IPFS/PinataIPFSClient.js +48 -47
  339. package/dist/esm/caching/IPFS/PinataIPFSClient.js.map +1 -1
  340. package/dist/esm/caching/Memory/MemoryCacheClient.js +19 -13
  341. package/dist/esm/caching/Memory/MemoryCacheClient.js.map +1 -1
  342. package/dist/esm/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js +408 -333
  343. package/dist/esm/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js.map +1 -1
  344. package/dist/esm/clients/BaseAbstractClient.js +92 -66
  345. package/dist/esm/clients/BaseAbstractClient.js.map +1 -1
  346. package/dist/esm/clients/BundleDataClient/BundleDataClient.js +1054 -927
  347. package/dist/esm/clients/BundleDataClient/BundleDataClient.js.map +1 -1
  348. package/dist/esm/clients/BundleDataClient/utils/DataworkerUtils.js +131 -102
  349. package/dist/esm/clients/BundleDataClient/utils/DataworkerUtils.js.map +1 -1
  350. package/dist/esm/clients/BundleDataClient/utils/FillUtils.js +59 -57
  351. package/dist/esm/clients/BundleDataClient/utils/FillUtils.js.map +1 -1
  352. package/dist/esm/clients/BundleDataClient/utils/MerkleTreeUtils.js +5 -7
  353. package/dist/esm/clients/BundleDataClient/utils/MerkleTreeUtils.js.map +1 -1
  354. package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js +94 -75
  355. package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
  356. package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.js +23 -45
  357. package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.js.map +1 -1
  358. package/dist/esm/clients/HubPoolClient.js +740 -581
  359. package/dist/esm/clients/HubPoolClient.js.map +1 -1
  360. package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.js +178 -133
  361. package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.js.map +1 -1
  362. package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.js +183 -126
  363. package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.js.map +1 -1
  364. package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js +399 -372
  365. package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
  366. package/dist/esm/clients/SpokePoolClient/SpokePoolClientManager.js +9 -9
  367. package/dist/esm/clients/SpokePoolClient/SpokePoolClientManager.js.map +1 -1
  368. package/dist/esm/clients/SpokePoolClient/index.js +2 -2
  369. package/dist/esm/clients/SpokePoolClient/index.js.map +1 -1
  370. package/dist/esm/clients/SpokePoolClient/types.js +2 -2
  371. package/dist/esm/clients/SpokePoolClient/types.js.map +1 -1
  372. package/dist/esm/clients/mocks/MockConfigStoreClient.js +64 -53
  373. package/dist/esm/clients/mocks/MockConfigStoreClient.js.map +1 -1
  374. package/dist/esm/clients/mocks/MockEvents.js +49 -42
  375. package/dist/esm/clients/mocks/MockEvents.js.map +1 -1
  376. package/dist/esm/clients/mocks/MockHubPoolClient.js +182 -138
  377. package/dist/esm/clients/mocks/MockHubPoolClient.js.map +1 -1
  378. package/dist/esm/clients/mocks/MockSpokePoolClient.js +188 -202
  379. package/dist/esm/clients/mocks/MockSpokePoolClient.js.map +1 -1
  380. package/dist/esm/clients/mocks/MockSvmCpiEventsClient.js +132 -127
  381. package/dist/esm/clients/mocks/MockSvmCpiEventsClient.js.map +1 -1
  382. package/dist/esm/clients/mocks/MockSvmSpokePoolClient.js +69 -53
  383. package/dist/esm/clients/mocks/MockSvmSpokePoolClient.js.map +1 -1
  384. package/dist/esm/coingecko/Coingecko.js +443 -298
  385. package/dist/esm/coingecko/Coingecko.js.map +1 -1
  386. package/dist/esm/constants.js +47 -40
  387. package/dist/esm/constants.js.map +1 -1
  388. package/dist/esm/contracts/acrossConfigStore.js +46 -24
  389. package/dist/esm/contracts/acrossConfigStore.js.map +1 -1
  390. package/dist/esm/contracts/hubPool.js +18 -34
  391. package/dist/esm/contracts/hubPool.js.map +1 -1
  392. package/dist/esm/contracts/utils.js +5 -3
  393. package/dist/esm/contracts/utils.js.map +1 -1
  394. package/dist/esm/gasPriceOracle/adapters/arbitrum.js +14 -6
  395. package/dist/esm/gasPriceOracle/adapters/arbitrum.js.map +1 -1
  396. package/dist/esm/gasPriceOracle/adapters/ethereum.js +42 -22
  397. package/dist/esm/gasPriceOracle/adapters/ethereum.js.map +1 -1
  398. package/dist/esm/gasPriceOracle/adapters/linea-viem.js +25 -13
  399. package/dist/esm/gasPriceOracle/adapters/linea-viem.js.map +1 -1
  400. package/dist/esm/gasPriceOracle/adapters/polygon.js +108 -72
  401. package/dist/esm/gasPriceOracle/adapters/polygon.js.map +1 -1
  402. package/dist/esm/gasPriceOracle/adapters/solana.js +31 -22
  403. package/dist/esm/gasPriceOracle/adapters/solana.js.map +1 -1
  404. package/dist/esm/gasPriceOracle/oracle.js +96 -70
  405. package/dist/esm/gasPriceOracle/oracle.js.map +1 -1
  406. package/dist/esm/gasPriceOracle/types.js +2 -2
  407. package/dist/esm/gasPriceOracle/types.js.map +1 -1
  408. package/dist/esm/gasPriceOracle/util.js +4 -4
  409. package/dist/esm/gasPriceOracle/util.js.map +1 -1
  410. package/dist/esm/lpFeeCalculator/lpFeeCalculator.js +33 -30
  411. package/dist/esm/lpFeeCalculator/lpFeeCalculator.js.map +1 -1
  412. package/dist/esm/lpFeeCalculator/rateModel.js +9 -7
  413. package/dist/esm/lpFeeCalculator/rateModel.js.map +1 -1
  414. package/dist/esm/merkleDistributor/MerkleDistributor.js +17 -18
  415. package/dist/esm/merkleDistributor/MerkleDistributor.js.map +1 -1
  416. package/dist/esm/pool/TransactionManager.js +100 -45
  417. package/dist/esm/pool/TransactionManager.js.map +1 -1
  418. package/dist/esm/pool/poolClient.js +740 -479
  419. package/dist/esm/pool/poolClient.js.map +1 -1
  420. package/dist/esm/pool/uma/across/constants.js +2 -2
  421. package/dist/esm/pool/uma/across/constants.js.map +1 -1
  422. package/dist/esm/pool/uma/across/transactionManager.js +100 -45
  423. package/dist/esm/pool/uma/across/transactionManager.js.map +1 -1
  424. package/dist/esm/pool/uma/clients/erc20/client.js +13 -15
  425. package/dist/esm/pool/uma/clients/erc20/client.js.map +1 -1
  426. package/dist/esm/pool/uma/oracle/utils.js +3 -2
  427. package/dist/esm/pool/uma/oracle/utils.js.map +1 -1
  428. package/dist/esm/pool/uma/utils.js +28 -9
  429. package/dist/esm/pool/uma/utils.js.map +1 -1
  430. package/dist/esm/priceClient/adapters/acrossApi.js +40 -21
  431. package/dist/esm/priceClient/adapters/acrossApi.js.map +1 -1
  432. package/dist/esm/priceClient/adapters/baseAdapter.js +72 -46
  433. package/dist/esm/priceClient/adapters/baseAdapter.js.map +1 -1
  434. package/dist/esm/priceClient/adapters/coingecko.js +61 -33
  435. package/dist/esm/priceClient/adapters/coingecko.js.map +1 -1
  436. package/dist/esm/priceClient/adapters/default.js +31 -15
  437. package/dist/esm/priceClient/adapters/default.js.map +1 -1
  438. package/dist/esm/priceClient/adapters/defiLlama.js +73 -38
  439. package/dist/esm/priceClient/adapters/defiLlama.js.map +1 -1
  440. package/dist/esm/priceClient/priceClient.js +158 -109
  441. package/dist/esm/priceClient/priceClient.js.map +1 -1
  442. package/dist/esm/providers/alchemy.js +18 -16
  443. package/dist/esm/providers/alchemy.js.map +1 -1
  444. package/dist/esm/providers/cachedProvider.js +134 -99
  445. package/dist/esm/providers/cachedProvider.js.map +1 -1
  446. package/dist/esm/providers/constants.js +3 -3
  447. package/dist/esm/providers/constants.js.map +1 -1
  448. package/dist/esm/providers/drpc.js +10 -8
  449. package/dist/esm/providers/drpc.js.map +1 -1
  450. package/dist/esm/providers/infura.js +11 -9
  451. package/dist/esm/providers/infura.js.map +1 -1
  452. package/dist/esm/providers/mocks/MockCachedSolanaRpcFactory.js +15 -6
  453. package/dist/esm/providers/mocks/MockCachedSolanaRpcFactory.js.map +1 -1
  454. package/dist/esm/providers/mocks/MockRateLimitedSolanaRpcFactory.js +14 -5
  455. package/dist/esm/providers/mocks/MockRateLimitedSolanaRpcFactory.js.map +1 -1
  456. package/dist/esm/providers/mocks/MockRetrySolanaRpcFactory.js +15 -6
  457. package/dist/esm/providers/mocks/MockRetrySolanaRpcFactory.js.map +1 -1
  458. package/dist/esm/providers/mocks/MockSolanaRpcFactory.js +66 -41
  459. package/dist/esm/providers/mocks/MockSolanaRpcFactory.js.map +1 -1
  460. package/dist/esm/providers/mocks/mockEthersProvider.js +30 -27
  461. package/dist/esm/providers/mocks/mockEthersProvider.js.map +1 -1
  462. package/dist/esm/providers/quicknode.js +20 -18
  463. package/dist/esm/providers/quicknode.js.map +1 -1
  464. package/dist/esm/providers/rateLimitedProvider.js +80 -68
  465. package/dist/esm/providers/rateLimitedProvider.js.map +1 -1
  466. package/dist/esm/providers/retryProvider.js +259 -186
  467. package/dist/esm/providers/retryProvider.js.map +1 -1
  468. package/dist/esm/providers/solana/baseRpcFactories.js +19 -13
  469. package/dist/esm/providers/solana/baseRpcFactories.js.map +1 -1
  470. package/dist/esm/providers/solana/cachedRpcFactory.js +112 -75
  471. package/dist/esm/providers/solana/cachedRpcFactory.js.map +1 -1
  472. package/dist/esm/providers/solana/defaultRpcFactory.js +14 -6
  473. package/dist/esm/providers/solana/defaultRpcFactory.js.map +1 -1
  474. package/dist/esm/providers/solana/quorumFallbackRpcFactory.js +202 -149
  475. package/dist/esm/providers/solana/quorumFallbackRpcFactory.js.map +1 -1
  476. package/dist/esm/providers/solana/rateLimitedRpcFactory.js +90 -70
  477. package/dist/esm/providers/solana/rateLimitedRpcFactory.js.map +1 -1
  478. package/dist/esm/providers/solana/retryRpcFactory.js +74 -50
  479. package/dist/esm/providers/solana/retryRpcFactory.js.map +1 -1
  480. package/dist/esm/providers/solana/utils.js +1 -1
  481. package/dist/esm/providers/solana/utils.js.map +1 -1
  482. package/dist/esm/providers/speedProvider.js +51 -28
  483. package/dist/esm/providers/speedProvider.js.map +1 -1
  484. package/dist/esm/providers/types.js +2 -2
  485. package/dist/esm/providers/types.js.map +1 -1
  486. package/dist/esm/providers/utils.js +20 -17
  487. package/dist/esm/providers/utils.js.map +1 -1
  488. package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.js +152 -98
  489. package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.js.map +1 -1
  490. package/dist/esm/relayFeeCalculator/chain-queries/customGasToken.js +26 -13
  491. package/dist/esm/relayFeeCalculator/chain-queries/customGasToken.js.map +1 -1
  492. package/dist/esm/relayFeeCalculator/chain-queries/factory.js +19 -9
  493. package/dist/esm/relayFeeCalculator/chain-queries/factory.js.map +1 -1
  494. package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js +128 -83
  495. package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -1
  496. package/dist/esm/relayFeeCalculator/relayFeeCalculator.js +299 -211
  497. package/dist/esm/relayFeeCalculator/relayFeeCalculator.js.map +1 -1
  498. package/dist/esm/typeguards/error.js +5 -3
  499. package/dist/esm/typeguards/error.js.map +1 -1
  500. package/dist/esm/utils/AddressUtils.js +147 -115
  501. package/dist/esm/utils/AddressUtils.js.map +1 -1
  502. package/dist/esm/utils/ArrayUtils.js +78 -21
  503. package/dist/esm/utils/ArrayUtils.js.map +1 -1
  504. package/dist/esm/utils/BigNumberUtils.js +12 -11
  505. package/dist/esm/utils/BigNumberUtils.js.map +1 -1
  506. package/dist/esm/utils/BlockExplorerUtils.js +23 -19
  507. package/dist/esm/utils/BlockExplorerUtils.js.map +1 -1
  508. package/dist/esm/utils/BlockFinder.js +6 -2
  509. package/dist/esm/utils/BlockFinder.js.map +1 -1
  510. package/dist/esm/utils/BlockUtils.js +40 -31
  511. package/dist/esm/utils/BlockUtils.js.map +1 -1
  512. package/dist/esm/utils/BundleUtils.js +24 -21
  513. package/dist/esm/utils/BundleUtils.js.map +1 -1
  514. package/dist/esm/utils/CCTPUtils.js +123 -62
  515. package/dist/esm/utils/CCTPUtils.js.map +1 -1
  516. package/dist/esm/utils/CachingUtils.js +38 -17
  517. package/dist/esm/utils/CachingUtils.js.map +1 -1
  518. package/dist/esm/utils/ContractUtils.js +3 -3
  519. package/dist/esm/utils/ContractUtils.js.map +1 -1
  520. package/dist/esm/utils/DepositUtils.js +98 -121
  521. package/dist/esm/utils/DepositUtils.js.map +1 -1
  522. package/dist/esm/utils/EventUtils.js +69 -52
  523. package/dist/esm/utils/EventUtils.js.map +1 -1
  524. package/dist/esm/utils/FormattingUtils.js +26 -20
  525. package/dist/esm/utils/FormattingUtils.js.map +1 -1
  526. package/dist/esm/utils/HyperLiquidUtils.js +22 -8
  527. package/dist/esm/utils/HyperLiquidUtils.js.map +1 -1
  528. package/dist/esm/utils/IPFSUtils.js +35 -16
  529. package/dist/esm/utils/IPFSUtils.js.map +1 -1
  530. package/dist/esm/utils/JSONUtils.js +4 -4
  531. package/dist/esm/utils/JSONUtils.js.map +1 -1
  532. package/dist/esm/utils/LogUtils.js +12 -8
  533. package/dist/esm/utils/LogUtils.js.map +1 -1
  534. package/dist/esm/utils/Multicall.js +110 -50
  535. package/dist/esm/utils/Multicall.js.map +1 -1
  536. package/dist/esm/utils/NetworkUtils.js +28 -12
  537. package/dist/esm/utils/NetworkUtils.js.map +1 -1
  538. package/dist/esm/utils/NumberUtils.js +3 -1
  539. package/dist/esm/utils/NumberUtils.js.map +1 -1
  540. package/dist/esm/utils/ObjectUtils.js +41 -27
  541. package/dist/esm/utils/ObjectUtils.js.map +1 -1
  542. package/dist/esm/utils/Profiler.js +82 -77
  543. package/dist/esm/utils/Profiler.js.map +1 -1
  544. package/dist/esm/utils/ReviverUtils.js +7 -3
  545. package/dist/esm/utils/ReviverUtils.js.map +1 -1
  546. package/dist/esm/utils/SpokeUtils.js +78 -83
  547. package/dist/esm/utils/SpokeUtils.js.map +1 -1
  548. package/dist/esm/utils/TokenUtils.js +57 -33
  549. package/dist/esm/utils/TokenUtils.js.map +1 -1
  550. package/dist/esm/utils/ValidatorUtils.js +4 -4
  551. package/dist/esm/utils/ValidatorUtils.js.map +1 -1
  552. package/dist/esm/utils/abi/index.js +20 -10
  553. package/dist/esm/utils/abi/index.js.map +1 -1
  554. package/dist/esm/utils/abi/typechain/factories/Multicall3__factory.js +12 -8
  555. package/dist/esm/utils/abi/typechain/factories/Multicall3__factory.js.map +1 -1
  556. package/dist/esm/utils/common.js +52 -38
  557. package/dist/esm/utils/common.js.map +1 -1
  558. package/dist/types/constants.d.ts.map +1 -1
  559. package/dist/types/gasPriceOracle/oracle.d.ts.map +1 -1
  560. package/dist/types/utils/Multicall.d.ts.map +1 -1
  561. package/dist/types/utils/NetworkUtils.d.ts.map +1 -1
  562. package/package.json +3 -3
  563. package/src/constants.ts +1 -0
  564. package/src/gasPriceOracle/oracle.ts +1 -0
  565. package/src/utils/Multicall.ts +1 -0
  566. package/src/utils/NetworkUtils.ts +8 -1
@@ -26,210 +26,347 @@ exports.getCCTPDepositAccounts = getCCTPDepositAccounts;
26
26
  exports.getCCTPV1ReceiveMessageTx = getCCTPV1ReceiveMessageTx;
27
27
  exports.finalizeCCTPV1Messages = finalizeCCTPV1Messages;
28
28
  exports.getMintInfo = getMintInfo;
29
- const tslib_1 = require("tslib");
30
- const contracts_1 = require("@across-protocol/contracts");
31
- const SvmSpoke_1 = require("@across-protocol/contracts/dist/src/svm/clients/SvmSpoke");
32
- const web3_v1_1 = require("@across-protocol/contracts/dist/src/svm/web3-v1");
33
- const system_1 = require("@solana-program/system");
34
- const token_1 = require("@solana-program/token");
35
- const kit_1 = require("@solana/kit");
36
- const assert_1 = tslib_1.__importDefault(require("assert"));
37
- const utils_1 = require("ethers/lib/utils");
38
- const constants_1 = require("../../constants");
39
- const interfaces_1 = require("../../interfaces");
40
- const utils_2 = require("../../utils");
41
- const _1 = require("./");
42
- const provider_1 = require("./provider");
43
- const types_1 = require("./types");
44
- const utils_3 = require("./utils");
29
+ var tslib_1 = require("tslib");
30
+ var contracts_1 = require("@across-protocol/contracts");
31
+ var SvmSpoke_1 = require("@across-protocol/contracts/dist/src/svm/clients/SvmSpoke");
32
+ var web3_v1_1 = require("@across-protocol/contracts/dist/src/svm/web3-v1");
33
+ var system_1 = require("@solana-program/system");
34
+ var token_1 = require("@solana-program/token");
35
+ var kit_1 = require("@solana/kit");
36
+ var assert_1 = tslib_1.__importDefault(require("assert"));
37
+ var utils_1 = require("ethers/lib/utils");
38
+ var constants_1 = require("../../constants");
39
+ var interfaces_1 = require("../../interfaces");
40
+ var utils_2 = require("../../utils");
41
+ var _1 = require("./");
42
+ var provider_1 = require("./provider");
43
+ var types_1 = require("./types");
44
+ var utils_3 = require("./utils");
45
45
  exports.SLOT_DURATION_MS = 400;
46
46
  function getSlot(provider, commitment, logger) {
47
47
  return _callGetSlotWithRetry(provider, commitment, logger);
48
48
  }
49
- async function _callGetSlotWithRetry(provider, commitment, logger) {
50
- try {
51
- return await provider.getSlot({ commitment }).send();
52
- }
53
- catch (err) {
54
- if ((0, provider_1.isSolanaError)(err)) {
55
- const { __code: code } = err.context;
56
- logger?.debug({
57
- at: "_getSlotWithRetry",
58
- message: "Caught error from getSlot()",
59
- code,
60
- commitment,
61
- });
62
- }
63
- throw err;
64
- }
49
+ function _callGetSlotWithRetry(provider, commitment, logger) {
50
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
51
+ var err_1, code;
52
+ return tslib_1.__generator(this, function (_a) {
53
+ switch (_a.label) {
54
+ case 0:
55
+ _a.trys.push([0, 2, , 3]);
56
+ return [4, provider.getSlot({ commitment: commitment }).send()];
57
+ case 1: return [2, _a.sent()];
58
+ case 2:
59
+ err_1 = _a.sent();
60
+ if ((0, provider_1.isSolanaError)(err_1)) {
61
+ code = err_1.context.__code;
62
+ logger === null || logger === void 0 ? void 0 : logger.debug({
63
+ at: "_getSlotWithRetry",
64
+ message: "Caught error from getSlot()",
65
+ code: code,
66
+ commitment: commitment,
67
+ });
68
+ }
69
+ throw err_1;
70
+ case 3: return [2];
71
+ }
72
+ });
73
+ });
65
74
  }
66
- function getTimestampForSlot(provider, slotNumber, maxRetries = 2, logger) {
75
+ function getTimestampForSlot(provider, slotNumber, maxRetries, logger) {
76
+ if (maxRetries === void 0) { maxRetries = 2; }
67
77
  return _callGetTimestampForSlotWithRetry(provider, slotNumber, 0, maxRetries, logger);
68
78
  }
69
- async function _callGetTimestampForSlotWithRetry(provider, slotNumber, retryAttempt, maxRetries, logger) {
70
- const slot = slotNumber.toString();
71
- let _timestamp;
72
- try {
73
- _timestamp = await provider.getBlockTime(slotNumber).send();
74
- }
75
- catch (err) {
76
- if (!(0, provider_1.isSolanaError)(err)) {
77
- throw err;
78
- }
79
- const at = "getTimestampForSlot";
80
- const { __code: code } = err.context;
81
- switch (code) {
82
- case provider_1.SVM_SLOT_SKIPPED:
83
- case provider_1.SVM_LONG_TERM_STORAGE_SLOT_SKIPPED:
84
- return undefined;
85
- default: {
86
- const message = "Caught error from getBlockTime()";
87
- logger?.debug({ at, message, errorCode: code, slot, retryAttempt, maxRetries });
88
- throw new Error(`Unhandled SVM getBlockTime() error for slot ${slot}: ${code}`, { cause: err });
79
+ function _callGetTimestampForSlotWithRetry(provider, slotNumber, retryAttempt, maxRetries, logger) {
80
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
81
+ var slot, _timestamp, err_2, at, code, message, timestamp;
82
+ return tslib_1.__generator(this, function (_a) {
83
+ switch (_a.label) {
84
+ case 0:
85
+ slot = slotNumber.toString();
86
+ _a.label = 1;
87
+ case 1:
88
+ _a.trys.push([1, 3, , 4]);
89
+ return [4, provider.getBlockTime(slotNumber).send()];
90
+ case 2:
91
+ _timestamp = _a.sent();
92
+ return [3, 4];
93
+ case 3:
94
+ err_2 = _a.sent();
95
+ if (!(0, provider_1.isSolanaError)(err_2)) {
96
+ throw err_2;
97
+ }
98
+ at = "getTimestampForSlot";
99
+ code = err_2.context.__code;
100
+ switch (code) {
101
+ case provider_1.SVM_SLOT_SKIPPED:
102
+ case provider_1.SVM_LONG_TERM_STORAGE_SLOT_SKIPPED:
103
+ return [2, undefined];
104
+ default: {
105
+ message = "Caught error from getBlockTime()";
106
+ logger === null || logger === void 0 ? void 0 : logger.debug({ at: at, message: message, errorCode: code, slot: slot, retryAttempt: retryAttempt, maxRetries: maxRetries });
107
+ throw new Error("Unhandled SVM getBlockTime() error for slot ".concat(slot, ": ").concat(code), { cause: err_2 });
108
+ }
109
+ }
110
+ return [3, 4];
111
+ case 4:
112
+ timestamp = Number(_timestamp);
113
+ (0, assert_1.default)(!(0, utils_2.isDefined)(_timestamp) || BigInt(timestamp) === _timestamp, "Unexpected block timestamp for SVM slot ".concat(slot, ": ").concat(_timestamp));
114
+ return [2, timestamp];
89
115
  }
90
- }
91
- }
92
- const timestamp = Number(_timestamp);
93
- (0, assert_1.default)(!(0, utils_2.isDefined)(_timestamp) || BigInt(timestamp) === _timestamp, `Unexpected block timestamp for SVM slot ${slot}: ${_timestamp}`);
94
- return timestamp;
116
+ });
117
+ });
95
118
  }
96
- async function getFillDeadline(provider, statePda) {
97
- const state = await (0, SvmSpoke_1.fetchState)(provider, statePda);
98
- return state.data.fillDeadlineBuffer;
119
+ function getFillDeadline(provider, statePda) {
120
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
121
+ var state;
122
+ return tslib_1.__generator(this, function (_a) {
123
+ switch (_a.label) {
124
+ case 0: return [4, (0, SvmSpoke_1.fetchState)(provider, statePda)];
125
+ case 1:
126
+ state = _a.sent();
127
+ return [2, state.data.fillDeadlineBuffer];
128
+ }
129
+ });
130
+ });
99
131
  }
100
132
  function getDepositIdAtBlock(_contract, _blockTag) {
101
133
  throw new Error("getDepositIdAtBlock: not implemented");
102
134
  }
103
- async function findDeposit(eventClient, depositId, logger, slot, secondsLookback = 2 * 24 * 60 * 60) {
104
- if ((0, utils_2.isUnsafeDepositId)(depositId)) {
105
- throw new Error(`Cannot binary search for depositId ${depositId}`);
106
- }
107
- const provider = eventClient.getRpc();
108
- const opts = undefined;
109
- const { slot: currentSlot } = await (0, utils_3.getNearestSlotTime)(provider, opts, logger);
110
- const endSlot = slot !== undefined ? BigInt(Math.min(Number(slot), Number(currentSlot))) : currentSlot;
111
- const slotsInElapsed = BigInt(Math.round((secondsLookback * 1000) / exports.SLOT_DURATION_MS));
112
- const startSlot = endSlot - slotsInElapsed;
113
- const depositEvent = (await eventClient.queryEvents("FundsDeposited", startSlot, endSlot))?.find((event) => depositId.eq(event.data.depositId));
114
- if (!depositEvent) {
115
- return undefined;
116
- }
117
- const txnIndex = 0;
118
- const logIndex = 0;
119
- const blockNumber = Number(depositEvent.slot);
120
- const txnRef = depositEvent.signature.toString();
121
- const rawData = (0, _1.unwrapEventData)(depositEvent.data, ["depositId", "outputAmount"]);
122
- const { originChainId, ...deposit } = (0, utils_2.unpackDepositEvent)({ ...rawData, blockNumber, txnRef, txnIndex, logIndex }, constants_1.CHAIN_IDs.SOLANA);
123
- return {
124
- ...deposit,
125
- };
126
- }
127
- async function relayFillStatus(programId, relayData, destinationChainId, svmEventsClient, logger, atHeight) {
128
- (0, assert_1.default)((0, utils_2.chainIsSvm)(destinationChainId), "Destination chain must be an SVM chain");
129
- const provider = svmEventsClient.getRpc();
130
- const fillStatusPda = await (0, _1.getFillStatusPda)(programId, relayData, destinationChainId);
131
- let toSlot = BigInt(atHeight ?? 0);
132
- if (atHeight === undefined) {
133
- const commitment = "confirmed";
134
- const [fillStatusAccount, { slot: currentSlot, timestamp }] = await Promise.all([
135
- (0, kit_1.fetchEncodedAccount)(provider, fillStatusPda, { commitment }),
136
- (0, utils_3.getNearestSlotTime)(provider, { commitment }, logger),
137
- ]);
138
- toSlot = currentSlot;
139
- if (fillStatusAccount.exists) {
140
- const decodedAccountData = (0, SvmSpoke_1.decodeFillStatusAccount)(fillStatusAccount);
141
- return decodedAccountData.data.status;
142
- }
143
- else if (timestamp < relayData.fillDeadline) {
144
- return interfaces_1.FillStatus.Unfilled;
145
- }
146
- }
147
- return resolveFillStatusFromPdaEvents(fillStatusPda, toSlot, svmEventsClient);
148
- }
149
- async function fillStatusArray(programId, relayData, destinationChainId, svmEventsClient, logger, atHeight) {
150
- (0, assert_1.default)((0, utils_2.chainIsSvm)(destinationChainId), "Destination chain must be an SVM chain");
151
- const provider = svmEventsClient.getRpc();
152
- const chunkSize = 100;
153
- const chunkedRelayData = (0, utils_2.chunk)(relayData, chunkSize);
154
- const fillStatusPdas = (await Promise.all(chunkedRelayData.map((relayDataChunk) => Promise.all(relayDataChunk.map((relayData) => (0, _1.getFillStatusPda)(programId, relayData, destinationChainId)))))).flat();
155
- if (atHeight !== undefined && logger) {
156
- logger.warn({
157
- at: "SvmSpokeUtils#fillStatusArray",
158
- message: "Querying specific slots for large arrays is slow. For current status, omit 'atHeight' param to use latest confirmed slot instead.",
135
+ function findDeposit(eventClient_1, depositId_1, logger_1, slot_1) {
136
+ return tslib_1.__awaiter(this, arguments, void 0, function (eventClient, depositId, logger, slot, secondsLookback) {
137
+ var provider, opts, currentSlot, endSlot, slotsInElapsed, startSlot, depositEvent, txnIndex, logIndex, blockNumber, txnRef, rawData, _a, originChainId, deposit;
138
+ var _b;
139
+ if (secondsLookback === void 0) { secondsLookback = 2 * 24 * 60 * 60; }
140
+ return tslib_1.__generator(this, function (_c) {
141
+ switch (_c.label) {
142
+ case 0:
143
+ if ((0, utils_2.isUnsafeDepositId)(depositId)) {
144
+ throw new Error("Cannot binary search for depositId ".concat(depositId));
145
+ }
146
+ provider = eventClient.getRpc();
147
+ opts = undefined;
148
+ return [4, (0, utils_3.getNearestSlotTime)(provider, opts, logger)];
149
+ case 1:
150
+ currentSlot = (_c.sent()).slot;
151
+ endSlot = slot !== undefined ? BigInt(Math.min(Number(slot), Number(currentSlot))) : currentSlot;
152
+ slotsInElapsed = BigInt(Math.round((secondsLookback * 1000) / exports.SLOT_DURATION_MS));
153
+ startSlot = endSlot - slotsInElapsed;
154
+ return [4, eventClient.queryEvents("FundsDeposited", startSlot, endSlot)];
155
+ case 2:
156
+ depositEvent = (_b = (_c.sent())) === null || _b === void 0 ? void 0 : _b.find(function (event) {
157
+ return depositId.eq(event.data.depositId);
158
+ });
159
+ if (!depositEvent) {
160
+ return [2, undefined];
161
+ }
162
+ txnIndex = 0;
163
+ logIndex = 0;
164
+ blockNumber = Number(depositEvent.slot);
165
+ txnRef = depositEvent.signature.toString();
166
+ rawData = (0, _1.unwrapEventData)(depositEvent.data, ["depositId", "outputAmount"]);
167
+ _a = (0, utils_2.unpackDepositEvent)(tslib_1.__assign(tslib_1.__assign({}, rawData), { blockNumber: blockNumber, txnRef: txnRef, txnIndex: txnIndex, logIndex: logIndex }), constants_1.CHAIN_IDs.SOLANA), originChainId = _a.originChainId, deposit = tslib_1.__rest(_a, ["originChainId"]);
168
+ return [2, tslib_1.__assign({}, deposit)];
169
+ }
159
170
  });
160
- }
161
- const fillStatuses = atHeight === undefined
162
- ? await fetchBatchFillStatusFromPdaAccounts(provider, fillStatusPdas, relayData, logger)
163
- : new Array(relayData.length).fill(undefined);
164
- const missingStatuses = fillStatuses.reduce((acc, status, index) => {
165
- if (status === undefined) {
166
- acc.push(index);
167
- }
168
- return acc;
169
- }, []);
170
- const missingChunked = (0, utils_2.chunk)(missingStatuses, chunkSize);
171
- const missingResults = [];
172
- const opts = undefined;
173
- const toSlot = atHeight ? BigInt(atHeight) : (await (0, utils_3.getNearestSlotTime)(provider, opts, logger)).slot;
174
- for (const chunk of missingChunked) {
175
- const chunkResults = await Promise.all(chunk.map(async (missingIndex) => {
176
- return {
177
- index: missingIndex,
178
- fillStatus: await resolveFillStatusFromPdaEvents(fillStatusPdas[missingIndex], toSlot, svmEventsClient),
179
- };
180
- }));
181
- missingResults.push(...chunkResults);
182
- }
183
- missingResults.forEach(({ index, fillStatus }) => {
184
- fillStatuses[index] = fillStatus;
185
171
  });
186
- return fillStatuses;
187
- }
188
- async function findFillEvent(relayData, destinationChainId, svmEventsClient, fromSlot, toSlot, logger) {
189
- (0, assert_1.default)((0, utils_2.chainIsSvm)(destinationChainId), "Destination chain must be an SVM chain");
190
- const opts = undefined;
191
- toSlot ??= Number((await (0, utils_3.getNearestSlotTime)(svmEventsClient.getRpc(), opts, logger)).slot);
192
- const programId = svmEventsClient.getProgramAddress();
193
- const fillStatusPda = await (0, _1.getFillStatusPda)(programId, relayData, destinationChainId);
194
- const fillEvents = await svmEventsClient.queryDerivedAddressEvents(types_1.SVMEventNames.FilledRelay, fillStatusPda, BigInt(fromSlot), BigInt(toSlot), { limit: 10 });
195
- (0, assert_1.default)(fillEvents.length <= 1, `Expected at most one fill event for ${fillStatusPda}, got ${fillEvents.length}`);
196
- const [rawEvent] = fillEvents;
197
- if (!(0, utils_2.isDefined)(rawEvent)) {
198
- return;
199
- }
200
- const rawFill = (0, _1.unwrapEventData)(rawEvent.data, ["depositId", "inputAmount"]);
201
- const fill = (0, utils_2.unpackFillEvent)(rawFill, destinationChainId);
202
- return fill;
203
- }
204
- async function fillRelayInstruction(spokePool, relayData, signer, recipientTokenAccount, repaymentAddress, repaymentChainId) {
205
- const program = (0, _1.toAddress)(spokePool);
206
- (0, assert_1.default)(repaymentAddress.isValidOn(repaymentChainId), `Invalid repayment address for chain ${repaymentChainId}: ${repaymentAddress.toNative()}.`);
207
- const messageHash = (0, utils_2.getMessageHash)(relayData.message);
208
- const _relayDataHash = getRelayDataHash({ ...relayData, messageHash }, relayData.destinationChainId);
209
- const relayDataHash = new Uint8Array(Buffer.from(_relayDataHash.slice(2), "hex"));
210
- const relayer = utils_2.SvmAddress.from(signer.address);
211
- const [statePda, fillStatusPda, eventAuthority, delegatePda, relayerTokenAccount] = await Promise.all([
212
- (0, _1.getStatePda)(program),
213
- (0, _1.getFillStatusPda)(program, relayData, relayData.destinationChainId),
214
- (0, _1.getEventAuthority)(program),
215
- getFillRelayDelegatePda(relayDataHash, BigInt(repaymentChainId), signer.address, program),
216
- getAssociatedTokenAddress(relayer, relayData.outputToken),
217
- ]);
218
- const svmRelayData = (0, _1.toSvmRelayData)(relayData);
219
- return contracts_1.SvmSpokeClient.getFillRelayInstruction({
220
- signer,
221
- state: statePda,
222
- delegate: (0, _1.toAddress)(utils_2.SvmAddress.from(delegatePda.toString())),
223
- mint: svmRelayData.outputToken,
224
- relayerTokenAccount: relayerTokenAccount,
225
- recipientTokenAccount: recipientTokenAccount,
226
- fillStatus: fillStatusPda,
227
- eventAuthority,
228
- program,
229
- relayHash: relayDataHash,
230
- relayData: (0, kit_1.some)(svmRelayData),
231
- repaymentChainId: (0, kit_1.some)(BigInt(repaymentChainId)),
232
- repaymentAddress: (0, kit_1.some)((0, _1.toAddress)(repaymentAddress)),
172
+ }
173
+ function relayFillStatus(programId, relayData, destinationChainId, svmEventsClient, logger, atHeight) {
174
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
175
+ var provider, fillStatusPda, toSlot, commitment, _a, fillStatusAccount, _b, currentSlot, timestamp, decodedAccountData;
176
+ return tslib_1.__generator(this, function (_c) {
177
+ switch (_c.label) {
178
+ case 0:
179
+ (0, assert_1.default)((0, utils_2.chainIsSvm)(destinationChainId), "Destination chain must be an SVM chain");
180
+ provider = svmEventsClient.getRpc();
181
+ return [4, (0, _1.getFillStatusPda)(programId, relayData, destinationChainId)];
182
+ case 1:
183
+ fillStatusPda = _c.sent();
184
+ toSlot = BigInt(atHeight !== null && atHeight !== void 0 ? atHeight : 0);
185
+ if (!(atHeight === undefined)) return [3, 3];
186
+ commitment = "confirmed";
187
+ return [4, Promise.all([
188
+ (0, kit_1.fetchEncodedAccount)(provider, fillStatusPda, { commitment: commitment }),
189
+ (0, utils_3.getNearestSlotTime)(provider, { commitment: commitment }, logger),
190
+ ])];
191
+ case 2:
192
+ _a = _c.sent(), fillStatusAccount = _a[0], _b = _a[1], currentSlot = _b.slot, timestamp = _b.timestamp;
193
+ toSlot = currentSlot;
194
+ if (fillStatusAccount.exists) {
195
+ decodedAccountData = (0, SvmSpoke_1.decodeFillStatusAccount)(fillStatusAccount);
196
+ return [2, decodedAccountData.data.status];
197
+ }
198
+ else if (timestamp < relayData.fillDeadline) {
199
+ return [2, interfaces_1.FillStatus.Unfilled];
200
+ }
201
+ _c.label = 3;
202
+ case 3: return [2, resolveFillStatusFromPdaEvents(fillStatusPda, toSlot, svmEventsClient)];
203
+ }
204
+ });
205
+ });
206
+ }
207
+ function fillStatusArray(programId, relayData, destinationChainId, svmEventsClient, logger, atHeight) {
208
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
209
+ var provider, chunkSize, chunkedRelayData, fillStatusPdas, fillStatuses, _a, missingStatuses, missingChunked, missingResults, opts, toSlot, _b, _i, missingChunked_1, chunk_1, chunkResults;
210
+ var _this = this;
211
+ return tslib_1.__generator(this, function (_c) {
212
+ switch (_c.label) {
213
+ case 0:
214
+ (0, assert_1.default)((0, utils_2.chainIsSvm)(destinationChainId), "Destination chain must be an SVM chain");
215
+ provider = svmEventsClient.getRpc();
216
+ chunkSize = 100;
217
+ chunkedRelayData = (0, utils_2.chunk)(relayData, chunkSize);
218
+ return [4, Promise.all(chunkedRelayData.map(function (relayDataChunk) {
219
+ return Promise.all(relayDataChunk.map(function (relayData) { return (0, _1.getFillStatusPda)(programId, relayData, destinationChainId); }));
220
+ }))];
221
+ case 1:
222
+ fillStatusPdas = (_c.sent()).flat();
223
+ if (atHeight !== undefined && logger) {
224
+ logger.warn({
225
+ at: "SvmSpokeUtils#fillStatusArray",
226
+ message: "Querying specific slots for large arrays is slow. For current status, omit 'atHeight' param to use latest confirmed slot instead.",
227
+ });
228
+ }
229
+ if (!(atHeight === undefined)) return [3, 3];
230
+ return [4, fetchBatchFillStatusFromPdaAccounts(provider, fillStatusPdas, relayData, logger)];
231
+ case 2:
232
+ _a = _c.sent();
233
+ return [3, 4];
234
+ case 3:
235
+ _a = new Array(relayData.length).fill(undefined);
236
+ _c.label = 4;
237
+ case 4:
238
+ fillStatuses = _a;
239
+ missingStatuses = fillStatuses.reduce(function (acc, status, index) {
240
+ if (status === undefined) {
241
+ acc.push(index);
242
+ }
243
+ return acc;
244
+ }, []);
245
+ missingChunked = (0, utils_2.chunk)(missingStatuses, chunkSize);
246
+ missingResults = [];
247
+ opts = undefined;
248
+ if (!atHeight) return [3, 5];
249
+ _b = BigInt(atHeight);
250
+ return [3, 7];
251
+ case 5: return [4, (0, utils_3.getNearestSlotTime)(provider, opts, logger)];
252
+ case 6:
253
+ _b = (_c.sent()).slot;
254
+ _c.label = 7;
255
+ case 7:
256
+ toSlot = _b;
257
+ _i = 0, missingChunked_1 = missingChunked;
258
+ _c.label = 8;
259
+ case 8:
260
+ if (!(_i < missingChunked_1.length)) return [3, 11];
261
+ chunk_1 = missingChunked_1[_i];
262
+ return [4, Promise.all(chunk_1.map(function (missingIndex) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
263
+ var _a;
264
+ return tslib_1.__generator(this, function (_b) {
265
+ switch (_b.label) {
266
+ case 0:
267
+ _a = {
268
+ index: missingIndex
269
+ };
270
+ return [4, resolveFillStatusFromPdaEvents(fillStatusPdas[missingIndex], toSlot, svmEventsClient)];
271
+ case 1: return [2, (_a.fillStatus = _b.sent(),
272
+ _a)];
273
+ }
274
+ });
275
+ }); }))];
276
+ case 9:
277
+ chunkResults = _c.sent();
278
+ missingResults.push.apply(missingResults, chunkResults);
279
+ _c.label = 10;
280
+ case 10:
281
+ _i++;
282
+ return [3, 8];
283
+ case 11:
284
+ missingResults.forEach(function (_a) {
285
+ var index = _a.index, fillStatus = _a.fillStatus;
286
+ fillStatuses[index] = fillStatus;
287
+ });
288
+ return [2, fillStatuses];
289
+ }
290
+ });
291
+ });
292
+ }
293
+ function findFillEvent(relayData, destinationChainId, svmEventsClient, fromSlot, toSlot, logger) {
294
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
295
+ var opts, _a, _b, programId, fillStatusPda, fillEvents, rawEvent, rawFill, fill;
296
+ return tslib_1.__generator(this, function (_c) {
297
+ switch (_c.label) {
298
+ case 0:
299
+ (0, assert_1.default)((0, utils_2.chainIsSvm)(destinationChainId), "Destination chain must be an SVM chain");
300
+ opts = undefined;
301
+ if (!(toSlot !== null && toSlot !== void 0)) return [3, 1];
302
+ _a = toSlot;
303
+ return [3, 3];
304
+ case 1:
305
+ _b = Number;
306
+ return [4, (0, utils_3.getNearestSlotTime)(svmEventsClient.getRpc(), opts, logger)];
307
+ case 2:
308
+ _a = (toSlot = _b.apply(void 0, [(_c.sent()).slot]));
309
+ _c.label = 3;
310
+ case 3:
311
+ _a;
312
+ programId = svmEventsClient.getProgramAddress();
313
+ return [4, (0, _1.getFillStatusPda)(programId, relayData, destinationChainId)];
314
+ case 4:
315
+ fillStatusPda = _c.sent();
316
+ return [4, svmEventsClient.queryDerivedAddressEvents(types_1.SVMEventNames.FilledRelay, fillStatusPda, BigInt(fromSlot), BigInt(toSlot), { limit: 10 })];
317
+ case 5:
318
+ fillEvents = _c.sent();
319
+ (0, assert_1.default)(fillEvents.length <= 1, "Expected at most one fill event for ".concat(fillStatusPda, ", got ").concat(fillEvents.length));
320
+ rawEvent = fillEvents[0];
321
+ if (!(0, utils_2.isDefined)(rawEvent)) {
322
+ return [2];
323
+ }
324
+ rawFill = (0, _1.unwrapEventData)(rawEvent.data, ["depositId", "inputAmount"]);
325
+ fill = (0, utils_2.unpackFillEvent)(rawFill, destinationChainId);
326
+ return [2, fill];
327
+ }
328
+ });
329
+ });
330
+ }
331
+ function fillRelayInstruction(spokePool, relayData, signer, recipientTokenAccount, repaymentAddress, repaymentChainId) {
332
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
333
+ var program, messageHash, _relayDataHash, relayDataHash, relayer, _a, statePda, fillStatusPda, eventAuthority, delegatePda, relayerTokenAccount, svmRelayData;
334
+ return tslib_1.__generator(this, function (_b) {
335
+ switch (_b.label) {
336
+ case 0:
337
+ program = (0, _1.toAddress)(spokePool);
338
+ (0, assert_1.default)(repaymentAddress.isValidOn(repaymentChainId), "Invalid repayment address for chain ".concat(repaymentChainId, ": ").concat(repaymentAddress.toNative(), "."));
339
+ messageHash = (0, utils_2.getMessageHash)(relayData.message);
340
+ _relayDataHash = getRelayDataHash(tslib_1.__assign(tslib_1.__assign({}, relayData), { messageHash: messageHash }), relayData.destinationChainId);
341
+ relayDataHash = new Uint8Array(Buffer.from(_relayDataHash.slice(2), "hex"));
342
+ relayer = utils_2.SvmAddress.from(signer.address);
343
+ return [4, Promise.all([
344
+ (0, _1.getStatePda)(program),
345
+ (0, _1.getFillStatusPda)(program, relayData, relayData.destinationChainId),
346
+ (0, _1.getEventAuthority)(program),
347
+ getFillRelayDelegatePda(relayDataHash, BigInt(repaymentChainId), signer.address, program),
348
+ getAssociatedTokenAddress(relayer, relayData.outputToken),
349
+ ])];
350
+ case 1:
351
+ _a = _b.sent(), statePda = _a[0], fillStatusPda = _a[1], eventAuthority = _a[2], delegatePda = _a[3], relayerTokenAccount = _a[4];
352
+ svmRelayData = (0, _1.toSvmRelayData)(relayData);
353
+ return [2, contracts_1.SvmSpokeClient.getFillRelayInstruction({
354
+ signer: signer,
355
+ state: statePda,
356
+ delegate: (0, _1.toAddress)(utils_2.SvmAddress.from(delegatePda.toString())),
357
+ mint: svmRelayData.outputToken,
358
+ relayerTokenAccount: relayerTokenAccount,
359
+ recipientTokenAccount: recipientTokenAccount,
360
+ fillStatus: fillStatusPda,
361
+ eventAuthority: eventAuthority,
362
+ program: program,
363
+ relayHash: relayDataHash,
364
+ relayData: (0, kit_1.some)(svmRelayData),
365
+ repaymentChainId: (0, kit_1.some)(BigInt(repaymentChainId)),
366
+ repaymentAddress: (0, kit_1.some)((0, _1.toAddress)(repaymentAddress)),
367
+ })];
368
+ }
369
+ });
233
370
  });
234
371
  }
235
372
  function createTokenAccountsInstruction(mint, relayer) {
@@ -238,575 +375,877 @@ function createTokenAccountsInstruction(mint, relayer) {
238
375
  mint: (0, _1.toAddress)(mint),
239
376
  });
240
377
  }
241
- async function getFillRelayTx(spokePoolAddr, solanaClient, relayData, signer, repaymentChainId, repaymentAddress) {
242
- const svmRelayData = (0, _1.toSvmRelayData)(relayData);
243
- (0, assert_1.default)(repaymentAddress.isValidOn(repaymentChainId), `getFillRelayTx: repayment address ${repaymentAddress} not valid on chain ${repaymentChainId})`);
244
- const program = (0, _1.toAddress)(spokePoolAddr);
245
- const messageHash = (0, utils_2.getMessageHash)(relayData.message);
246
- const _relayDataHash = getRelayDataHash({ ...relayData, messageHash }, relayData.destinationChainId);
247
- const relayDataHash = new Uint8Array(Buffer.from(_relayDataHash.slice(2), "hex"));
248
- const [state, delegate, mintInfo, fillStatus, eventAuthority] = await Promise.all([
249
- (0, _1.getStatePda)(program),
250
- getFillRelayDelegatePda(relayDataHash, BigInt(repaymentChainId), (0, _1.toAddress)(repaymentAddress), program),
251
- getMintInfo(solanaClient, svmRelayData.outputToken),
252
- (0, _1.getFillStatusPda)(program, relayData, relayData.destinationChainId),
253
- (0, _1.getEventAuthority)(program),
254
- ]);
255
- const [recipientAta, relayerAta] = await Promise.all([
256
- getAssociatedTokenAddress(relayData.recipient, relayData.outputToken, mintInfo.programAddress),
257
- getAssociatedTokenAddress(utils_2.SvmAddress.from(signer.address), relayData.outputToken, mintInfo.programAddress),
258
- ]);
259
- const recipientAtaEncodedAccount = await (0, kit_1.fetchEncodedAccount)(solanaClient, recipientAta);
260
- const remainingAccounts = [];
261
- if (relayData.message !== "0x") {
262
- const acrossPlusMessage = deserializeMessage(relayData.message);
263
- remainingAccounts.push((0, _1.getAccountMeta)(acrossPlusMessage.handler, true));
264
- remainingAccounts.push(...acrossPlusMessage.accounts.map((account, idx) => (0, _1.getAccountMeta)(account, idx < acrossPlusMessage.accounts.length - acrossPlusMessage.read_only_len)));
265
- }
266
- const fillInput = {
267
- signer: signer,
268
- state,
269
- delegate,
270
- mint: svmRelayData.outputToken,
271
- relayerTokenAccount: relayerAta,
272
- recipientTokenAccount: recipientAta,
273
- fillStatus,
274
- tokenProgram: mintInfo.programAddress,
275
- associatedTokenProgram: token_1.ASSOCIATED_TOKEN_PROGRAM_ADDRESS,
276
- systemProgram: system_1.SYSTEM_PROGRAM_ADDRESS,
277
- eventAuthority,
278
- program,
279
- relayHash: relayDataHash,
280
- relayData: svmRelayData,
281
- repaymentChainId: BigInt(repaymentChainId),
282
- repaymentAddress: (0, _1.toAddress)(repaymentAddress),
283
- };
284
- return (0, exports.createFillInstruction)(signer, solanaClient, fillInput, svmRelayData, mintInfo.data.decimals, !recipientAtaEncodedAccount.exists, remainingAccounts);
285
- }
286
- async function getIPFillRelayTx(spokePoolAddr, solanaClient, relayData, signer, repaymentChainId, repaymentAddress) {
287
- const program = (0, _1.toAddress)(spokePoolAddr);
288
- const _relayDataHash = getRelayDataHash({ ...relayData, messageHash: (0, utils_2.getMessageHash)(relayData.message) }, relayData.destinationChainId);
289
- const relayDataHash = new Uint8Array(Buffer.from(_relayDataHash.slice(2), "hex"));
290
- const [state, delegate, instructionParams] = await Promise.all([
291
- (0, _1.getStatePda)(program),
292
- getFillRelayDelegatePda(relayDataHash, BigInt(repaymentChainId), (0, _1.toAddress)(repaymentAddress), program),
293
- (0, _1.getInstructionParamsPda)(program, signer.address),
294
- ]);
295
- const mint = (0, _1.toAddress)(relayData.outputToken);
296
- const mintInfo = await getMintInfo(solanaClient, mint);
297
- const [recipientAta, relayerAta, fillStatus, eventAuthority] = await Promise.all([
298
- getAssociatedTokenAddress(relayData.recipient, relayData.outputToken, mintInfo.programAddress),
299
- getAssociatedTokenAddress(utils_2.SvmAddress.from(signer.address), relayData.outputToken, mintInfo.programAddress),
300
- (0, _1.getFillStatusPda)(program, relayData, relayData.destinationChainId),
301
- (0, _1.getEventAuthority)(program),
302
- ]);
303
- const remainingAccounts = [];
304
- if (relayData.message !== "0x") {
305
- const acrossPlusMessage = deserializeMessage(relayData.message);
306
- remainingAccounts.push((0, _1.getAccountMeta)(acrossPlusMessage.handler, true));
307
- remainingAccounts.push(...acrossPlusMessage.accounts.map((account, idx) => (0, _1.getAccountMeta)(account, idx < acrossPlusMessage.accounts.length - acrossPlusMessage.read_only_len)));
308
- }
309
- const fillInput = {
310
- signer: signer,
311
- state,
312
- delegate,
313
- mint,
314
- relayerTokenAccount: relayerAta,
315
- recipientTokenAccount: recipientAta,
316
- fillStatus,
317
- tokenProgram: mintInfo.programAddress,
318
- associatedTokenProgram: token_1.ASSOCIATED_TOKEN_PROGRAM_ADDRESS,
319
- systemProgram: system_1.SYSTEM_PROGRAM_ADDRESS,
320
- eventAuthority,
321
- program,
322
- instructionParams,
323
- relayHash: relayDataHash,
324
- relayData: null,
325
- repaymentChainId: null,
326
- repaymentAddress: null,
327
- };
328
- return (0, exports.createFillInstruction)(signer, solanaClient, fillInput, { outputAmount: relayData.outputAmount.toBigInt(), recipient: (0, _1.toAddress)(relayData.recipient) }, mintInfo.data.decimals, true, remainingAccounts);
329
- }
330
- const createFillInstruction = async (signer, solanaClient, fillInput, relayData, tokenDecimals, createRecipientAta = false, remainingAccounts = []) => {
331
- const mintInfo = await getMintInfo(solanaClient, fillInput.mint);
332
- const approveIx = (0, token_1.getApproveCheckedInstruction)({
333
- source: fillInput.relayerTokenAccount,
334
- mint: fillInput.mint,
335
- delegate: fillInput.delegate,
336
- owner: fillInput.signer,
337
- amount: relayData.outputAmount,
338
- decimals: tokenDecimals,
339
- }, {
340
- programAddress: mintInfo.programAddress,
378
+ function getFillRelayTx(spokePoolAddr, solanaClient, relayData, signer, repaymentChainId, repaymentAddress) {
379
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
380
+ var svmRelayData, program, messageHash, _relayDataHash, relayDataHash, _a, state, delegate, mintInfo, fillStatus, eventAuthority, _b, recipientAta, relayerAta, recipientAtaEncodedAccount, remainingAccounts, acrossPlusMessage_1, fillInput;
381
+ return tslib_1.__generator(this, function (_c) {
382
+ switch (_c.label) {
383
+ case 0:
384
+ svmRelayData = (0, _1.toSvmRelayData)(relayData);
385
+ (0, assert_1.default)(repaymentAddress.isValidOn(repaymentChainId), "getFillRelayTx: repayment address ".concat(repaymentAddress, " not valid on chain ").concat(repaymentChainId, ")"));
386
+ program = (0, _1.toAddress)(spokePoolAddr);
387
+ messageHash = (0, utils_2.getMessageHash)(relayData.message);
388
+ _relayDataHash = getRelayDataHash(tslib_1.__assign(tslib_1.__assign({}, relayData), { messageHash: messageHash }), relayData.destinationChainId);
389
+ relayDataHash = new Uint8Array(Buffer.from(_relayDataHash.slice(2), "hex"));
390
+ return [4, Promise.all([
391
+ (0, _1.getStatePda)(program),
392
+ getFillRelayDelegatePda(relayDataHash, BigInt(repaymentChainId), (0, _1.toAddress)(repaymentAddress), program),
393
+ getMintInfo(solanaClient, svmRelayData.outputToken),
394
+ (0, _1.getFillStatusPda)(program, relayData, relayData.destinationChainId),
395
+ (0, _1.getEventAuthority)(program),
396
+ ])];
397
+ case 1:
398
+ _a = _c.sent(), state = _a[0], delegate = _a[1], mintInfo = _a[2], fillStatus = _a[3], eventAuthority = _a[4];
399
+ return [4, Promise.all([
400
+ getAssociatedTokenAddress(relayData.recipient, relayData.outputToken, mintInfo.programAddress),
401
+ getAssociatedTokenAddress(utils_2.SvmAddress.from(signer.address), relayData.outputToken, mintInfo.programAddress),
402
+ ])];
403
+ case 2:
404
+ _b = _c.sent(), recipientAta = _b[0], relayerAta = _b[1];
405
+ return [4, (0, kit_1.fetchEncodedAccount)(solanaClient, recipientAta)];
406
+ case 3:
407
+ recipientAtaEncodedAccount = _c.sent();
408
+ remainingAccounts = [];
409
+ if (relayData.message !== "0x") {
410
+ acrossPlusMessage_1 = deserializeMessage(relayData.message);
411
+ remainingAccounts.push((0, _1.getAccountMeta)(acrossPlusMessage_1.handler, true));
412
+ remainingAccounts.push.apply(remainingAccounts, acrossPlusMessage_1.accounts.map(function (account, idx) {
413
+ return (0, _1.getAccountMeta)(account, idx < acrossPlusMessage_1.accounts.length - acrossPlusMessage_1.read_only_len);
414
+ }));
415
+ }
416
+ fillInput = {
417
+ signer: signer,
418
+ state: state,
419
+ delegate: delegate,
420
+ mint: svmRelayData.outputToken,
421
+ relayerTokenAccount: relayerAta,
422
+ recipientTokenAccount: recipientAta,
423
+ fillStatus: fillStatus,
424
+ tokenProgram: mintInfo.programAddress,
425
+ associatedTokenProgram: token_1.ASSOCIATED_TOKEN_PROGRAM_ADDRESS,
426
+ systemProgram: system_1.SYSTEM_PROGRAM_ADDRESS,
427
+ eventAuthority: eventAuthority,
428
+ program: program,
429
+ relayHash: relayDataHash,
430
+ relayData: svmRelayData,
431
+ repaymentChainId: BigInt(repaymentChainId),
432
+ repaymentAddress: (0, _1.toAddress)(repaymentAddress),
433
+ };
434
+ return [2, (0, exports.createFillInstruction)(signer, solanaClient, fillInput, svmRelayData, mintInfo.data.decimals, !recipientAtaEncodedAccount.exists, remainingAccounts)];
435
+ }
436
+ });
341
437
  });
342
- const getCreateAssociatedTokenIx = () => (0, token_1.getCreateAssociatedTokenInstruction)({
343
- payer: signer,
344
- owner: relayData.recipient,
345
- mint: fillInput.mint,
346
- ata: fillInput.recipientTokenAccount,
347
- systemProgram: system_1.SYSTEM_PROGRAM_ADDRESS,
348
- tokenProgram: fillInput.tokenProgram,
438
+ }
439
+ function getIPFillRelayTx(spokePoolAddr, solanaClient, relayData, signer, repaymentChainId, repaymentAddress) {
440
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
441
+ var program, _relayDataHash, relayDataHash, _a, state, delegate, instructionParams, mint, mintInfo, _b, recipientAta, relayerAta, fillStatus, eventAuthority, remainingAccounts, acrossPlusMessage_2, fillInput;
442
+ return tslib_1.__generator(this, function (_c) {
443
+ switch (_c.label) {
444
+ case 0:
445
+ program = (0, _1.toAddress)(spokePoolAddr);
446
+ _relayDataHash = getRelayDataHash(tslib_1.__assign(tslib_1.__assign({}, relayData), { messageHash: (0, utils_2.getMessageHash)(relayData.message) }), relayData.destinationChainId);
447
+ relayDataHash = new Uint8Array(Buffer.from(_relayDataHash.slice(2), "hex"));
448
+ return [4, Promise.all([
449
+ (0, _1.getStatePda)(program),
450
+ getFillRelayDelegatePda(relayDataHash, BigInt(repaymentChainId), (0, _1.toAddress)(repaymentAddress), program),
451
+ (0, _1.getInstructionParamsPda)(program, signer.address),
452
+ ])];
453
+ case 1:
454
+ _a = _c.sent(), state = _a[0], delegate = _a[1], instructionParams = _a[2];
455
+ mint = (0, _1.toAddress)(relayData.outputToken);
456
+ return [4, getMintInfo(solanaClient, mint)];
457
+ case 2:
458
+ mintInfo = _c.sent();
459
+ return [4, Promise.all([
460
+ getAssociatedTokenAddress(relayData.recipient, relayData.outputToken, mintInfo.programAddress),
461
+ getAssociatedTokenAddress(utils_2.SvmAddress.from(signer.address), relayData.outputToken, mintInfo.programAddress),
462
+ (0, _1.getFillStatusPda)(program, relayData, relayData.destinationChainId),
463
+ (0, _1.getEventAuthority)(program),
464
+ ])];
465
+ case 3:
466
+ _b = _c.sent(), recipientAta = _b[0], relayerAta = _b[1], fillStatus = _b[2], eventAuthority = _b[3];
467
+ remainingAccounts = [];
468
+ if (relayData.message !== "0x") {
469
+ acrossPlusMessage_2 = deserializeMessage(relayData.message);
470
+ remainingAccounts.push((0, _1.getAccountMeta)(acrossPlusMessage_2.handler, true));
471
+ remainingAccounts.push.apply(remainingAccounts, acrossPlusMessage_2.accounts.map(function (account, idx) {
472
+ return (0, _1.getAccountMeta)(account, idx < acrossPlusMessage_2.accounts.length - acrossPlusMessage_2.read_only_len);
473
+ }));
474
+ }
475
+ fillInput = {
476
+ signer: signer,
477
+ state: state,
478
+ delegate: delegate,
479
+ mint: mint,
480
+ relayerTokenAccount: relayerAta,
481
+ recipientTokenAccount: recipientAta,
482
+ fillStatus: fillStatus,
483
+ tokenProgram: mintInfo.programAddress,
484
+ associatedTokenProgram: token_1.ASSOCIATED_TOKEN_PROGRAM_ADDRESS,
485
+ systemProgram: system_1.SYSTEM_PROGRAM_ADDRESS,
486
+ eventAuthority: eventAuthority,
487
+ program: program,
488
+ instructionParams: instructionParams,
489
+ relayHash: relayDataHash,
490
+ relayData: null,
491
+ repaymentChainId: null,
492
+ repaymentAddress: null,
493
+ };
494
+ return [2, (0, exports.createFillInstruction)(signer, solanaClient, fillInput, { outputAmount: relayData.outputAmount.toBigInt(), recipient: (0, _1.toAddress)(relayData.recipient) }, mintInfo.data.decimals, true, remainingAccounts)];
495
+ }
496
+ });
497
+ });
498
+ }
499
+ var createFillInstruction = function (signer_1, solanaClient_1, fillInput_1, relayData_1, tokenDecimals_1) {
500
+ var args_1 = [];
501
+ for (var _i = 5; _i < arguments.length; _i++) {
502
+ args_1[_i - 5] = arguments[_i];
503
+ }
504
+ return tslib_1.__awaiter(void 0, tslib_1.__spreadArray([signer_1, solanaClient_1, fillInput_1, relayData_1, tokenDecimals_1], args_1, true), void 0, function (signer, solanaClient, fillInput, relayData, tokenDecimals, createRecipientAta, remainingAccounts) {
505
+ var mintInfo, approveIx, getCreateAssociatedTokenIx, createFillIx, _a;
506
+ var _b;
507
+ if (createRecipientAta === void 0) { createRecipientAta = false; }
508
+ if (remainingAccounts === void 0) { remainingAccounts = []; }
509
+ return tslib_1.__generator(this, function (_c) {
510
+ switch (_c.label) {
511
+ case 0: return [4, getMintInfo(solanaClient, fillInput.mint)];
512
+ case 1:
513
+ mintInfo = _c.sent();
514
+ approveIx = (0, token_1.getApproveCheckedInstruction)({
515
+ source: fillInput.relayerTokenAccount,
516
+ mint: fillInput.mint,
517
+ delegate: fillInput.delegate,
518
+ owner: fillInput.signer,
519
+ amount: relayData.outputAmount,
520
+ decimals: tokenDecimals,
521
+ }, {
522
+ programAddress: mintInfo.programAddress,
523
+ });
524
+ getCreateAssociatedTokenIx = function () {
525
+ return (0, token_1.getCreateAssociatedTokenInstruction)({
526
+ payer: signer,
527
+ owner: relayData.recipient,
528
+ mint: fillInput.mint,
529
+ ata: fillInput.recipientTokenAccount,
530
+ systemProgram: system_1.SYSTEM_PROGRAM_ADDRESS,
531
+ tokenProgram: fillInput.tokenProgram,
532
+ });
533
+ };
534
+ createFillIx = contracts_1.SvmSpokeClient.getFillRelayInstruction(fillInput);
535
+ (_b = createFillIx.accounts).push.apply(_b, remainingAccounts);
536
+ _a = kit_1.pipe;
537
+ return [4, (0, _1.createDefaultTransaction)(solanaClient, signer)];
538
+ case 2: return [2, _a.apply(void 0, [_c.sent(), function (tx) { return (createRecipientAta ? (0, kit_1.appendTransactionMessageInstruction)(getCreateAssociatedTokenIx(), tx) : tx); },
539
+ function (tx) { return (0, kit_1.appendTransactionMessageInstruction)(approveIx, tx); },
540
+ function (tx) { return (0, kit_1.appendTransactionMessageInstruction)(createFillIx, tx); }])];
541
+ }
542
+ });
349
543
  });
350
- const createFillIx = contracts_1.SvmSpokeClient.getFillRelayInstruction(fillInput);
351
- createFillIx.accounts.push(...remainingAccounts);
352
- return (0, kit_1.pipe)(await (0, _1.createDefaultTransaction)(solanaClient, signer), (tx) => (createRecipientAta ? (0, kit_1.appendTransactionMessageInstruction)(getCreateAssociatedTokenIx(), tx) : tx), (tx) => (0, kit_1.appendTransactionMessageInstruction)(approveIx, tx), (tx) => (0, kit_1.appendTransactionMessageInstruction)(createFillIx, tx));
353
544
  };
354
545
  exports.createFillInstruction = createFillInstruction;
355
546
  function deserializeMessage(_message) {
356
- const message = new Uint8Array(Buffer.from(_message.startsWith("0x") ? _message.slice(2) : _message, "hex"));
357
- const acrossPlusMessageDecoder = (0, _1.getAcrossPlusMessageDecoder)();
358
- const deserialized = acrossPlusMessageDecoder.decode(message);
359
- const valueAmountMethod2 = extractValueAmount(message);
547
+ var message = new Uint8Array(Buffer.from(_message.startsWith("0x") ? _message.slice(2) : _message, "hex"));
548
+ var acrossPlusMessageDecoder = (0, _1.getAcrossPlusMessageDecoder)();
549
+ var deserialized = acrossPlusMessageDecoder.decode(message);
550
+ var valueAmountMethod2 = extractValueAmount(message);
360
551
  (0, assert_1.default)(deserialized.value_amount === valueAmountMethod2, "svm | deserializeMessage: Deserialization mismatch for value_amount");
361
552
  return deserialized;
362
553
  }
363
- const createDepositInstruction = async (signer, solanaClient, depositInput, tokenDecimals, createVaultAtaIfNeeded = true) => {
364
- const getCreateAssociatedTokenIdempotentIx = () => (0, token_1.getCreateAssociatedTokenIdempotentInstruction)({
365
- payer: signer,
366
- owner: depositInput.state,
367
- mint: depositInput.mint,
368
- ata: depositInput.vault,
369
- systemProgram: depositInput.systemProgram,
370
- tokenProgram: depositInput.tokenProgram,
371
- });
372
- const mintInfo = await getMintInfo(solanaClient, depositInput.mint);
373
- const approveIx = (0, token_1.getApproveCheckedInstruction)({
374
- source: depositInput.depositorTokenAccount,
375
- mint: depositInput.mint,
376
- delegate: depositInput.delegate,
377
- owner: depositInput.depositor,
378
- amount: depositInput.inputAmount,
379
- decimals: tokenDecimals,
380
- }, {
381
- programAddress: mintInfo.programAddress,
554
+ var createDepositInstruction = function (signer_1, solanaClient_1, depositInput_1, tokenDecimals_1) {
555
+ var args_1 = [];
556
+ for (var _i = 4; _i < arguments.length; _i++) {
557
+ args_1[_i - 4] = arguments[_i];
558
+ }
559
+ return tslib_1.__awaiter(void 0, tslib_1.__spreadArray([signer_1, solanaClient_1, depositInput_1, tokenDecimals_1], args_1, true), void 0, function (signer, solanaClient, depositInput, tokenDecimals, createVaultAtaIfNeeded) {
560
+ var getCreateAssociatedTokenIdempotentIx, mintInfo, approveIx, depositIx, _a;
561
+ if (createVaultAtaIfNeeded === void 0) { createVaultAtaIfNeeded = true; }
562
+ return tslib_1.__generator(this, function (_b) {
563
+ switch (_b.label) {
564
+ case 0:
565
+ getCreateAssociatedTokenIdempotentIx = function () {
566
+ return (0, token_1.getCreateAssociatedTokenIdempotentInstruction)({
567
+ payer: signer,
568
+ owner: depositInput.state,
569
+ mint: depositInput.mint,
570
+ ata: depositInput.vault,
571
+ systemProgram: depositInput.systemProgram,
572
+ tokenProgram: depositInput.tokenProgram,
573
+ });
574
+ };
575
+ return [4, getMintInfo(solanaClient, depositInput.mint)];
576
+ case 1:
577
+ mintInfo = _b.sent();
578
+ approveIx = (0, token_1.getApproveCheckedInstruction)({
579
+ source: depositInput.depositorTokenAccount,
580
+ mint: depositInput.mint,
581
+ delegate: depositInput.delegate,
582
+ owner: depositInput.depositor,
583
+ amount: depositInput.inputAmount,
584
+ decimals: tokenDecimals,
585
+ }, {
586
+ programAddress: mintInfo.programAddress,
587
+ });
588
+ depositIx = contracts_1.SvmSpokeClient.getDepositInstruction(depositInput);
589
+ _a = kit_1.pipe;
590
+ return [4, (0, _1.createDefaultTransaction)(solanaClient, signer)];
591
+ case 2: return [2, _a.apply(void 0, [_b.sent(), function (tx) {
592
+ return createVaultAtaIfNeeded ? (0, kit_1.appendTransactionMessageInstruction)(getCreateAssociatedTokenIdempotentIx(), tx) : tx;
593
+ },
594
+ function (tx) { return (0, kit_1.appendTransactionMessageInstruction)(approveIx, tx); },
595
+ function (tx) { return (0, kit_1.appendTransactionMessageInstruction)(depositIx, tx); }])];
596
+ }
597
+ });
382
598
  });
383
- const depositIx = contracts_1.SvmSpokeClient.getDepositInstruction(depositInput);
384
- return (0, kit_1.pipe)(await (0, _1.createDefaultTransaction)(solanaClient, signer), (tx) => createVaultAtaIfNeeded ? (0, kit_1.appendTransactionMessageInstruction)(getCreateAssociatedTokenIdempotentIx(), tx) : tx, (tx) => (0, kit_1.appendTransactionMessageInstruction)(approveIx, tx), (tx) => (0, kit_1.appendTransactionMessageInstruction)(depositIx, tx));
385
599
  };
386
600
  exports.createDepositInstruction = createDepositInstruction;
387
- const createRequestSlowFillInstruction = async (signer, solanaClient, requestSlowFillInput) => {
388
- const requestSlowFillIx = contracts_1.SvmSpokeClient.getRequestSlowFillInstruction(requestSlowFillInput);
389
- return (0, kit_1.pipe)(await (0, _1.createDefaultTransaction)(solanaClient, signer), (tx) => (0, kit_1.appendTransactionMessageInstruction)(requestSlowFillIx, tx));
390
- };
601
+ var createRequestSlowFillInstruction = function (signer, solanaClient, requestSlowFillInput) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
602
+ var requestSlowFillIx, _a;
603
+ return tslib_1.__generator(this, function (_b) {
604
+ switch (_b.label) {
605
+ case 0:
606
+ requestSlowFillIx = contracts_1.SvmSpokeClient.getRequestSlowFillInstruction(requestSlowFillInput);
607
+ _a = kit_1.pipe;
608
+ return [4, (0, _1.createDefaultTransaction)(solanaClient, signer)];
609
+ case 1: return [2, _a.apply(void 0, [_b.sent(), function (tx) {
610
+ return (0, kit_1.appendTransactionMessageInstruction)(requestSlowFillIx, tx);
611
+ }])];
612
+ }
613
+ });
614
+ }); };
391
615
  exports.createRequestSlowFillInstruction = createRequestSlowFillInstruction;
392
- async function getSlowFillRequestTx(spokePoolAddr, solanaClient, relayData, signer) {
393
- const program = (0, _1.toAddress)(spokePoolAddr);
394
- const messageHash = (0, utils_2.getMessageHash)(relayData.message);
395
- const relayDataHash = getRelayDataHash({ ...relayData, messageHash }, relayData.destinationChainId);
396
- const [state, fillStatus, eventAuthority] = await Promise.all([
397
- (0, _1.getStatePda)(program),
398
- (0, _1.getFillStatusPda)(program, relayData, relayData.destinationChainId),
399
- (0, _1.getEventAuthority)(program),
400
- ]);
401
- const svmRelayData = (0, _1.toSvmRelayData)(relayData);
402
- const requestSlowFillInput = {
403
- signer,
404
- state,
405
- fillStatus,
406
- eventAuthority,
407
- program,
408
- relayHash: (0, utils_1.arrayify)(relayDataHash),
409
- relayData: svmRelayData,
410
- systemProgram: system_1.SYSTEM_PROGRAM_ADDRESS,
411
- };
412
- return (0, exports.createRequestSlowFillInstruction)(signer, solanaClient, requestSlowFillInput);
413
- }
414
- const createCloseFillPdaInstruction = async (signer, solanaClient, fillStatusPda) => {
415
- const closeFillPdaIx = contracts_1.SvmSpokeClient.getCloseFillPdaInstruction({
416
- signer,
417
- state: await (0, _1.getStatePda)(contracts_1.SvmSpokeClient.SVM_SPOKE_PROGRAM_ADDRESS),
418
- fillStatus: fillStatusPda,
616
+ function getSlowFillRequestTx(spokePoolAddr, solanaClient, relayData, signer) {
617
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
618
+ var program, messageHash, relayDataHash, _a, state, fillStatus, eventAuthority, svmRelayData, requestSlowFillInput;
619
+ return tslib_1.__generator(this, function (_b) {
620
+ switch (_b.label) {
621
+ case 0:
622
+ program = (0, _1.toAddress)(spokePoolAddr);
623
+ messageHash = (0, utils_2.getMessageHash)(relayData.message);
624
+ relayDataHash = getRelayDataHash(tslib_1.__assign(tslib_1.__assign({}, relayData), { messageHash: messageHash }), relayData.destinationChainId);
625
+ return [4, Promise.all([
626
+ (0, _1.getStatePda)(program),
627
+ (0, _1.getFillStatusPda)(program, relayData, relayData.destinationChainId),
628
+ (0, _1.getEventAuthority)(program),
629
+ ])];
630
+ case 1:
631
+ _a = _b.sent(), state = _a[0], fillStatus = _a[1], eventAuthority = _a[2];
632
+ svmRelayData = (0, _1.toSvmRelayData)(relayData);
633
+ requestSlowFillInput = {
634
+ signer: signer,
635
+ state: state,
636
+ fillStatus: fillStatus,
637
+ eventAuthority: eventAuthority,
638
+ program: program,
639
+ relayHash: (0, utils_1.arrayify)(relayDataHash),
640
+ relayData: svmRelayData,
641
+ systemProgram: system_1.SYSTEM_PROGRAM_ADDRESS,
642
+ };
643
+ return [2, (0, exports.createRequestSlowFillInstruction)(signer, solanaClient, requestSlowFillInput)];
644
+ }
645
+ });
419
646
  });
420
- return (0, kit_1.pipe)(await (0, _1.createDefaultTransaction)(solanaClient, signer), (tx) => (0, kit_1.appendTransactionMessageInstruction)(closeFillPdaIx, tx));
421
- };
647
+ }
648
+ var createCloseFillPdaInstruction = function (signer, solanaClient, fillStatusPda) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
649
+ var closeFillPdaIx, _a, _b, _c;
650
+ var _d;
651
+ return tslib_1.__generator(this, function (_e) {
652
+ switch (_e.label) {
653
+ case 0:
654
+ _b = (_a = contracts_1.SvmSpokeClient).getCloseFillPdaInstruction;
655
+ _d = {
656
+ signer: signer
657
+ };
658
+ return [4, (0, _1.getStatePda)(contracts_1.SvmSpokeClient.SVM_SPOKE_PROGRAM_ADDRESS)];
659
+ case 1:
660
+ closeFillPdaIx = _b.apply(_a, [(_d.state = _e.sent(),
661
+ _d.fillStatus = fillStatusPda,
662
+ _d)]);
663
+ _c = kit_1.pipe;
664
+ return [4, (0, _1.createDefaultTransaction)(solanaClient, signer)];
665
+ case 2: return [2, _c.apply(void 0, [_e.sent(), function (tx) {
666
+ return (0, kit_1.appendTransactionMessageInstruction)(closeFillPdaIx, tx);
667
+ }])];
668
+ }
669
+ });
670
+ }); };
422
671
  exports.createCloseFillPdaInstruction = createCloseFillPdaInstruction;
423
- const createReceiveMessageInstruction = async (signer, solanaClient, input, remainingAccounts) => {
424
- const receiveMessageIx = contracts_1.MessageTransmitterClient.getReceiveMessageInstruction(input);
425
- receiveMessageIx.accounts.push(...remainingAccounts);
426
- return (0, kit_1.pipe)(await (0, _1.createDefaultTransaction)(solanaClient, signer), (tx) => (0, kit_1.appendTransactionMessageInstruction)(receiveMessageIx, tx));
427
- };
672
+ var createReceiveMessageInstruction = function (signer, solanaClient, input, remainingAccounts) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
673
+ var receiveMessageIx, _a;
674
+ var _b;
675
+ return tslib_1.__generator(this, function (_c) {
676
+ switch (_c.label) {
677
+ case 0:
678
+ receiveMessageIx = contracts_1.MessageTransmitterClient.getReceiveMessageInstruction(input);
679
+ (_b = receiveMessageIx.accounts).push.apply(_b, remainingAccounts);
680
+ _a = kit_1.pipe;
681
+ return [4, (0, _1.createDefaultTransaction)(solanaClient, signer)];
682
+ case 1: return [2, _a.apply(void 0, [_c.sent(), function (tx) {
683
+ return (0, kit_1.appendTransactionMessageInstruction)(receiveMessageIx, tx);
684
+ }])];
685
+ }
686
+ });
687
+ }); };
428
688
  exports.createReceiveMessageInstruction = createReceiveMessageInstruction;
429
- async function getAssociatedTokenAddress(owner, mint, tokenProgramId = token_1.TOKEN_PROGRAM_ADDRESS) {
430
- const encoder = (0, kit_1.getAddressEncoder)();
431
- const [associatedToken] = await (0, kit_1.getProgramDerivedAddress)({
432
- programAddress: token_1.ASSOCIATED_TOKEN_PROGRAM_ADDRESS,
433
- seeds: [encoder.encode((0, _1.toAddress)(owner)), encoder.encode(tokenProgramId), encoder.encode((0, _1.toAddress)(mint))],
689
+ function getAssociatedTokenAddress(owner_1, mint_1) {
690
+ return tslib_1.__awaiter(this, arguments, void 0, function (owner, mint, tokenProgramId) {
691
+ var encoder, associatedToken;
692
+ if (tokenProgramId === void 0) { tokenProgramId = token_1.TOKEN_PROGRAM_ADDRESS; }
693
+ return tslib_1.__generator(this, function (_a) {
694
+ switch (_a.label) {
695
+ case 0:
696
+ encoder = (0, kit_1.getAddressEncoder)();
697
+ return [4, (0, kit_1.getProgramDerivedAddress)({
698
+ programAddress: token_1.ASSOCIATED_TOKEN_PROGRAM_ADDRESS,
699
+ seeds: [encoder.encode((0, _1.toAddress)(owner)), encoder.encode(tokenProgramId), encoder.encode((0, _1.toAddress)(mint))],
700
+ })];
701
+ case 1:
702
+ associatedToken = (_a.sent())[0];
703
+ return [2, associatedToken];
704
+ }
705
+ });
434
706
  });
435
- return associatedToken;
436
707
  }
437
708
  function getRelayDataHash(relayData, destinationChainId) {
438
709
  (0, assert_1.default)(relayData.messageHash.startsWith("0x"), "Message hash must be a hex string");
439
- const uint64Encoder = (0, kit_1.getU64Encoder)();
440
- const svmRelayData = (0, _1.toSvmRelayData)(relayData);
441
- const relayDataEncoder = contracts_1.SvmSpokeClient.getRelayDataEncoder();
442
- const encodedRelayData = relayDataEncoder.encode(svmRelayData);
443
- const encodedMessage = Buffer.from(relayData.message.slice(2), "hex");
444
- const encodedMessageHash = Uint8Array.from(Buffer.from(relayData.messageHash.slice(2), "hex"));
445
- const messageOffset = encodedRelayData.length - 4 - encodedMessage.length;
446
- const contentToHash = Buffer.concat([
710
+ var uint64Encoder = (0, kit_1.getU64Encoder)();
711
+ var svmRelayData = (0, _1.toSvmRelayData)(relayData);
712
+ var relayDataEncoder = contracts_1.SvmSpokeClient.getRelayDataEncoder();
713
+ var encodedRelayData = relayDataEncoder.encode(svmRelayData);
714
+ var encodedMessage = Buffer.from(relayData.message.slice(2), "hex");
715
+ var encodedMessageHash = Uint8Array.from(Buffer.from(relayData.messageHash.slice(2), "hex"));
716
+ var messageOffset = encodedRelayData.length - 4 - encodedMessage.length;
717
+ var contentToHash = Buffer.concat([
447
718
  encodedRelayData.slice(0, messageOffset),
448
719
  encodedMessageHash,
449
720
  Uint8Array.from(uint64Encoder.encode(BigInt(destinationChainId))),
450
721
  ]);
451
722
  return (0, utils_2.keccak256)(contentToHash);
452
723
  }
453
- async function resolveFillStatusFromPdaEvents(fillStatusPda, toSlot, svmEventsClient) {
454
- const eventsToQuery = [types_1.SVMEventNames.FilledRelay, types_1.SVMEventNames.RequestedSlowFill];
455
- const relevantEvents = (await Promise.all(eventsToQuery.map((eventName) => svmEventsClient.queryDerivedAddressEvents(eventName, fillStatusPda, undefined, toSlot, { limit: 10 })))).flat();
456
- if (relevantEvents.length === 0) {
457
- return interfaces_1.FillStatus.Unfilled;
458
- }
459
- relevantEvents.sort((a, b) => Number(a.slot - b.slot));
460
- const fillStatusEvent = relevantEvents.pop();
461
- switch (fillStatusEvent.name) {
462
- case types_1.SVMEventNames.FilledRelay:
463
- return interfaces_1.FillStatus.Filled;
464
- case types_1.SVMEventNames.RequestedSlowFill:
465
- return interfaces_1.FillStatus.RequestedSlowFill;
466
- default:
467
- throw new Error(`Unexpected event name: ${fillStatusEvent.name}`);
468
- }
469
- }
470
- async function fetchBatchFillStatusFromPdaAccounts(provider, fillStatusPdas, relayDataArray, logger) {
471
- const chunkSize = 100;
472
- const commitment = "confirmed";
473
- const [pdaAccounts, { timestamp }] = await Promise.all([
474
- Promise.all((0, utils_2.chunk)(fillStatusPdas, chunkSize).map((chunk) => (0, kit_1.fetchEncodedAccounts)(provider, chunk, { commitment }))),
475
- (0, utils_3.getNearestSlotTime)(provider, { commitment }, logger),
476
- ]);
477
- const fillStatuses = pdaAccounts.flat().map((account, index) => {
478
- if (account.exists) {
479
- const decodedAccount = (0, SvmSpoke_1.decodeFillStatusAccount)(account);
480
- return decodedAccount.data.status;
481
- }
482
- if (timestamp < relayDataArray[index].fillDeadline) {
483
- return interfaces_1.FillStatus.Unfilled;
484
- }
485
- return undefined;
486
- });
487
- return fillStatuses;
488
- }
489
- async function getFillRelayViaInstructionParamsInstructions(spokePool, relayData, repaymentChainId, repaymentAddress, signer, maxWriteSize = 450) {
490
- const instructionParams = await (0, _1.getInstructionParamsPda)(spokePool, signer.address);
491
- const relayDataEncoder = contracts_1.SvmSpokeClient.getFillRelayParamsEncoder();
492
- const svmRelayData = (0, _1.toSvmRelayData)(relayData);
493
- const encodedRelayData = relayDataEncoder.encode({
494
- relayData: svmRelayData,
495
- repaymentChainId,
496
- repaymentAddress: (0, _1.toAddress)(repaymentAddress),
724
+ function resolveFillStatusFromPdaEvents(fillStatusPda, toSlot, svmEventsClient) {
725
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
726
+ var eventsToQuery, relevantEvents, fillStatusEvent;
727
+ return tslib_1.__generator(this, function (_a) {
728
+ switch (_a.label) {
729
+ case 0:
730
+ eventsToQuery = [types_1.SVMEventNames.FilledRelay, types_1.SVMEventNames.RequestedSlowFill];
731
+ return [4, Promise.all(eventsToQuery.map(function (eventName) {
732
+ return svmEventsClient.queryDerivedAddressEvents(eventName, fillStatusPda, undefined, toSlot, { limit: 10 });
733
+ }))];
734
+ case 1:
735
+ relevantEvents = (_a.sent()).flat();
736
+ if (relevantEvents.length === 0) {
737
+ return [2, interfaces_1.FillStatus.Unfilled];
738
+ }
739
+ relevantEvents.sort(function (a, b) { return Number(a.slot - b.slot); });
740
+ fillStatusEvent = relevantEvents.pop();
741
+ switch (fillStatusEvent.name) {
742
+ case types_1.SVMEventNames.FilledRelay:
743
+ return [2, interfaces_1.FillStatus.Filled];
744
+ case types_1.SVMEventNames.RequestedSlowFill:
745
+ return [2, interfaces_1.FillStatus.RequestedSlowFill];
746
+ default:
747
+ throw new Error("Unexpected event name: ".concat(fillStatusEvent.name));
748
+ }
749
+ return [2];
750
+ }
751
+ });
497
752
  });
498
- const initInstructionParamsIx = contracts_1.SvmSpokeClient.getInitializeInstructionParamsInstruction({
499
- signer,
500
- instructionParams,
501
- totalSize: encodedRelayData.length,
753
+ }
754
+ function fetchBatchFillStatusFromPdaAccounts(provider, fillStatusPdas, relayDataArray, logger) {
755
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
756
+ var chunkSize, commitment, _a, pdaAccounts, timestamp, fillStatuses;
757
+ return tslib_1.__generator(this, function (_b) {
758
+ switch (_b.label) {
759
+ case 0:
760
+ chunkSize = 100;
761
+ commitment = "confirmed";
762
+ return [4, Promise.all([
763
+ Promise.all((0, utils_2.chunk)(fillStatusPdas, chunkSize).map(function (chunk) { return (0, kit_1.fetchEncodedAccounts)(provider, chunk, { commitment: commitment }); })),
764
+ (0, utils_3.getNearestSlotTime)(provider, { commitment: commitment }, logger),
765
+ ])];
766
+ case 1:
767
+ _a = _b.sent(), pdaAccounts = _a[0], timestamp = _a[1].timestamp;
768
+ fillStatuses = pdaAccounts.flat().map(function (account, index) {
769
+ if (account.exists) {
770
+ var decodedAccount = (0, SvmSpoke_1.decodeFillStatusAccount)(account);
771
+ return decodedAccount.data.status;
772
+ }
773
+ if (timestamp < relayDataArray[index].fillDeadline) {
774
+ return interfaces_1.FillStatus.Unfilled;
775
+ }
776
+ return undefined;
777
+ });
778
+ return [2, fillStatuses];
779
+ }
780
+ });
502
781
  });
503
- const instructions = [initInstructionParamsIx];
504
- for (let i = 0; i <= encodedRelayData.length / maxWriteSize; ++i) {
505
- const offset = i * maxWriteSize;
506
- const offsetEnd = Math.min(offset + maxWriteSize, encodedRelayData.length);
507
- const fragment = encodedRelayData.slice(offset, offsetEnd);
508
- const writeInstructionParamsIx = contracts_1.SvmSpokeClient.getWriteInstructionParamsFragmentInstruction({
509
- signer,
510
- instructionParams,
511
- offset,
512
- fragment,
782
+ }
783
+ function getFillRelayViaInstructionParamsInstructions(spokePool_1, relayData_1, repaymentChainId_1, repaymentAddress_1, signer_1) {
784
+ return tslib_1.__awaiter(this, arguments, void 0, function (spokePool, relayData, repaymentChainId, repaymentAddress, signer, maxWriteSize) {
785
+ var instructionParams, relayDataEncoder, svmRelayData, encodedRelayData, initInstructionParamsIx, instructions, i, offset, offsetEnd, fragment, writeInstructionParamsIx;
786
+ if (maxWriteSize === void 0) { maxWriteSize = 450; }
787
+ return tslib_1.__generator(this, function (_a) {
788
+ switch (_a.label) {
789
+ case 0: return [4, (0, _1.getInstructionParamsPda)(spokePool, signer.address)];
790
+ case 1:
791
+ instructionParams = _a.sent();
792
+ relayDataEncoder = contracts_1.SvmSpokeClient.getFillRelayParamsEncoder();
793
+ svmRelayData = (0, _1.toSvmRelayData)(relayData);
794
+ encodedRelayData = relayDataEncoder.encode({
795
+ relayData: svmRelayData,
796
+ repaymentChainId: repaymentChainId,
797
+ repaymentAddress: (0, _1.toAddress)(repaymentAddress),
798
+ });
799
+ initInstructionParamsIx = contracts_1.SvmSpokeClient.getInitializeInstructionParamsInstruction({
800
+ signer: signer,
801
+ instructionParams: instructionParams,
802
+ totalSize: encodedRelayData.length,
803
+ });
804
+ instructions = [initInstructionParamsIx];
805
+ for (i = 0; i <= encodedRelayData.length / maxWriteSize; ++i) {
806
+ offset = i * maxWriteSize;
807
+ offsetEnd = Math.min(offset + maxWriteSize, encodedRelayData.length);
808
+ fragment = encodedRelayData.slice(offset, offsetEnd);
809
+ writeInstructionParamsIx = contracts_1.SvmSpokeClient.getWriteInstructionParamsFragmentInstruction({
810
+ signer: signer,
811
+ instructionParams: instructionParams,
812
+ offset: offset,
813
+ fragment: fragment,
814
+ });
815
+ instructions.push(writeInstructionParamsIx);
816
+ }
817
+ return [2, instructions];
818
+ }
513
819
  });
514
- instructions.push(writeInstructionParamsIx);
515
- }
516
- return instructions;
517
- }
518
- async function getDepositDelegatePda(depositData, programId) {
519
- const addrEnc = (0, kit_1.getAddressEncoder)();
520
- const u64 = (0, kit_1.getU64Encoder)();
521
- const u32 = (0, kit_1.getU32Encoder)();
522
- const parts = [
523
- Uint8Array.from(addrEnc.encode(depositData.depositor)),
524
- Uint8Array.from(addrEnc.encode(depositData.recipient)),
525
- Uint8Array.from(addrEnc.encode(depositData.inputToken)),
526
- Uint8Array.from(addrEnc.encode(depositData.outputToken)),
527
- Uint8Array.from(u64.encode(depositData.inputAmount)),
528
- Uint8Array.from(depositData.outputAmount),
529
- Uint8Array.from(u64.encode(depositData.destinationChainId)),
530
- Uint8Array.from(addrEnc.encode(depositData.exclusiveRelayer)),
531
- Uint8Array.from(u32.encode(depositData.quoteTimestamp)),
532
- Uint8Array.from(u32.encode(depositData.fillDeadline)),
533
- Uint8Array.from(u32.encode(depositData.exclusivityParameter)),
534
- Uint8Array.from(u32.encode(BigInt(depositData.message.length))),
535
- depositData.message,
536
- ];
537
- const seedHash = Buffer.from((0, utils_2.keccak256)(Buffer.concat(parts)).slice(2), "hex");
538
- const [pda] = await (0, kit_1.getProgramDerivedAddress)({
539
- programAddress: programId,
540
- seeds: [Buffer.from("delegate"), seedHash],
541
820
  });
542
- return pda;
543
- }
544
- async function getDepositNowDelegatePda(depositData, programId) {
545
- const addrEnc = (0, kit_1.getAddressEncoder)();
546
- const u64 = (0, kit_1.getU64Encoder)();
547
- const u32 = (0, kit_1.getU32Encoder)();
548
- const parts = [
549
- Uint8Array.from(addrEnc.encode(depositData.depositor)),
550
- Uint8Array.from(addrEnc.encode(depositData.recipient)),
551
- Uint8Array.from(addrEnc.encode(depositData.inputToken)),
552
- Uint8Array.from(addrEnc.encode(depositData.outputToken)),
553
- Uint8Array.from(u64.encode(depositData.inputAmount)),
554
- Uint8Array.from(depositData.outputAmount),
555
- Uint8Array.from(u64.encode(depositData.destinationChainId)),
556
- Uint8Array.from(addrEnc.encode(depositData.exclusiveRelayer)),
557
- Uint8Array.from(u32.encode(depositData.fillDeadlineOffset)),
558
- Uint8Array.from(u32.encode(depositData.exclusivityPeriod)),
559
- Uint8Array.from(u32.encode(BigInt(depositData.message.length))),
560
- depositData.message,
561
- ];
562
- const seedHash = Buffer.from((0, utils_2.keccak256)(Buffer.concat(parts)).slice(2), "hex");
563
- const [pda] = await (0, kit_1.getProgramDerivedAddress)({
564
- programAddress: programId,
565
- seeds: [Buffer.from("delegate"), seedHash],
821
+ }
822
+ function getDepositDelegatePda(depositData, programId) {
823
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
824
+ var addrEnc, u64, u32, parts, seedHash, pda;
825
+ return tslib_1.__generator(this, function (_a) {
826
+ switch (_a.label) {
827
+ case 0:
828
+ addrEnc = (0, kit_1.getAddressEncoder)();
829
+ u64 = (0, kit_1.getU64Encoder)();
830
+ u32 = (0, kit_1.getU32Encoder)();
831
+ parts = [
832
+ Uint8Array.from(addrEnc.encode(depositData.depositor)),
833
+ Uint8Array.from(addrEnc.encode(depositData.recipient)),
834
+ Uint8Array.from(addrEnc.encode(depositData.inputToken)),
835
+ Uint8Array.from(addrEnc.encode(depositData.outputToken)),
836
+ Uint8Array.from(u64.encode(depositData.inputAmount)),
837
+ Uint8Array.from(depositData.outputAmount),
838
+ Uint8Array.from(u64.encode(depositData.destinationChainId)),
839
+ Uint8Array.from(addrEnc.encode(depositData.exclusiveRelayer)),
840
+ Uint8Array.from(u32.encode(depositData.quoteTimestamp)),
841
+ Uint8Array.from(u32.encode(depositData.fillDeadline)),
842
+ Uint8Array.from(u32.encode(depositData.exclusivityParameter)),
843
+ Uint8Array.from(u32.encode(BigInt(depositData.message.length))),
844
+ depositData.message,
845
+ ];
846
+ seedHash = Buffer.from((0, utils_2.keccak256)(Buffer.concat(parts)).slice(2), "hex");
847
+ return [4, (0, kit_1.getProgramDerivedAddress)({
848
+ programAddress: programId,
849
+ seeds: [Buffer.from("delegate"), seedHash],
850
+ })];
851
+ case 1:
852
+ pda = (_a.sent())[0];
853
+ return [2, pda];
854
+ }
855
+ });
566
856
  });
567
- return pda;
568
- }
569
- async function getFillRelayDelegatePda(relayHash, repaymentChainId, repaymentAddress, programId) {
570
- const addrEnc = (0, kit_1.getAddressEncoder)();
571
- const u64 = (0, kit_1.getU64Encoder)();
572
- const parts = [
573
- relayHash,
574
- Uint8Array.from(u64.encode(repaymentChainId)),
575
- Uint8Array.from(addrEnc.encode(repaymentAddress)),
576
- ];
577
- const seedHash = Buffer.from((0, utils_2.keccak256)(Buffer.concat(parts)).slice(2), "hex");
578
- const [pda] = await (0, kit_1.getProgramDerivedAddress)({
579
- programAddress: programId,
580
- seeds: [Buffer.from("delegate"), seedHash],
857
+ }
858
+ function getDepositNowDelegatePda(depositData, programId) {
859
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
860
+ var addrEnc, u64, u32, parts, seedHash, pda;
861
+ return tslib_1.__generator(this, function (_a) {
862
+ switch (_a.label) {
863
+ case 0:
864
+ addrEnc = (0, kit_1.getAddressEncoder)();
865
+ u64 = (0, kit_1.getU64Encoder)();
866
+ u32 = (0, kit_1.getU32Encoder)();
867
+ parts = [
868
+ Uint8Array.from(addrEnc.encode(depositData.depositor)),
869
+ Uint8Array.from(addrEnc.encode(depositData.recipient)),
870
+ Uint8Array.from(addrEnc.encode(depositData.inputToken)),
871
+ Uint8Array.from(addrEnc.encode(depositData.outputToken)),
872
+ Uint8Array.from(u64.encode(depositData.inputAmount)),
873
+ Uint8Array.from(depositData.outputAmount),
874
+ Uint8Array.from(u64.encode(depositData.destinationChainId)),
875
+ Uint8Array.from(addrEnc.encode(depositData.exclusiveRelayer)),
876
+ Uint8Array.from(u32.encode(depositData.fillDeadlineOffset)),
877
+ Uint8Array.from(u32.encode(depositData.exclusivityPeriod)),
878
+ Uint8Array.from(u32.encode(BigInt(depositData.message.length))),
879
+ depositData.message,
880
+ ];
881
+ seedHash = Buffer.from((0, utils_2.keccak256)(Buffer.concat(parts)).slice(2), "hex");
882
+ return [4, (0, kit_1.getProgramDerivedAddress)({
883
+ programAddress: programId,
884
+ seeds: [Buffer.from("delegate"), seedHash],
885
+ })];
886
+ case 1:
887
+ pda = (_a.sent())[0];
888
+ return [2, pda];
889
+ }
890
+ });
581
891
  });
582
- return pda;
583
892
  }
584
- const hasCCTPV1MessageBeenProcessed = async (solanaClient, signer, nonce, sourceDomain, latestBlockhash) => {
585
- const noncePda = await (0, _1.getCCTPNoncePda)(solanaClient, signer, nonce, sourceDomain);
586
- const isNonceUsedIx = contracts_1.MessageTransmitterClient.getIsNonceUsedInstruction({
587
- nonce: nonce,
588
- usedNonces: noncePda,
893
+ function getFillRelayDelegatePda(relayHash, repaymentChainId, repaymentAddress, programId) {
894
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
895
+ var addrEnc, u64, parts, seedHash, pda;
896
+ return tslib_1.__generator(this, function (_a) {
897
+ switch (_a.label) {
898
+ case 0:
899
+ addrEnc = (0, kit_1.getAddressEncoder)();
900
+ u64 = (0, kit_1.getU64Encoder)();
901
+ parts = [
902
+ relayHash,
903
+ Uint8Array.from(u64.encode(repaymentChainId)),
904
+ Uint8Array.from(addrEnc.encode(repaymentAddress)),
905
+ ];
906
+ seedHash = Buffer.from((0, utils_2.keccak256)(Buffer.concat(parts)).slice(2), "hex");
907
+ return [4, (0, kit_1.getProgramDerivedAddress)({
908
+ programAddress: programId,
909
+ seeds: [Buffer.from("delegate"), seedHash],
910
+ })];
911
+ case 1:
912
+ pda = (_a.sent())[0];
913
+ return [2, pda];
914
+ }
915
+ });
589
916
  });
590
- const parserFunction = (buf) => {
591
- if (buf.length != 1) {
592
- throw new Error("Invalid buffer length for isNonceUsedIx");
917
+ }
918
+ var hasCCTPV1MessageBeenProcessed = function (solanaClient, signer, nonce, sourceDomain, latestBlockhash) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
919
+ var noncePda, isNonceUsedIx, parserFunction;
920
+ return tslib_1.__generator(this, function (_a) {
921
+ switch (_a.label) {
922
+ case 0: return [4, (0, _1.getCCTPNoncePda)(solanaClient, signer, nonce, sourceDomain)];
923
+ case 1:
924
+ noncePda = _a.sent();
925
+ isNonceUsedIx = contracts_1.MessageTransmitterClient.getIsNonceUsedInstruction({
926
+ nonce: nonce,
927
+ usedNonces: noncePda,
928
+ });
929
+ parserFunction = function (buf) {
930
+ if (buf.length != 1) {
931
+ throw new Error("Invalid buffer length for isNonceUsedIx");
932
+ }
933
+ return Boolean(buf[0]);
934
+ };
935
+ return [4, (0, _1.simulateAndDecode)(solanaClient, isNonceUsedIx, signer, parserFunction, latestBlockhash)];
936
+ case 2: return [2, _a.sent()];
593
937
  }
594
- return Boolean(buf[0]);
595
- };
596
- return await (0, _1.simulateAndDecode)(solanaClient, isNonceUsedIx, signer, parserFunction, latestBlockhash);
597
- };
598
- exports.hasCCTPV1MessageBeenProcessed = hasCCTPV1MessageBeenProcessed;
599
- async function getAccountMetasForTokenlessMessage(solanaClient, signer, messageBytes) {
600
- const messageHex = messageBytes.slice(2);
601
- const messageHeader = (0, web3_v1_1.decodeMessageHeader)(Buffer.from(messageHex, "hex"));
602
- const programAddress = contracts_1.SvmSpokeClient.SVM_SPOKE_PROGRAM_ADDRESS;
603
- const statePda = await (0, _1.getStatePda)(programAddress);
604
- const selfAuthority = await (0, _1.getSelfAuthority)();
605
- const eventAuthority = await (0, _1.getEventAuthority)(programAddress);
606
- const base = [
607
- { address: statePda, role: kit_1.AccountRole.READONLY },
608
- { address: selfAuthority, role: kit_1.AccountRole.READONLY },
609
- { address: programAddress, role: kit_1.AccountRole.READONLY },
610
- ];
611
- if ((0, utils_3.isRelayRootBundleMessageBody)(messageHeader.messageBody)) {
612
- const { data: { rootBundleId }, } = await contracts_1.SvmSpokeClient.fetchState(solanaClient, statePda);
613
- const rootBundle = await (0, _1.getRootBundlePda)(programAddress, rootBundleId);
614
- return [
615
- ...base,
616
- { address: signer.address, role: kit_1.AccountRole.WRITABLE },
617
- { address: statePda, role: kit_1.AccountRole.WRITABLE },
618
- { address: rootBundle, role: kit_1.AccountRole.WRITABLE },
619
- { address: system_1.SYSTEM_PROGRAM_ADDRESS, role: kit_1.AccountRole.READONLY },
620
- { address: eventAuthority, role: kit_1.AccountRole.READONLY },
621
- { address: programAddress, role: kit_1.AccountRole.READONLY },
622
- ];
623
- }
624
- if ((0, utils_3.isEmergencyDeleteRootBundleMessageBody)(messageHeader.messageBody)) {
625
- const rootBundleId = (0, utils_3.getEmergencyDeleteRootBundleRootBundleId)(messageHeader.messageBody);
626
- const rootBundle = await (0, _1.getRootBundlePda)(programAddress, rootBundleId);
627
- return [
628
- ...base,
629
- { address: signer.address, role: kit_1.AccountRole.READONLY },
630
- { address: statePda, role: kit_1.AccountRole.READONLY },
631
- { address: rootBundle, role: kit_1.AccountRole.WRITABLE },
632
- { address: eventAuthority, role: kit_1.AccountRole.READONLY },
633
- { address: programAddress, role: kit_1.AccountRole.READONLY },
634
- ];
635
- }
636
- return [
637
- ...base,
638
- { address: statePda, role: kit_1.AccountRole.WRITABLE },
639
- { address: eventAuthority, role: kit_1.AccountRole.READONLY },
640
- { address: programAddress, role: kit_1.AccountRole.READONLY },
641
- ];
642
- }
643
- async function getCCTPDepositAccounts(hubChainId, cctpDestinationDomainId, tokenMessengerMinterAddress, messageTransmitterAddress) {
644
- const l2Usdc = utils_2.SvmAddress.from(constants_1.TOKEN_SYMBOLS_MAP.USDC.addresses[(0, utils_2.chainIsProd)(hubChainId) ? constants_1.CHAIN_IDs.SOLANA : constants_1.CHAIN_IDs.SOLANA_DEVNET]);
645
- const [[tokenMessenger], [tokenMinter], [localToken], [cctpEventAuthority], [remoteTokenMessenger], [tokenMessengerMinterSenderAuthority], [messageTransmitter],] = await Promise.all([
646
- (0, kit_1.getProgramDerivedAddress)({
647
- programAddress: tokenMessengerMinterAddress,
648
- seeds: ["token_messenger"],
649
- }),
650
- (0, kit_1.getProgramDerivedAddress)({
651
- programAddress: tokenMessengerMinterAddress,
652
- seeds: ["token_minter"],
653
- }),
654
- (0, kit_1.getProgramDerivedAddress)({
655
- programAddress: tokenMessengerMinterAddress,
656
- seeds: ["local_token", utils_2.bs58.decode(l2Usdc.toBase58())],
657
- }),
658
- (0, kit_1.getProgramDerivedAddress)({
659
- programAddress: tokenMessengerMinterAddress,
660
- seeds: ["__event_authority"],
661
- }),
662
- (0, kit_1.getProgramDerivedAddress)({
663
- programAddress: tokenMessengerMinterAddress,
664
- seeds: ["remote_token_messenger", String(cctpDestinationDomainId)],
665
- }),
666
- (0, kit_1.getProgramDerivedAddress)({
667
- programAddress: tokenMessengerMinterAddress,
668
- seeds: ["sender_authority"],
669
- }),
670
- (0, kit_1.getProgramDerivedAddress)({
671
- programAddress: messageTransmitterAddress,
672
- seeds: ["message_transmitter"],
673
- }),
674
- ]);
675
- return {
676
- tokenMessenger,
677
- tokenMinter,
678
- localToken,
679
- cctpEventAuthority,
680
- remoteTokenMessenger,
681
- tokenMessengerMinterSenderAuthority,
682
- messageTransmitter,
683
- };
684
- }
685
- async function getAccountMetasForDepositMessage(message, hubChainId, tokenMessengerMinter, recipientAta) {
686
- const l1Usdc = utils_2.EvmAddress.from(constants_1.TOKEN_SYMBOLS_MAP.USDC.addresses[hubChainId]);
687
- const l2Usdc = utils_2.SvmAddress.from(constants_1.TOKEN_SYMBOLS_MAP.USDC.addresses[(0, utils_2.chainIsProd)(hubChainId) ? constants_1.CHAIN_IDs.SOLANA : constants_1.CHAIN_IDs.SOLANA_DEVNET]);
688
- const [tokenMessengerPda] = await (0, kit_1.getProgramDerivedAddress)({
689
- programAddress: tokenMessengerMinter,
690
- seeds: ["token_messenger"],
691
938
  });
692
- const [tokenMinterPda] = await (0, kit_1.getProgramDerivedAddress)({
693
- programAddress: tokenMessengerMinter,
694
- seeds: ["token_minter"],
695
- });
696
- const [localTokenPda] = await (0, kit_1.getProgramDerivedAddress)({
697
- programAddress: tokenMessengerMinter,
698
- seeds: ["local_token", utils_2.bs58.decode(l2Usdc.toBase58())],
699
- });
700
- const [tokenMessengerEventAuthorityPda] = await (0, kit_1.getProgramDerivedAddress)({
701
- programAddress: tokenMessengerMinter,
702
- seeds: ["__event_authority"],
703
- });
704
- const [custodyTokenAccountPda] = await (0, kit_1.getProgramDerivedAddress)({
705
- programAddress: tokenMessengerMinter,
706
- seeds: ["custody", utils_2.bs58.decode(l2Usdc.toBase58())],
707
- });
708
- const [tokenPairPda] = await (0, kit_1.getProgramDerivedAddress)({
709
- programAddress: tokenMessengerMinter,
710
- seeds: [
711
- new Uint8Array(Buffer.from("token_pair")),
712
- new Uint8Array(Buffer.from(String(message.sourceDomain))),
713
- new Uint8Array(Buffer.from(l1Usdc.toBytes32().slice(2), "hex")),
714
- ],
715
- });
716
- const [remoteTokenMessengerPda] = await (0, kit_1.getProgramDerivedAddress)({
717
- programAddress: tokenMessengerMinter,
718
- seeds: ["remote_token_messenger", String(message.sourceDomain)],
719
- });
720
- return [
721
- { address: tokenMessengerPda, role: kit_1.AccountRole.READONLY },
722
- { address: remoteTokenMessengerPda, role: kit_1.AccountRole.READONLY },
723
- { address: tokenMinterPda, role: kit_1.AccountRole.WRITABLE },
724
- { address: localTokenPda, role: kit_1.AccountRole.WRITABLE },
725
- { address: tokenPairPda, role: kit_1.AccountRole.READONLY },
726
- { address: (0, _1.toAddress)(recipientAta), role: kit_1.AccountRole.WRITABLE },
727
- { address: custodyTokenAccountPda, role: kit_1.AccountRole.WRITABLE },
728
- { address: token_1.TOKEN_PROGRAM_ADDRESS, role: kit_1.AccountRole.READONLY },
729
- { address: tokenMessengerEventAuthorityPda, role: kit_1.AccountRole.READONLY },
730
- { address: tokenMessengerMinter, role: kit_1.AccountRole.READONLY },
731
- ];
732
- }
733
- async function getCCTPV1ReceiveMessageTx(solanaClient, signer, message, hubChainId, recipientAta) {
734
- const [messageTransmitterPda] = await (0, kit_1.getProgramDerivedAddress)({
735
- programAddress: contracts_1.MessageTransmitterClient.MESSAGE_TRANSMITTER_PROGRAM_ADDRESS,
736
- seeds: ["message_transmitter"],
939
+ }); };
940
+ exports.hasCCTPV1MessageBeenProcessed = hasCCTPV1MessageBeenProcessed;
941
+ function getAccountMetasForTokenlessMessage(solanaClient, signer, messageBytes) {
942
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
943
+ var messageHex, messageHeader, programAddress, statePda, selfAuthority, eventAuthority, base, rootBundleId, rootBundle, rootBundleId, rootBundle;
944
+ return tslib_1.__generator(this, function (_a) {
945
+ switch (_a.label) {
946
+ case 0:
947
+ messageHex = messageBytes.slice(2);
948
+ messageHeader = (0, web3_v1_1.decodeMessageHeader)(Buffer.from(messageHex, "hex"));
949
+ programAddress = contracts_1.SvmSpokeClient.SVM_SPOKE_PROGRAM_ADDRESS;
950
+ return [4, (0, _1.getStatePda)(programAddress)];
951
+ case 1:
952
+ statePda = _a.sent();
953
+ return [4, (0, _1.getSelfAuthority)()];
954
+ case 2:
955
+ selfAuthority = _a.sent();
956
+ return [4, (0, _1.getEventAuthority)(programAddress)];
957
+ case 3:
958
+ eventAuthority = _a.sent();
959
+ base = [
960
+ { address: statePda, role: kit_1.AccountRole.READONLY },
961
+ { address: selfAuthority, role: kit_1.AccountRole.READONLY },
962
+ { address: programAddress, role: kit_1.AccountRole.READONLY },
963
+ ];
964
+ if (!(0, utils_3.isRelayRootBundleMessageBody)(messageHeader.messageBody)) return [3, 6];
965
+ return [4, contracts_1.SvmSpokeClient.fetchState(solanaClient, statePda)];
966
+ case 4:
967
+ rootBundleId = (_a.sent()).data.rootBundleId;
968
+ return [4, (0, _1.getRootBundlePda)(programAddress, rootBundleId)];
969
+ case 5:
970
+ rootBundle = _a.sent();
971
+ return [2, tslib_1.__spreadArray(tslib_1.__spreadArray([], base, true), [
972
+ { address: signer.address, role: kit_1.AccountRole.WRITABLE },
973
+ { address: statePda, role: kit_1.AccountRole.WRITABLE },
974
+ { address: rootBundle, role: kit_1.AccountRole.WRITABLE },
975
+ { address: system_1.SYSTEM_PROGRAM_ADDRESS, role: kit_1.AccountRole.READONLY },
976
+ { address: eventAuthority, role: kit_1.AccountRole.READONLY },
977
+ { address: programAddress, role: kit_1.AccountRole.READONLY },
978
+ ], false)];
979
+ case 6:
980
+ if (!(0, utils_3.isEmergencyDeleteRootBundleMessageBody)(messageHeader.messageBody)) return [3, 8];
981
+ rootBundleId = (0, utils_3.getEmergencyDeleteRootBundleRootBundleId)(messageHeader.messageBody);
982
+ return [4, (0, _1.getRootBundlePda)(programAddress, rootBundleId)];
983
+ case 7:
984
+ rootBundle = _a.sent();
985
+ return [2, tslib_1.__spreadArray(tslib_1.__spreadArray([], base, true), [
986
+ { address: signer.address, role: kit_1.AccountRole.READONLY },
987
+ { address: statePda, role: kit_1.AccountRole.READONLY },
988
+ { address: rootBundle, role: kit_1.AccountRole.WRITABLE },
989
+ { address: eventAuthority, role: kit_1.AccountRole.READONLY },
990
+ { address: programAddress, role: kit_1.AccountRole.READONLY },
991
+ ], false)];
992
+ case 8: return [2, tslib_1.__spreadArray(tslib_1.__spreadArray([], base, true), [
993
+ { address: statePda, role: kit_1.AccountRole.WRITABLE },
994
+ { address: eventAuthority, role: kit_1.AccountRole.READONLY },
995
+ { address: programAddress, role: kit_1.AccountRole.READONLY },
996
+ ], false)];
997
+ }
998
+ });
737
999
  });
738
- const [eventAuthorityPda] = await (0, kit_1.getProgramDerivedAddress)({
739
- programAddress: contracts_1.MessageTransmitterClient.MESSAGE_TRANSMITTER_PROGRAM_ADDRESS,
740
- seeds: ["__event_authority"],
1000
+ }
1001
+ function getCCTPDepositAccounts(hubChainId, cctpDestinationDomainId, tokenMessengerMinterAddress, messageTransmitterAddress) {
1002
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
1003
+ var l2Usdc, _a, tokenMessenger, tokenMinter, localToken, cctpEventAuthority, remoteTokenMessenger, tokenMessengerMinterSenderAuthority, messageTransmitter;
1004
+ return tslib_1.__generator(this, function (_b) {
1005
+ switch (_b.label) {
1006
+ case 0:
1007
+ l2Usdc = utils_2.SvmAddress.from(constants_1.TOKEN_SYMBOLS_MAP.USDC.addresses[(0, utils_2.chainIsProd)(hubChainId) ? constants_1.CHAIN_IDs.SOLANA : constants_1.CHAIN_IDs.SOLANA_DEVNET]);
1008
+ return [4, Promise.all([
1009
+ (0, kit_1.getProgramDerivedAddress)({
1010
+ programAddress: tokenMessengerMinterAddress,
1011
+ seeds: ["token_messenger"],
1012
+ }),
1013
+ (0, kit_1.getProgramDerivedAddress)({
1014
+ programAddress: tokenMessengerMinterAddress,
1015
+ seeds: ["token_minter"],
1016
+ }),
1017
+ (0, kit_1.getProgramDerivedAddress)({
1018
+ programAddress: tokenMessengerMinterAddress,
1019
+ seeds: ["local_token", utils_2.bs58.decode(l2Usdc.toBase58())],
1020
+ }),
1021
+ (0, kit_1.getProgramDerivedAddress)({
1022
+ programAddress: tokenMessengerMinterAddress,
1023
+ seeds: ["__event_authority"],
1024
+ }),
1025
+ (0, kit_1.getProgramDerivedAddress)({
1026
+ programAddress: tokenMessengerMinterAddress,
1027
+ seeds: ["remote_token_messenger", String(cctpDestinationDomainId)],
1028
+ }),
1029
+ (0, kit_1.getProgramDerivedAddress)({
1030
+ programAddress: tokenMessengerMinterAddress,
1031
+ seeds: ["sender_authority"],
1032
+ }),
1033
+ (0, kit_1.getProgramDerivedAddress)({
1034
+ programAddress: messageTransmitterAddress,
1035
+ seeds: ["message_transmitter"],
1036
+ }),
1037
+ ])];
1038
+ case 1:
1039
+ _a = _b.sent(), tokenMessenger = _a[0][0], tokenMinter = _a[1][0], localToken = _a[2][0], cctpEventAuthority = _a[3][0], remoteTokenMessenger = _a[4][0], tokenMessengerMinterSenderAuthority = _a[5][0], messageTransmitter = _a[6][0];
1040
+ return [2, {
1041
+ tokenMessenger: tokenMessenger,
1042
+ tokenMinter: tokenMinter,
1043
+ localToken: localToken,
1044
+ cctpEventAuthority: cctpEventAuthority,
1045
+ remoteTokenMessenger: remoteTokenMessenger,
1046
+ tokenMessengerMinterSenderAuthority: tokenMessengerMinterSenderAuthority,
1047
+ messageTransmitter: messageTransmitter,
1048
+ }];
1049
+ }
1050
+ });
741
1051
  });
742
- const cctpMessageReceiver = (0, _1.isDepositForBurnEvent)(message)
743
- ? contracts_1.TokenMessengerMinterClient.TOKEN_MESSENGER_MINTER_PROGRAM_ADDRESS
744
- : contracts_1.SvmSpokeClient.SVM_SPOKE_PROGRAM_ADDRESS;
745
- const [authorityPda] = await (0, kit_1.getProgramDerivedAddress)({
746
- programAddress: contracts_1.MessageTransmitterClient.MESSAGE_TRANSMITTER_PROGRAM_ADDRESS,
747
- seeds: ["message_transmitter_authority", utils_2.bs58.decode(cctpMessageReceiver)],
1052
+ }
1053
+ function getAccountMetasForDepositMessage(message, hubChainId, tokenMessengerMinter, recipientAta) {
1054
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
1055
+ var l1Usdc, l2Usdc, tokenMessengerPda, tokenMinterPda, localTokenPda, tokenMessengerEventAuthorityPda, custodyTokenAccountPda, tokenPairPda, remoteTokenMessengerPda;
1056
+ return tslib_1.__generator(this, function (_a) {
1057
+ switch (_a.label) {
1058
+ case 0:
1059
+ l1Usdc = utils_2.EvmAddress.from(constants_1.TOKEN_SYMBOLS_MAP.USDC.addresses[hubChainId]);
1060
+ l2Usdc = utils_2.SvmAddress.from(constants_1.TOKEN_SYMBOLS_MAP.USDC.addresses[(0, utils_2.chainIsProd)(hubChainId) ? constants_1.CHAIN_IDs.SOLANA : constants_1.CHAIN_IDs.SOLANA_DEVNET]);
1061
+ return [4, (0, kit_1.getProgramDerivedAddress)({
1062
+ programAddress: tokenMessengerMinter,
1063
+ seeds: ["token_messenger"],
1064
+ })];
1065
+ case 1:
1066
+ tokenMessengerPda = (_a.sent())[0];
1067
+ return [4, (0, kit_1.getProgramDerivedAddress)({
1068
+ programAddress: tokenMessengerMinter,
1069
+ seeds: ["token_minter"],
1070
+ })];
1071
+ case 2:
1072
+ tokenMinterPda = (_a.sent())[0];
1073
+ return [4, (0, kit_1.getProgramDerivedAddress)({
1074
+ programAddress: tokenMessengerMinter,
1075
+ seeds: ["local_token", utils_2.bs58.decode(l2Usdc.toBase58())],
1076
+ })];
1077
+ case 3:
1078
+ localTokenPda = (_a.sent())[0];
1079
+ return [4, (0, kit_1.getProgramDerivedAddress)({
1080
+ programAddress: tokenMessengerMinter,
1081
+ seeds: ["__event_authority"],
1082
+ })];
1083
+ case 4:
1084
+ tokenMessengerEventAuthorityPda = (_a.sent())[0];
1085
+ return [4, (0, kit_1.getProgramDerivedAddress)({
1086
+ programAddress: tokenMessengerMinter,
1087
+ seeds: ["custody", utils_2.bs58.decode(l2Usdc.toBase58())],
1088
+ })];
1089
+ case 5:
1090
+ custodyTokenAccountPda = (_a.sent())[0];
1091
+ return [4, (0, kit_1.getProgramDerivedAddress)({
1092
+ programAddress: tokenMessengerMinter,
1093
+ seeds: [
1094
+ new Uint8Array(Buffer.from("token_pair")),
1095
+ new Uint8Array(Buffer.from(String(message.sourceDomain))),
1096
+ new Uint8Array(Buffer.from(l1Usdc.toBytes32().slice(2), "hex")),
1097
+ ],
1098
+ })];
1099
+ case 6:
1100
+ tokenPairPda = (_a.sent())[0];
1101
+ return [4, (0, kit_1.getProgramDerivedAddress)({
1102
+ programAddress: tokenMessengerMinter,
1103
+ seeds: ["remote_token_messenger", String(message.sourceDomain)],
1104
+ })];
1105
+ case 7:
1106
+ remoteTokenMessengerPda = (_a.sent())[0];
1107
+ return [2, [
1108
+ { address: tokenMessengerPda, role: kit_1.AccountRole.READONLY },
1109
+ { address: remoteTokenMessengerPda, role: kit_1.AccountRole.READONLY },
1110
+ { address: tokenMinterPda, role: kit_1.AccountRole.WRITABLE },
1111
+ { address: localTokenPda, role: kit_1.AccountRole.WRITABLE },
1112
+ { address: tokenPairPda, role: kit_1.AccountRole.READONLY },
1113
+ { address: (0, _1.toAddress)(recipientAta), role: kit_1.AccountRole.WRITABLE },
1114
+ { address: custodyTokenAccountPda, role: kit_1.AccountRole.WRITABLE },
1115
+ { address: token_1.TOKEN_PROGRAM_ADDRESS, role: kit_1.AccountRole.READONLY },
1116
+ { address: tokenMessengerEventAuthorityPda, role: kit_1.AccountRole.READONLY },
1117
+ { address: tokenMessengerMinter, role: kit_1.AccountRole.READONLY },
1118
+ ]];
1119
+ }
1120
+ });
748
1121
  });
749
- const usedNonces = await (0, _1.getCCTPNoncePda)(solanaClient, signer, message.nonce, message.sourceDomain);
750
- const accountMetas = (0, _1.isDepositForBurnEvent)(message)
751
- ? await getAccountMetasForDepositMessage(message, hubChainId, contracts_1.TokenMessengerMinterClient.TOKEN_MESSENGER_MINTER_PROGRAM_ADDRESS, recipientAta)
752
- : await getAccountMetasForTokenlessMessage(solanaClient, signer, message.messageBytes);
753
- const messageBytes = message.messageBytes.startsWith("0x")
754
- ? Buffer.from(message.messageBytes.slice(2), "hex")
755
- : Buffer.from(message.messageBytes, "hex");
756
- const input = {
757
- program: contracts_1.MessageTransmitterClient.MESSAGE_TRANSMITTER_PROGRAM_ADDRESS,
758
- payer: signer,
759
- caller: signer,
760
- authorityPda,
761
- messageTransmitter: messageTransmitterPda,
762
- eventAuthority: eventAuthorityPda,
763
- usedNonces,
764
- receiver: cctpMessageReceiver,
765
- systemProgram: system_1.SYSTEM_PROGRAM_ADDRESS,
766
- message: messageBytes,
767
- attestation: Buffer.from(message.attestation.slice(2), "hex"),
768
- };
769
- return (0, exports.createReceiveMessageInstruction)(signer, solanaClient, input, accountMetas);
770
- }
771
- function finalizeCCTPV1Messages(solanaClient, attestedMessages, signer, recipientAta, simulate = false, hubChainId = 1) {
772
- return (0, utils_2.mapAsync)(attestedMessages, async (message) => {
773
- const receiveMessageIx = await getCCTPV1ReceiveMessageTx(solanaClient, signer, message, hubChainId, recipientAta);
774
- if (simulate) {
775
- const result = await solanaClient
776
- .simulateTransaction((0, kit_1.getBase64EncodedWireTransaction)(await (0, kit_1.signTransactionMessageWithSigners)(receiveMessageIx)), {
777
- encoding: "base64",
778
- })
779
- .send();
780
- if (result.value.err) {
781
- throw new Error(result.value.err.toString());
1122
+ }
1123
+ function getCCTPV1ReceiveMessageTx(solanaClient, signer, message, hubChainId, recipientAta) {
1124
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
1125
+ var messageTransmitterPda, eventAuthorityPda, cctpMessageReceiver, authorityPda, usedNonces, accountMetas, _a, messageBytes, input;
1126
+ return tslib_1.__generator(this, function (_b) {
1127
+ switch (_b.label) {
1128
+ case 0: return [4, (0, kit_1.getProgramDerivedAddress)({
1129
+ programAddress: contracts_1.MessageTransmitterClient.MESSAGE_TRANSMITTER_PROGRAM_ADDRESS,
1130
+ seeds: ["message_transmitter"],
1131
+ })];
1132
+ case 1:
1133
+ messageTransmitterPda = (_b.sent())[0];
1134
+ return [4, (0, kit_1.getProgramDerivedAddress)({
1135
+ programAddress: contracts_1.MessageTransmitterClient.MESSAGE_TRANSMITTER_PROGRAM_ADDRESS,
1136
+ seeds: ["__event_authority"],
1137
+ })];
1138
+ case 2:
1139
+ eventAuthorityPda = (_b.sent())[0];
1140
+ cctpMessageReceiver = (0, _1.isDepositForBurnEvent)(message)
1141
+ ? contracts_1.TokenMessengerMinterClient.TOKEN_MESSENGER_MINTER_PROGRAM_ADDRESS
1142
+ : contracts_1.SvmSpokeClient.SVM_SPOKE_PROGRAM_ADDRESS;
1143
+ return [4, (0, kit_1.getProgramDerivedAddress)({
1144
+ programAddress: contracts_1.MessageTransmitterClient.MESSAGE_TRANSMITTER_PROGRAM_ADDRESS,
1145
+ seeds: ["message_transmitter_authority", utils_2.bs58.decode(cctpMessageReceiver)],
1146
+ })];
1147
+ case 3:
1148
+ authorityPda = (_b.sent())[0];
1149
+ return [4, (0, _1.getCCTPNoncePda)(solanaClient, signer, message.nonce, message.sourceDomain)];
1150
+ case 4:
1151
+ usedNonces = _b.sent();
1152
+ if (!(0, _1.isDepositForBurnEvent)(message)) return [3, 6];
1153
+ return [4, getAccountMetasForDepositMessage(message, hubChainId, contracts_1.TokenMessengerMinterClient.TOKEN_MESSENGER_MINTER_PROGRAM_ADDRESS, recipientAta)];
1154
+ case 5:
1155
+ _a = _b.sent();
1156
+ return [3, 8];
1157
+ case 6: return [4, getAccountMetasForTokenlessMessage(solanaClient, signer, message.messageBytes)];
1158
+ case 7:
1159
+ _a = _b.sent();
1160
+ _b.label = 8;
1161
+ case 8:
1162
+ accountMetas = _a;
1163
+ messageBytes = message.messageBytes.startsWith("0x")
1164
+ ? Buffer.from(message.messageBytes.slice(2), "hex")
1165
+ : Buffer.from(message.messageBytes, "hex");
1166
+ input = {
1167
+ program: contracts_1.MessageTransmitterClient.MESSAGE_TRANSMITTER_PROGRAM_ADDRESS,
1168
+ payer: signer,
1169
+ caller: signer,
1170
+ authorityPda: authorityPda,
1171
+ messageTransmitter: messageTransmitterPda,
1172
+ eventAuthority: eventAuthorityPda,
1173
+ usedNonces: usedNonces,
1174
+ receiver: cctpMessageReceiver,
1175
+ systemProgram: system_1.SYSTEM_PROGRAM_ADDRESS,
1176
+ message: messageBytes,
1177
+ attestation: Buffer.from(message.attestation.slice(2), "hex"),
1178
+ };
1179
+ return [2, (0, exports.createReceiveMessageInstruction)(signer, solanaClient, input, accountMetas)];
782
1180
  }
783
- return "";
784
- }
785
- const signedTransaction = await (0, kit_1.signTransactionMessageWithSigners)(receiveMessageIx);
786
- const signature = (0, kit_1.getSignatureFromTransaction)(signedTransaction);
787
- const encodedTransaction = (0, kit_1.getBase64EncodedWireTransaction)(signedTransaction);
788
- await solanaClient
789
- .sendTransaction(encodedTransaction, { preflightCommitment: "confirmed", encoding: "base64" })
790
- .send();
791
- return signature;
1181
+ });
792
1182
  });
793
1183
  }
794
- async function getMintInfo(solanaClient, mint, config) {
795
- return await (0, token_1.fetchMint)(solanaClient, mint, config);
1184
+ function finalizeCCTPV1Messages(solanaClient, attestedMessages, signer, recipientAta, simulate, hubChainId) {
1185
+ var _this = this;
1186
+ if (simulate === void 0) { simulate = false; }
1187
+ if (hubChainId === void 0) { hubChainId = 1; }
1188
+ return (0, utils_2.mapAsync)(attestedMessages, function (message) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
1189
+ var receiveMessageIx, result, _a, _b, _c, signedTransaction, signature, encodedTransaction;
1190
+ return tslib_1.__generator(this, function (_d) {
1191
+ switch (_d.label) {
1192
+ case 0: return [4, getCCTPV1ReceiveMessageTx(solanaClient, signer, message, hubChainId, recipientAta)];
1193
+ case 1:
1194
+ receiveMessageIx = _d.sent();
1195
+ if (!simulate) return [3, 4];
1196
+ _b = (_a = solanaClient)
1197
+ .simulateTransaction;
1198
+ _c = kit_1.getBase64EncodedWireTransaction;
1199
+ return [4, (0, kit_1.signTransactionMessageWithSigners)(receiveMessageIx)];
1200
+ case 2: return [4, _b.apply(_a, [_c.apply(void 0, [_d.sent()]),
1201
+ {
1202
+ encoding: "base64",
1203
+ }])
1204
+ .send()];
1205
+ case 3:
1206
+ result = _d.sent();
1207
+ if (result.value.err) {
1208
+ throw new Error(result.value.err.toString());
1209
+ }
1210
+ return [2, ""];
1211
+ case 4: return [4, (0, kit_1.signTransactionMessageWithSigners)(receiveMessageIx)];
1212
+ case 5:
1213
+ signedTransaction = _d.sent();
1214
+ signature = (0, kit_1.getSignatureFromTransaction)(signedTransaction);
1215
+ encodedTransaction = (0, kit_1.getBase64EncodedWireTransaction)(signedTransaction);
1216
+ return [4, solanaClient
1217
+ .sendTransaction(encodedTransaction, { preflightCommitment: "confirmed", encoding: "base64" })
1218
+ .send()];
1219
+ case 6:
1220
+ _d.sent();
1221
+ return [2, signature];
1222
+ }
1223
+ });
1224
+ }); });
1225
+ }
1226
+ function getMintInfo(solanaClient, mint, config) {
1227
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
1228
+ return tslib_1.__generator(this, function (_a) {
1229
+ switch (_a.label) {
1230
+ case 0: return [4, (0, token_1.fetchMint)(solanaClient, mint, config)];
1231
+ case 1: return [2, _a.sent()];
1232
+ }
1233
+ });
1234
+ });
796
1235
  }
797
1236
  function extractValueAmount(acrossPlusMessageBytes) {
798
- const VALUE_OFFSET = 32 + 1;
799
- const VALUE_END = VALUE_OFFSET + 8;
1237
+ var VALUE_OFFSET = 32 + 1;
1238
+ var VALUE_END = VALUE_OFFSET + 8;
800
1239
  if (acrossPlusMessageBytes.length < VALUE_END) {
801
- throw new Error(`svm | extractValueAmount: Message too short, need at least ${VALUE_END} bytes, got ${acrossPlusMessageBytes.length}`);
1240
+ throw new Error("svm | extractValueAmount: Message too short, need at least ".concat(VALUE_END, " bytes, got ").concat(acrossPlusMessageBytes.length));
802
1241
  }
803
1242
  return readU64LEExact(acrossPlusMessageBytes.subarray(VALUE_OFFSET, VALUE_END));
804
1243
  }
805
1244
  function readU64LEExact(bytes) {
806
1245
  if (bytes.length !== 8) {
807
- throw new Error(`readU64LEExact expected 8 bytes, received ${bytes.length}`);
1246
+ throw new Error("readU64LEExact expected 8 bytes, received ".concat(bytes.length));
808
1247
  }
809
- const view = new DataView(bytes.buffer, bytes.byteOffset, 8);
1248
+ var view = new DataView(bytes.buffer, bytes.byteOffset, 8);
810
1249
  return view.getBigUint64(0, true);
811
1250
  }
812
1251
  //# sourceMappingURL=SpokeUtils.js.map