@across-protocol/sdk 4.3.111-alpha.0 → 4.3.111-alpha.1

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 +50 -64
  2. package/dist/cjs/addressAggregator/adapters/abstract.js.map +1 -1
  3. package/dist/cjs/addressAggregator/adapters/bybit.js +16 -29
  4. package/dist/cjs/addressAggregator/adapters/bybit.js.map +1 -1
  5. package/dist/cjs/addressAggregator/adapters/env.js +11 -15
  6. package/dist/cjs/addressAggregator/adapters/env.js.map +1 -1
  7. package/dist/cjs/addressAggregator/adapters/file.js +32 -45
  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 +22 -36
  11. package/dist/cjs/addressAggregator/adapters/risklabs.js.map +1 -1
  12. package/dist/cjs/addressAggregator/index.js +57 -87
  13. package/dist/cjs/addressAggregator/index.js.map +1 -1
  14. package/dist/cjs/apiClient/abstractClient.js +9 -8
  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 +23 -29
  18. package/dist/cjs/apiClient/mockedClient.js.map +1 -1
  19. package/dist/cjs/apiClient/productionClient.js +65 -103
  20. package/dist/cjs/apiClient/productionClient.js.map +1 -1
  21. package/dist/cjs/arch/evm/BlockUtils.js +122 -208
  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 +134 -288
  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 +38 -49
  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 +102 -158
  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 +708 -1147
  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 +174 -236
  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 +166 -355
  46. package/dist/cjs/arch/svm/utils.js.map +1 -1
  47. package/dist/cjs/caching/Arweave/ArweaveClient.js +168 -246
  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 +40 -49
  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 +13 -18
  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 +302 -381
  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 +58 -83
  61. package/dist/cjs/clients/BaseAbstractClient.js.map +1 -1
  62. package/dist/cjs/clients/BundleDataClient/BundleDataClient.js +709 -900
  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 +95 -128
  66. package/dist/cjs/clients/BundleDataClient/utils/DataworkerUtils.js.map +1 -1
  67. package/dist/cjs/clients/BundleDataClient/utils/FillUtils.js +48 -53
  68. package/dist/cjs/clients/BundleDataClient/utils/FillUtils.js.map +1 -1
  69. package/dist/cjs/clients/BundleDataClient/utils/MerkleTreeUtils.js +10 -8
  70. package/dist/cjs/clients/BundleDataClient/utils/MerkleTreeUtils.js.map +1 -1
  71. package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js +67 -90
  72. package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
  73. package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.js +46 -24
  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 +526 -708
  77. package/dist/cjs/clients/HubPoolClient.js.map +1 -1
  78. package/dist/cjs/clients/SpokePoolClient/EVMSpokePoolClient.js +133 -179
  79. package/dist/cjs/clients/SpokePoolClient/EVMSpokePoolClient.js.map +1 -1
  80. package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.js +124 -183
  81. package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.js.map +1 -1
  82. package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js +357 -389
  83. package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
  84. package/dist/cjs/clients/SpokePoolClient/SpokePoolClientManager.js +9 -8
  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 +58 -67
  90. package/dist/cjs/clients/mocks/MockConfigStoreClient.js.map +1 -1
  91. package/dist/cjs/clients/mocks/MockEvents.js +47 -52
  92. package/dist/cjs/clients/mocks/MockEvents.js.map +1 -1
  93. package/dist/cjs/clients/mocks/MockHubPoolClient.js +142 -185
  94. package/dist/cjs/clients/mocks/MockHubPoolClient.js.map +1 -1
  95. package/dist/cjs/clients/mocks/MockSpokePoolClient.js +208 -192
  96. package/dist/cjs/clients/mocks/MockSpokePoolClient.js.map +1 -1
  97. package/dist/cjs/clients/mocks/MockSvmCpiEventsClient.js +140 -143
  98. package/dist/cjs/clients/mocks/MockSvmCpiEventsClient.js.map +1 -1
  99. package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.js +57 -73
  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 +285 -437
  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 +23 -30
  106. package/dist/cjs/constants.js.map +1 -1
  107. package/dist/cjs/contracts/acrossConfigStore.js +27 -48
  108. package/dist/cjs/contracts/acrossConfigStore.js.map +1 -1
  109. package/dist/cjs/contracts/hubPool.js +36 -20
  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 +6 -8
  113. package/dist/cjs/contracts/utils.js.map +1 -1
  114. package/dist/cjs/gasPriceOracle/adapters/arbitrum.js +7 -16
  115. package/dist/cjs/gasPriceOracle/adapters/arbitrum.js.map +1 -1
  116. package/dist/cjs/gasPriceOracle/adapters/ethereum.js +26 -45
  117. package/dist/cjs/gasPriceOracle/adapters/ethereum.js.map +1 -1
  118. package/dist/cjs/gasPriceOracle/adapters/linea-viem.js +16 -28
  119. package/dist/cjs/gasPriceOracle/adapters/linea-viem.js.map +1 -1
  120. package/dist/cjs/gasPriceOracle/adapters/polygon.js +73 -112
  121. package/dist/cjs/gasPriceOracle/adapters/polygon.js.map +1 -1
  122. package/dist/cjs/gasPriceOracle/adapters/solana.js +20 -33
  123. package/dist/cjs/gasPriceOracle/adapters/solana.js.map +1 -1
  124. package/dist/cjs/gasPriceOracle/oracle.js +77 -104
  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 +33 -35
  134. package/dist/cjs/lpFeeCalculator/lpFeeCalculator.js.map +1 -1
  135. package/dist/cjs/lpFeeCalculator/rateModel.js +7 -9
  136. package/dist/cjs/lpFeeCalculator/rateModel.js.map +1 -1
  137. package/dist/cjs/merkleDistributor/MerkleDistributor.js +20 -18
  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 +45 -100
  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 +464 -731
  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 +45 -100
  148. package/dist/cjs/pool/uma/across/transactionManager.js.map +1 -1
  149. package/dist/cjs/pool/uma/clients/erc20/client.js +18 -16
  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 +4 -5
  156. package/dist/cjs/pool/uma/oracle/utils.js.map +1 -1
  157. package/dist/cjs/pool/uma/utils.js +11 -30
  158. package/dist/cjs/pool/uma/utils.js.map +1 -1
  159. package/dist/cjs/priceClient/adapters/acrossApi.js +22 -39
  160. package/dist/cjs/priceClient/adapters/acrossApi.js.map +1 -1
  161. package/dist/cjs/priceClient/adapters/baseAdapter.js +49 -73
  162. package/dist/cjs/priceClient/adapters/baseAdapter.js.map +1 -1
  163. package/dist/cjs/priceClient/adapters/coingecko.js +34 -61
  164. package/dist/cjs/priceClient/adapters/coingecko.js.map +1 -1
  165. package/dist/cjs/priceClient/adapters/default.js +16 -31
  166. package/dist/cjs/priceClient/adapters/default.js.map +1 -1
  167. package/dist/cjs/priceClient/adapters/defiLlama.js +40 -74
  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 +110 -159
  172. package/dist/cjs/priceClient/priceClient.js.map +1 -1
  173. package/dist/cjs/providers/alchemy.js +17 -19
  174. package/dist/cjs/providers/alchemy.js.map +1 -1
  175. package/dist/cjs/providers/cachedProvider.js +88 -129
  176. package/dist/cjs/providers/cachedProvider.js.map +1 -1
  177. package/dist/cjs/providers/drpc.js +9 -11
  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 +10 -12
  181. package/dist/cjs/providers/infura.js.map +1 -1
  182. package/dist/cjs/providers/mocks/MockCachedSolanaRpcFactory.js +7 -15
  183. package/dist/cjs/providers/mocks/MockCachedSolanaRpcFactory.js.map +1 -1
  184. package/dist/cjs/providers/mocks/MockRateLimitedSolanaRpcFactory.js +6 -14
  185. package/dist/cjs/providers/mocks/MockRateLimitedSolanaRpcFactory.js.map +1 -1
  186. package/dist/cjs/providers/mocks/MockRetrySolanaRpcFactory.js +7 -15
  187. package/dist/cjs/providers/mocks/MockRetrySolanaRpcFactory.js.map +1 -1
  188. package/dist/cjs/providers/mocks/MockSolanaRpcFactory.js +42 -66
  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 +29 -31
  192. package/dist/cjs/providers/mocks/mockEthersProvider.js.map +1 -1
  193. package/dist/cjs/providers/quicknode.js +19 -21
  194. package/dist/cjs/providers/quicknode.js.map +1 -1
  195. package/dist/cjs/providers/rateLimitedProvider.js +64 -79
  196. package/dist/cjs/providers/rateLimitedProvider.js.map +1 -1
  197. package/dist/cjs/providers/retryProvider.js +163 -246
  198. package/dist/cjs/providers/retryProvider.js.map +1 -1
  199. package/dist/cjs/providers/solana/baseRpcFactories.js +14 -18
  200. package/dist/cjs/providers/solana/baseRpcFactories.js.map +1 -1
  201. package/dist/cjs/providers/solana/cachedRpcFactory.js +70 -112
  202. package/dist/cjs/providers/solana/cachedRpcFactory.js.map +1 -1
  203. package/dist/cjs/providers/solana/defaultRpcFactory.js +8 -15
  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 +135 -191
  207. package/dist/cjs/providers/solana/quorumFallbackRpcFactory.js.map +1 -1
  208. package/dist/cjs/providers/solana/rateLimitedRpcFactory.js +67 -90
  209. package/dist/cjs/providers/solana/rateLimitedRpcFactory.js.map +1 -1
  210. package/dist/cjs/providers/solana/retryRpcFactory.js +52 -79
  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 +31 -53
  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 +26 -28
  219. package/dist/cjs/providers/utils.js.map +1 -1
  220. package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.js +108 -162
  221. package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.js.map +1 -1
  222. package/dist/cjs/relayFeeCalculator/chain-queries/customGasToken.js +14 -26
  223. package/dist/cjs/relayFeeCalculator/chain-queries/customGasToken.js.map +1 -1
  224. package/dist/cjs/relayFeeCalculator/chain-queries/factory.js +20 -29
  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 +88 -137
  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 +199 -297
  231. package/dist/cjs/relayFeeCalculator/relayFeeCalculator.js.map +1 -1
  232. package/dist/cjs/typeguards/error.js +5 -7
  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 +117 -144
  236. package/dist/cjs/utils/AddressUtils.js.map +1 -1
  237. package/dist/cjs/utils/ArrayUtils.js +21 -78
  238. package/dist/cjs/utils/ArrayUtils.js.map +1 -1
  239. package/dist/cjs/utils/BigNumberUtils.js +9 -10
  240. package/dist/cjs/utils/BigNumberUtils.js.map +1 -1
  241. package/dist/cjs/utils/BlockExplorerUtils.js +26 -30
  242. package/dist/cjs/utils/BlockExplorerUtils.js.map +1 -1
  243. package/dist/cjs/utils/BlockFinder.js +2 -5
  244. package/dist/cjs/utils/BlockFinder.js.map +1 -1
  245. package/dist/cjs/utils/BlockUtils.js +24 -41
  246. package/dist/cjs/utils/BlockUtils.js.map +1 -1
  247. package/dist/cjs/utils/BundleUtils.js +21 -24
  248. package/dist/cjs/utils/BundleUtils.js.map +1 -1
  249. package/dist/cjs/utils/CCTPUtils.js +62 -126
  250. package/dist/cjs/utils/CCTPUtils.js.map +1 -1
  251. package/dist/cjs/utils/CachingUtils.js +20 -42
  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 +122 -99
  256. package/dist/cjs/utils/DepositUtils.js.map +1 -1
  257. package/dist/cjs/utils/EventUtils.js +49 -70
  258. package/dist/cjs/utils/EventUtils.js.map +1 -1
  259. package/dist/cjs/utils/FormattingUtils.js +26 -32
  260. package/dist/cjs/utils/FormattingUtils.js.map +1 -1
  261. package/dist/cjs/utils/HyperLiquidUtils.js +10 -23
  262. package/dist/cjs/utils/HyperLiquidUtils.js.map +1 -1
  263. package/dist/cjs/utils/IPFSUtils.js +16 -34
  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 +10 -12
  268. package/dist/cjs/utils/LogUtils.js.map +1 -1
  269. package/dist/cjs/utils/Multicall.js +56 -115
  270. package/dist/cjs/utils/Multicall.js.map +1 -1
  271. package/dist/cjs/utils/NetworkUtils.js +12 -28
  272. package/dist/cjs/utils/NetworkUtils.js.map +1 -1
  273. package/dist/cjs/utils/NumberUtils.js +1 -3
  274. package/dist/cjs/utils/NumberUtils.js.map +1 -1
  275. package/dist/cjs/utils/ObjectUtils.js +27 -41
  276. package/dist/cjs/utils/ObjectUtils.js.map +1 -1
  277. package/dist/cjs/utils/Profiler.js +80 -83
  278. package/dist/cjs/utils/Profiler.js.map +1 -1
  279. package/dist/cjs/utils/ReviverUtils.js +5 -9
  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 +41 -64
  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 +12 -22
  291. package/dist/cjs/utils/abi/index.js.map +1 -1
  292. package/dist/cjs/utils/abi/typechain/factories/Multicall3__factory.js +9 -12
  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 +40 -53
  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 +48 -64
  299. package/dist/esm/addressAggregator/adapters/abstract.js.map +1 -1
  300. package/dist/esm/addressAggregator/adapters/bybit.js +15 -29
  301. package/dist/esm/addressAggregator/adapters/bybit.js.map +1 -1
  302. package/dist/esm/addressAggregator/adapters/env.js +9 -14
  303. package/dist/esm/addressAggregator/adapters/env.js.map +1 -1
  304. package/dist/esm/addressAggregator/adapters/file.js +29 -43
  305. package/dist/esm/addressAggregator/adapters/file.js.map +1 -1
  306. package/dist/esm/addressAggregator/adapters/risklabs.js +20 -35
  307. package/dist/esm/addressAggregator/adapters/risklabs.js.map +1 -1
  308. package/dist/esm/addressAggregator/index.js +52 -83
  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 +15 -9
  313. package/dist/esm/apiClient/abstractClient.js.map +1 -1
  314. package/dist/esm/apiClient/mockedClient.js +21 -26
  315. package/dist/esm/apiClient/mockedClient.js.map +1 -1
  316. package/dist/esm/apiClient/productionClient.js +61 -101
  317. package/dist/esm/apiClient/productionClient.js.map +1 -1
  318. package/dist/esm/arch/evm/BlockUtils.js +139 -217
  319. package/dist/esm/arch/evm/BlockUtils.js.map +1 -1
  320. package/dist/esm/arch/evm/SpokeUtils.js +146 -289
  321. package/dist/esm/arch/evm/SpokeUtils.js.map +1 -1
  322. package/dist/esm/arch/evm/utils/wait.js +34 -46
  323. package/dist/esm/arch/evm/utils/wait.js.map +1 -1
  324. package/dist/esm/arch/svm/BlockUtils.js +118 -166
  325. package/dist/esm/arch/svm/BlockUtils.js.map +1 -1
  326. package/dist/esm/arch/svm/SpokeUtils.js +738 -1150
  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 +172 -232
  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 +155 -345
  335. package/dist/esm/arch/svm/utils.js.map +1 -1
  336. package/dist/esm/caching/Arweave/ArweaveClient.js +182 -256
  337. package/dist/esm/caching/Arweave/ArweaveClient.js.map +1 -1
  338. package/dist/esm/caching/IPFS/PinataIPFSClient.js +47 -48
  339. package/dist/esm/caching/IPFS/PinataIPFSClient.js.map +1 -1
  340. package/dist/esm/caching/Memory/MemoryCacheClient.js +13 -19
  341. package/dist/esm/caching/Memory/MemoryCacheClient.js.map +1 -1
  342. package/dist/esm/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js +333 -408
  343. package/dist/esm/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js.map +1 -1
  344. package/dist/esm/clients/BaseAbstractClient.js +66 -92
  345. package/dist/esm/clients/BaseAbstractClient.js.map +1 -1
  346. package/dist/esm/clients/BundleDataClient/BundleDataClient.js +927 -1054
  347. package/dist/esm/clients/BundleDataClient/BundleDataClient.js.map +1 -1
  348. package/dist/esm/clients/BundleDataClient/utils/DataworkerUtils.js +102 -131
  349. package/dist/esm/clients/BundleDataClient/utils/DataworkerUtils.js.map +1 -1
  350. package/dist/esm/clients/BundleDataClient/utils/FillUtils.js +57 -59
  351. package/dist/esm/clients/BundleDataClient/utils/FillUtils.js.map +1 -1
  352. package/dist/esm/clients/BundleDataClient/utils/MerkleTreeUtils.js +7 -5
  353. package/dist/esm/clients/BundleDataClient/utils/MerkleTreeUtils.js.map +1 -1
  354. package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js +75 -94
  355. package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
  356. package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.js +45 -23
  357. package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.js.map +1 -1
  358. package/dist/esm/clients/HubPoolClient.js +581 -740
  359. package/dist/esm/clients/HubPoolClient.js.map +1 -1
  360. package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.js +133 -178
  361. package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.js.map +1 -1
  362. package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.js +126 -183
  363. package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.js.map +1 -1
  364. package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js +372 -399
  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 +53 -64
  373. package/dist/esm/clients/mocks/MockConfigStoreClient.js.map +1 -1
  374. package/dist/esm/clients/mocks/MockEvents.js +42 -49
  375. package/dist/esm/clients/mocks/MockEvents.js.map +1 -1
  376. package/dist/esm/clients/mocks/MockHubPoolClient.js +138 -182
  377. package/dist/esm/clients/mocks/MockHubPoolClient.js.map +1 -1
  378. package/dist/esm/clients/mocks/MockSpokePoolClient.js +202 -188
  379. package/dist/esm/clients/mocks/MockSpokePoolClient.js.map +1 -1
  380. package/dist/esm/clients/mocks/MockSvmCpiEventsClient.js +127 -132
  381. package/dist/esm/clients/mocks/MockSvmCpiEventsClient.js.map +1 -1
  382. package/dist/esm/clients/mocks/MockSvmSpokePoolClient.js +53 -69
  383. package/dist/esm/clients/mocks/MockSvmSpokePoolClient.js.map +1 -1
  384. package/dist/esm/coingecko/Coingecko.js +298 -443
  385. package/dist/esm/coingecko/Coingecko.js.map +1 -1
  386. package/dist/esm/constants.js +40 -47
  387. package/dist/esm/constants.js.map +1 -1
  388. package/dist/esm/contracts/acrossConfigStore.js +24 -46
  389. package/dist/esm/contracts/acrossConfigStore.js.map +1 -1
  390. package/dist/esm/contracts/hubPool.js +34 -18
  391. package/dist/esm/contracts/hubPool.js.map +1 -1
  392. package/dist/esm/contracts/utils.js +3 -5
  393. package/dist/esm/contracts/utils.js.map +1 -1
  394. package/dist/esm/gasPriceOracle/adapters/arbitrum.js +6 -14
  395. package/dist/esm/gasPriceOracle/adapters/arbitrum.js.map +1 -1
  396. package/dist/esm/gasPriceOracle/adapters/ethereum.js +22 -42
  397. package/dist/esm/gasPriceOracle/adapters/ethereum.js.map +1 -1
  398. package/dist/esm/gasPriceOracle/adapters/linea-viem.js +13 -25
  399. package/dist/esm/gasPriceOracle/adapters/linea-viem.js.map +1 -1
  400. package/dist/esm/gasPriceOracle/adapters/polygon.js +72 -108
  401. package/dist/esm/gasPriceOracle/adapters/polygon.js.map +1 -1
  402. package/dist/esm/gasPriceOracle/adapters/solana.js +22 -31
  403. package/dist/esm/gasPriceOracle/adapters/solana.js.map +1 -1
  404. package/dist/esm/gasPriceOracle/oracle.js +70 -96
  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 +30 -33
  411. package/dist/esm/lpFeeCalculator/lpFeeCalculator.js.map +1 -1
  412. package/dist/esm/lpFeeCalculator/rateModel.js +7 -9
  413. package/dist/esm/lpFeeCalculator/rateModel.js.map +1 -1
  414. package/dist/esm/merkleDistributor/MerkleDistributor.js +18 -17
  415. package/dist/esm/merkleDistributor/MerkleDistributor.js.map +1 -1
  416. package/dist/esm/pool/TransactionManager.js +45 -100
  417. package/dist/esm/pool/TransactionManager.js.map +1 -1
  418. package/dist/esm/pool/poolClient.js +479 -740
  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 +45 -100
  423. package/dist/esm/pool/uma/across/transactionManager.js.map +1 -1
  424. package/dist/esm/pool/uma/clients/erc20/client.js +15 -13
  425. package/dist/esm/pool/uma/clients/erc20/client.js.map +1 -1
  426. package/dist/esm/pool/uma/oracle/utils.js +2 -3
  427. package/dist/esm/pool/uma/oracle/utils.js.map +1 -1
  428. package/dist/esm/pool/uma/utils.js +9 -28
  429. package/dist/esm/pool/uma/utils.js.map +1 -1
  430. package/dist/esm/priceClient/adapters/acrossApi.js +21 -40
  431. package/dist/esm/priceClient/adapters/acrossApi.js.map +1 -1
  432. package/dist/esm/priceClient/adapters/baseAdapter.js +46 -72
  433. package/dist/esm/priceClient/adapters/baseAdapter.js.map +1 -1
  434. package/dist/esm/priceClient/adapters/coingecko.js +33 -61
  435. package/dist/esm/priceClient/adapters/coingecko.js.map +1 -1
  436. package/dist/esm/priceClient/adapters/default.js +15 -31
  437. package/dist/esm/priceClient/adapters/default.js.map +1 -1
  438. package/dist/esm/priceClient/adapters/defiLlama.js +38 -73
  439. package/dist/esm/priceClient/adapters/defiLlama.js.map +1 -1
  440. package/dist/esm/priceClient/priceClient.js +109 -158
  441. package/dist/esm/priceClient/priceClient.js.map +1 -1
  442. package/dist/esm/providers/alchemy.js +16 -18
  443. package/dist/esm/providers/alchemy.js.map +1 -1
  444. package/dist/esm/providers/cachedProvider.js +99 -134
  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 +8 -10
  449. package/dist/esm/providers/drpc.js.map +1 -1
  450. package/dist/esm/providers/infura.js +9 -11
  451. package/dist/esm/providers/infura.js.map +1 -1
  452. package/dist/esm/providers/mocks/MockCachedSolanaRpcFactory.js +6 -15
  453. package/dist/esm/providers/mocks/MockCachedSolanaRpcFactory.js.map +1 -1
  454. package/dist/esm/providers/mocks/MockRateLimitedSolanaRpcFactory.js +5 -14
  455. package/dist/esm/providers/mocks/MockRateLimitedSolanaRpcFactory.js.map +1 -1
  456. package/dist/esm/providers/mocks/MockRetrySolanaRpcFactory.js +6 -15
  457. package/dist/esm/providers/mocks/MockRetrySolanaRpcFactory.js.map +1 -1
  458. package/dist/esm/providers/mocks/MockSolanaRpcFactory.js +41 -66
  459. package/dist/esm/providers/mocks/MockSolanaRpcFactory.js.map +1 -1
  460. package/dist/esm/providers/mocks/mockEthersProvider.js +27 -30
  461. package/dist/esm/providers/mocks/mockEthersProvider.js.map +1 -1
  462. package/dist/esm/providers/quicknode.js +18 -20
  463. package/dist/esm/providers/quicknode.js.map +1 -1
  464. package/dist/esm/providers/rateLimitedProvider.js +68 -80
  465. package/dist/esm/providers/rateLimitedProvider.js.map +1 -1
  466. package/dist/esm/providers/retryProvider.js +186 -259
  467. package/dist/esm/providers/retryProvider.js.map +1 -1
  468. package/dist/esm/providers/solana/baseRpcFactories.js +13 -19
  469. package/dist/esm/providers/solana/baseRpcFactories.js.map +1 -1
  470. package/dist/esm/providers/solana/cachedRpcFactory.js +75 -112
  471. package/dist/esm/providers/solana/cachedRpcFactory.js.map +1 -1
  472. package/dist/esm/providers/solana/defaultRpcFactory.js +6 -14
  473. package/dist/esm/providers/solana/defaultRpcFactory.js.map +1 -1
  474. package/dist/esm/providers/solana/quorumFallbackRpcFactory.js +149 -202
  475. package/dist/esm/providers/solana/quorumFallbackRpcFactory.js.map +1 -1
  476. package/dist/esm/providers/solana/rateLimitedRpcFactory.js +70 -90
  477. package/dist/esm/providers/solana/rateLimitedRpcFactory.js.map +1 -1
  478. package/dist/esm/providers/solana/retryRpcFactory.js +50 -74
  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 +28 -51
  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 +17 -20
  487. package/dist/esm/providers/utils.js.map +1 -1
  488. package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.js +98 -152
  489. package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.js.map +1 -1
  490. package/dist/esm/relayFeeCalculator/chain-queries/customGasToken.js +13 -26
  491. package/dist/esm/relayFeeCalculator/chain-queries/customGasToken.js.map +1 -1
  492. package/dist/esm/relayFeeCalculator/chain-queries/factory.js +9 -19
  493. package/dist/esm/relayFeeCalculator/chain-queries/factory.js.map +1 -1
  494. package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js +83 -128
  495. package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -1
  496. package/dist/esm/relayFeeCalculator/relayFeeCalculator.js +211 -299
  497. package/dist/esm/relayFeeCalculator/relayFeeCalculator.js.map +1 -1
  498. package/dist/esm/typeguards/error.js +3 -5
  499. package/dist/esm/typeguards/error.js.map +1 -1
  500. package/dist/esm/utils/AddressUtils.js +115 -147
  501. package/dist/esm/utils/AddressUtils.js.map +1 -1
  502. package/dist/esm/utils/ArrayUtils.js +21 -78
  503. package/dist/esm/utils/ArrayUtils.js.map +1 -1
  504. package/dist/esm/utils/BigNumberUtils.js +11 -12
  505. package/dist/esm/utils/BigNumberUtils.js.map +1 -1
  506. package/dist/esm/utils/BlockExplorerUtils.js +19 -23
  507. package/dist/esm/utils/BlockExplorerUtils.js.map +1 -1
  508. package/dist/esm/utils/BlockFinder.js +2 -6
  509. package/dist/esm/utils/BlockFinder.js.map +1 -1
  510. package/dist/esm/utils/BlockUtils.js +31 -40
  511. package/dist/esm/utils/BlockUtils.js.map +1 -1
  512. package/dist/esm/utils/BundleUtils.js +21 -24
  513. package/dist/esm/utils/BundleUtils.js.map +1 -1
  514. package/dist/esm/utils/CCTPUtils.js +62 -123
  515. package/dist/esm/utils/CCTPUtils.js.map +1 -1
  516. package/dist/esm/utils/CachingUtils.js +17 -38
  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 +121 -98
  521. package/dist/esm/utils/DepositUtils.js.map +1 -1
  522. package/dist/esm/utils/EventUtils.js +52 -69
  523. package/dist/esm/utils/EventUtils.js.map +1 -1
  524. package/dist/esm/utils/FormattingUtils.js +20 -26
  525. package/dist/esm/utils/FormattingUtils.js.map +1 -1
  526. package/dist/esm/utils/HyperLiquidUtils.js +8 -22
  527. package/dist/esm/utils/HyperLiquidUtils.js.map +1 -1
  528. package/dist/esm/utils/IPFSUtils.js +16 -35
  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 +8 -12
  533. package/dist/esm/utils/LogUtils.js.map +1 -1
  534. package/dist/esm/utils/Multicall.js +50 -110
  535. package/dist/esm/utils/Multicall.js.map +1 -1
  536. package/dist/esm/utils/NetworkUtils.js +12 -28
  537. package/dist/esm/utils/NetworkUtils.js.map +1 -1
  538. package/dist/esm/utils/NumberUtils.js +1 -3
  539. package/dist/esm/utils/NumberUtils.js.map +1 -1
  540. package/dist/esm/utils/ObjectUtils.js +27 -41
  541. package/dist/esm/utils/ObjectUtils.js.map +1 -1
  542. package/dist/esm/utils/Profiler.js +77 -82
  543. package/dist/esm/utils/Profiler.js.map +1 -1
  544. package/dist/esm/utils/ReviverUtils.js +3 -7
  545. package/dist/esm/utils/ReviverUtils.js.map +1 -1
  546. package/dist/esm/utils/SpokeUtils.js +83 -78
  547. package/dist/esm/utils/SpokeUtils.js.map +1 -1
  548. package/dist/esm/utils/TokenUtils.js +33 -57
  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 +10 -20
  553. package/dist/esm/utils/abi/index.js.map +1 -1
  554. package/dist/esm/utils/abi/typechain/factories/Multicall3__factory.js +8 -12
  555. package/dist/esm/utils/abi/typechain/factories/Multicall3__factory.js.map +1 -1
  556. package/dist/esm/utils/common.js +38 -52
  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 +2 -2
  563. package/src/constants.ts +0 -1
  564. package/src/gasPriceOracle/oracle.ts +0 -1
  565. package/src/utils/Multicall.ts +0 -1
  566. package/src/utils/NetworkUtils.ts +1 -8
@@ -26,347 +26,210 @@ exports.getCCTPDepositAccounts = getCCTPDepositAccounts;
26
26
  exports.getCCTPV1ReceiveMessageTx = getCCTPV1ReceiveMessageTx;
27
27
  exports.finalizeCCTPV1Messages = finalizeCCTPV1Messages;
28
28
  exports.getMintInfo = getMintInfo;
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");
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");
45
45
  exports.SLOT_DURATION_MS = 400;
46
46
  function getSlot(provider, commitment, logger) {
47
47
  return _callGetSlotWithRetry(provider, commitment, logger);
48
48
  }
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
- });
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
+ }
74
65
  }
75
- function getTimestampForSlot(provider, slotNumber, maxRetries, logger) {
76
- if (maxRetries === void 0) { maxRetries = 2; }
66
+ function getTimestampForSlot(provider, slotNumber, maxRetries = 2, logger) {
77
67
  return _callGetTimestampForSlotWithRetry(provider, slotNumber, 0, maxRetries, logger);
78
68
  }
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];
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 });
115
89
  }
116
- });
117
- });
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;
118
95
  }
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
- });
96
+ async function getFillDeadline(provider, statePda) {
97
+ const state = await (0, SvmSpoke_1.fetchState)(provider, statePda);
98
+ return state.data.fillDeadlineBuffer;
131
99
  }
132
100
  function getDepositIdAtBlock(_contract, _blockTag) {
133
101
  throw new Error("getDepositIdAtBlock: not implemented");
134
102
  }
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
- }
170
- });
171
- });
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
- }
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.",
328
159
  });
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;
329
185
  });
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
- });
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)),
370
233
  });
371
234
  }
372
235
  function createTokenAccountsInstruction(mint, relayer) {
@@ -375,877 +238,575 @@ function createTokenAccountsInstruction(mint, relayer) {
375
238
  mint: (0, _1.toAddress)(mint),
376
239
  });
377
240
  }
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
- });
437
- });
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];
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)));
503
265
  }
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
- });
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,
341
+ });
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,
543
349
  });
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));
544
353
  };
545
354
  exports.createFillInstruction = createFillInstruction;
546
355
  function deserializeMessage(_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);
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);
551
360
  (0, assert_1.default)(deserialized.value_amount === valueAmountMethod2, "svm | deserializeMessage: Deserialization mismatch for value_amount");
552
361
  return deserialized;
553
362
  }
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
- });
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,
598
382
  });
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));
599
385
  };
600
386
  exports.createDepositInstruction = createDepositInstruction;
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
- }); };
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
+ };
615
391
  exports.createRequestSlowFillInstruction = createRequestSlowFillInstruction;
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
- });
646
- });
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
- }
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,
669
419
  });
670
- }); };
420
+ return (0, kit_1.pipe)(await (0, _1.createDefaultTransaction)(solanaClient, signer), (tx) => (0, kit_1.appendTransactionMessageInstruction)(closeFillPdaIx, tx));
421
+ };
671
422
  exports.createCloseFillPdaInstruction = createCloseFillPdaInstruction;
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
- }); };
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
+ };
688
428
  exports.createReceiveMessageInstruction = createReceiveMessageInstruction;
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
- });
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))],
706
434
  });
435
+ return associatedToken;
707
436
  }
708
437
  function getRelayDataHash(relayData, destinationChainId) {
709
438
  (0, assert_1.default)(relayData.messageHash.startsWith("0x"), "Message hash must be a hex string");
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([
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([
718
447
  encodedRelayData.slice(0, messageOffset),
719
448
  encodedMessageHash,
720
449
  Uint8Array.from(uint64Encoder.encode(BigInt(destinationChainId))),
721
450
  ]);
722
451
  return (0, utils_2.keccak256)(contentToHash);
723
452
  }
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
- });
752
- });
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
+ }
753
469
  }
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
- });
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;
781
486
  });
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
- }
819
- });
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),
820
497
  });
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
- });
498
+ const initInstructionParamsIx = contracts_1.SvmSpokeClient.getInitializeInstructionParamsInstruction({
499
+ signer,
500
+ instructionParams,
501
+ totalSize: encodedRelayData.length,
856
502
  });
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
- }
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,
890
513
  });
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],
891
541
  });
892
- }
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
- });
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],
566
+ });
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],
916
581
  });
582
+ return pda;
917
583
  }
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()];
937
- }
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,
938
589
  });
939
- }); };
590
+ const parserFunction = (buf) => {
591
+ if (buf.length != 1) {
592
+ throw new Error("Invalid buffer length for isNonceUsedIx");
593
+ }
594
+ return Boolean(buf[0]);
595
+ };
596
+ return await (0, _1.simulateAndDecode)(solanaClient, isNonceUsedIx, signer, parserFunction, latestBlockhash);
597
+ };
940
598
  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
- });
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"],
999
691
  });
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
- });
692
+ const [tokenMinterPda] = await (0, kit_1.getProgramDerivedAddress)({
693
+ programAddress: tokenMessengerMinter,
694
+ seeds: ["token_minter"],
1051
695
  });
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
- });
696
+ const [localTokenPda] = await (0, kit_1.getProgramDerivedAddress)({
697
+ programAddress: tokenMessengerMinter,
698
+ seeds: ["local_token", utils_2.bs58.decode(l2Usdc.toBase58())],
1121
699
  });
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)];
1180
- }
1181
- });
700
+ const [tokenMessengerEventAuthorityPda] = await (0, kit_1.getProgramDerivedAddress)({
701
+ programAddress: tokenMessengerMinter,
702
+ seeds: ["__event_authority"],
1182
703
  });
1183
- }
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()];
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"],
737
+ });
738
+ const [eventAuthorityPda] = await (0, kit_1.getProgramDerivedAddress)({
739
+ programAddress: contracts_1.MessageTransmitterClient.MESSAGE_TRANSMITTER_PROGRAM_ADDRESS,
740
+ seeds: ["__event_authority"],
741
+ });
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)],
748
+ });
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());
1232
782
  }
1233
- });
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;
1234
792
  });
1235
793
  }
794
+ async function getMintInfo(solanaClient, mint, config) {
795
+ return await (0, token_1.fetchMint)(solanaClient, mint, config);
796
+ }
1236
797
  function extractValueAmount(acrossPlusMessageBytes) {
1237
- var VALUE_OFFSET = 32 + 1;
1238
- var VALUE_END = VALUE_OFFSET + 8;
798
+ const VALUE_OFFSET = 32 + 1;
799
+ const VALUE_END = VALUE_OFFSET + 8;
1239
800
  if (acrossPlusMessageBytes.length < VALUE_END) {
1240
- throw new Error("svm | extractValueAmount: Message too short, need at least ".concat(VALUE_END, " bytes, got ").concat(acrossPlusMessageBytes.length));
801
+ throw new Error(`svm | extractValueAmount: Message too short, need at least ${VALUE_END} bytes, got ${acrossPlusMessageBytes.length}`);
1241
802
  }
1242
803
  return readU64LEExact(acrossPlusMessageBytes.subarray(VALUE_OFFSET, VALUE_END));
1243
804
  }
1244
805
  function readU64LEExact(bytes) {
1245
806
  if (bytes.length !== 8) {
1246
- throw new Error("readU64LEExact expected 8 bytes, received ".concat(bytes.length));
807
+ throw new Error(`readU64LEExact expected 8 bytes, received ${bytes.length}`);
1247
808
  }
1248
- var view = new DataView(bytes.buffer, bytes.byteOffset, 8);
809
+ const view = new DataView(bytes.buffer, bytes.byteOffset, 8);
1249
810
  return view.getBigUint64(0, true);
1250
811
  }
1251
812
  //# sourceMappingURL=SpokeUtils.js.map