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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (566) hide show
  1. package/dist/cjs/addressAggregator/adapters/abstract.js +64 -50
  2. package/dist/cjs/addressAggregator/adapters/abstract.js.map +1 -1
  3. package/dist/cjs/addressAggregator/adapters/bybit.js +29 -16
  4. package/dist/cjs/addressAggregator/adapters/bybit.js.map +1 -1
  5. package/dist/cjs/addressAggregator/adapters/env.js +15 -11
  6. package/dist/cjs/addressAggregator/adapters/env.js.map +1 -1
  7. package/dist/cjs/addressAggregator/adapters/file.js +45 -32
  8. package/dist/cjs/addressAggregator/adapters/file.js.map +1 -1
  9. package/dist/cjs/addressAggregator/adapters/index.js +1 -1
  10. package/dist/cjs/addressAggregator/adapters/risklabs.js +36 -22
  11. package/dist/cjs/addressAggregator/adapters/risklabs.js.map +1 -1
  12. package/dist/cjs/addressAggregator/index.js +87 -57
  13. package/dist/cjs/addressAggregator/index.js.map +1 -1
  14. package/dist/cjs/apiClient/abstractClient.js +8 -9
  15. package/dist/cjs/apiClient/abstractClient.js.map +1 -1
  16. package/dist/cjs/apiClient/index.js +1 -1
  17. package/dist/cjs/apiClient/mockedClient.js +29 -23
  18. package/dist/cjs/apiClient/mockedClient.js.map +1 -1
  19. package/dist/cjs/apiClient/productionClient.js +103 -65
  20. package/dist/cjs/apiClient/productionClient.js.map +1 -1
  21. package/dist/cjs/arch/evm/BlockUtils.js +208 -122
  22. package/dist/cjs/arch/evm/BlockUtils.js.map +1 -1
  23. package/dist/cjs/arch/evm/MessageUtils.js +1 -1
  24. package/dist/cjs/arch/evm/MessageUtils.js.map +1 -1
  25. package/dist/cjs/arch/evm/SpokeUtils.js +288 -134
  26. package/dist/cjs/arch/evm/SpokeUtils.js.map +1 -1
  27. package/dist/cjs/arch/evm/index.js +1 -1
  28. package/dist/cjs/arch/evm/utils/index.js +1 -1
  29. package/dist/cjs/arch/evm/utils/wait.js +49 -38
  30. package/dist/cjs/arch/evm/utils/wait.js.map +1 -1
  31. package/dist/cjs/arch/index.js +1 -1
  32. package/dist/cjs/arch/svm/BlockUtils.js +158 -102
  33. package/dist/cjs/arch/svm/BlockUtils.js.map +1 -1
  34. package/dist/cjs/arch/svm/MessageUtils.js +2 -2
  35. package/dist/cjs/arch/svm/MessageUtils.js.map +1 -1
  36. package/dist/cjs/arch/svm/SpokeUtils.js +1147 -708
  37. package/dist/cjs/arch/svm/SpokeUtils.js.map +1 -1
  38. package/dist/cjs/arch/svm/encoders.js +1 -1
  39. package/dist/cjs/arch/svm/encoders.js.map +1 -1
  40. package/dist/cjs/arch/svm/eventsClient.js +236 -174
  41. package/dist/cjs/arch/svm/eventsClient.js.map +1 -1
  42. package/dist/cjs/arch/svm/index.js +1 -1
  43. package/dist/cjs/arch/svm/provider.js +3 -3
  44. package/dist/cjs/arch/svm/provider.js.map +1 -1
  45. package/dist/cjs/arch/svm/utils.js +355 -166
  46. package/dist/cjs/arch/svm/utils.js.map +1 -1
  47. package/dist/cjs/caching/Arweave/ArweaveClient.js +246 -168
  48. package/dist/cjs/caching/Arweave/ArweaveClient.js.map +1 -1
  49. package/dist/cjs/caching/Arweave/index.js +1 -1
  50. package/dist/cjs/caching/IPFS/PinataIPFSClient.js +49 -40
  51. package/dist/cjs/caching/IPFS/PinataIPFSClient.js.map +1 -1
  52. package/dist/cjs/caching/IPFS/index.js +1 -1
  53. package/dist/cjs/caching/Memory/MemoryCacheClient.js +18 -13
  54. package/dist/cjs/caching/Memory/MemoryCacheClient.js.map +1 -1
  55. package/dist/cjs/caching/Memory/index.js +1 -1
  56. package/dist/cjs/caching/index.js +1 -1
  57. package/dist/cjs/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js +381 -302
  58. package/dist/cjs/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js.map +1 -1
  59. package/dist/cjs/clients/AcrossConfigStoreClient/index.js +1 -1
  60. package/dist/cjs/clients/BaseAbstractClient.js +83 -58
  61. package/dist/cjs/clients/BaseAbstractClient.js.map +1 -1
  62. package/dist/cjs/clients/BundleDataClient/BundleDataClient.js +900 -709
  63. package/dist/cjs/clients/BundleDataClient/BundleDataClient.js.map +1 -1
  64. package/dist/cjs/clients/BundleDataClient/index.js +1 -1
  65. package/dist/cjs/clients/BundleDataClient/utils/DataworkerUtils.js +128 -95
  66. package/dist/cjs/clients/BundleDataClient/utils/DataworkerUtils.js.map +1 -1
  67. package/dist/cjs/clients/BundleDataClient/utils/FillUtils.js +53 -48
  68. package/dist/cjs/clients/BundleDataClient/utils/FillUtils.js.map +1 -1
  69. package/dist/cjs/clients/BundleDataClient/utils/MerkleTreeUtils.js +8 -10
  70. package/dist/cjs/clients/BundleDataClient/utils/MerkleTreeUtils.js.map +1 -1
  71. package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js +90 -67
  72. package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
  73. package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.js +24 -46
  74. package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.js.map +1 -1
  75. package/dist/cjs/clients/BundleDataClient/utils/index.js +1 -1
  76. package/dist/cjs/clients/HubPoolClient.js +708 -526
  77. package/dist/cjs/clients/HubPoolClient.js.map +1 -1
  78. package/dist/cjs/clients/SpokePoolClient/EVMSpokePoolClient.js +179 -133
  79. package/dist/cjs/clients/SpokePoolClient/EVMSpokePoolClient.js.map +1 -1
  80. package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.js +183 -124
  81. package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.js.map +1 -1
  82. package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js +389 -357
  83. package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
  84. package/dist/cjs/clients/SpokePoolClient/SpokePoolClientManager.js +8 -9
  85. package/dist/cjs/clients/SpokePoolClient/SpokePoolClientManager.js.map +1 -1
  86. package/dist/cjs/clients/SpokePoolClient/index.js +3 -3
  87. package/dist/cjs/clients/SpokePoolClient/index.js.map +1 -1
  88. package/dist/cjs/clients/index.js +1 -1
  89. package/dist/cjs/clients/mocks/MockConfigStoreClient.js +67 -58
  90. package/dist/cjs/clients/mocks/MockConfigStoreClient.js.map +1 -1
  91. package/dist/cjs/clients/mocks/MockEvents.js +52 -47
  92. package/dist/cjs/clients/mocks/MockEvents.js.map +1 -1
  93. package/dist/cjs/clients/mocks/MockHubPoolClient.js +185 -142
  94. package/dist/cjs/clients/mocks/MockHubPoolClient.js.map +1 -1
  95. package/dist/cjs/clients/mocks/MockSpokePoolClient.js +192 -208
  96. package/dist/cjs/clients/mocks/MockSpokePoolClient.js.map +1 -1
  97. package/dist/cjs/clients/mocks/MockSvmCpiEventsClient.js +143 -140
  98. package/dist/cjs/clients/mocks/MockSvmCpiEventsClient.js.map +1 -1
  99. package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.js +73 -57
  100. package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.js.map +1 -1
  101. package/dist/cjs/clients/mocks/index.js +1 -1
  102. package/dist/cjs/coingecko/Coingecko.js +437 -285
  103. package/dist/cjs/coingecko/Coingecko.js.map +1 -1
  104. package/dist/cjs/coingecko/index.js +1 -1
  105. package/dist/cjs/constants.js +30 -23
  106. package/dist/cjs/constants.js.map +1 -1
  107. package/dist/cjs/contracts/acrossConfigStore.js +48 -27
  108. package/dist/cjs/contracts/acrossConfigStore.js.map +1 -1
  109. package/dist/cjs/contracts/hubPool.js +20 -36
  110. package/dist/cjs/contracts/hubPool.js.map +1 -1
  111. package/dist/cjs/contracts/index.js +1 -1
  112. package/dist/cjs/contracts/utils.js +8 -6
  113. package/dist/cjs/contracts/utils.js.map +1 -1
  114. package/dist/cjs/gasPriceOracle/adapters/arbitrum.js +16 -7
  115. package/dist/cjs/gasPriceOracle/adapters/arbitrum.js.map +1 -1
  116. package/dist/cjs/gasPriceOracle/adapters/ethereum.js +45 -26
  117. package/dist/cjs/gasPriceOracle/adapters/ethereum.js.map +1 -1
  118. package/dist/cjs/gasPriceOracle/adapters/linea-viem.js +28 -16
  119. package/dist/cjs/gasPriceOracle/adapters/linea-viem.js.map +1 -1
  120. package/dist/cjs/gasPriceOracle/adapters/polygon.js +112 -73
  121. package/dist/cjs/gasPriceOracle/adapters/polygon.js.map +1 -1
  122. package/dist/cjs/gasPriceOracle/adapters/solana.js +33 -20
  123. package/dist/cjs/gasPriceOracle/adapters/solana.js.map +1 -1
  124. package/dist/cjs/gasPriceOracle/oracle.js +104 -77
  125. package/dist/cjs/gasPriceOracle/oracle.js.map +1 -1
  126. package/dist/cjs/gasPriceOracle/types.js +3 -3
  127. package/dist/cjs/gasPriceOracle/types.js.map +1 -1
  128. package/dist/cjs/gasPriceOracle/util.js +8 -8
  129. package/dist/cjs/gasPriceOracle/util.js.map +1 -1
  130. package/dist/cjs/index.js +1 -1
  131. package/dist/cjs/interfaces/index.js +1 -1
  132. package/dist/cjs/lpFeeCalculator/index.js +1 -1
  133. package/dist/cjs/lpFeeCalculator/lpFeeCalculator.js +35 -33
  134. package/dist/cjs/lpFeeCalculator/lpFeeCalculator.js.map +1 -1
  135. package/dist/cjs/lpFeeCalculator/rateModel.js +9 -7
  136. package/dist/cjs/lpFeeCalculator/rateModel.js.map +1 -1
  137. package/dist/cjs/merkleDistributor/MerkleDistributor.js +18 -20
  138. package/dist/cjs/merkleDistributor/MerkleDistributor.js.map +1 -1
  139. package/dist/cjs/merkleDistributor/index.js +1 -1
  140. package/dist/cjs/merkleDistributor/model/index.js +1 -1
  141. package/dist/cjs/pool/TransactionManager.js +100 -45
  142. package/dist/cjs/pool/TransactionManager.js.map +1 -1
  143. package/dist/cjs/pool/index.js +1 -1
  144. package/dist/cjs/pool/poolClient.js +731 -464
  145. package/dist/cjs/pool/poolClient.js.map +1 -1
  146. package/dist/cjs/pool/uma/across/index.js +1 -1
  147. package/dist/cjs/pool/uma/across/transactionManager.js +100 -45
  148. package/dist/cjs/pool/uma/across/transactionManager.js.map +1 -1
  149. package/dist/cjs/pool/uma/clients/erc20/client.js +16 -18
  150. package/dist/cjs/pool/uma/clients/erc20/client.js.map +1 -1
  151. package/dist/cjs/pool/uma/clients/erc20/index.js +1 -1
  152. package/dist/cjs/pool/uma/clients/index.js +1 -1
  153. package/dist/cjs/pool/uma/index.js +1 -1
  154. package/dist/cjs/pool/uma/oracle/index.js +1 -1
  155. package/dist/cjs/pool/uma/oracle/utils.js +5 -4
  156. package/dist/cjs/pool/uma/oracle/utils.js.map +1 -1
  157. package/dist/cjs/pool/uma/utils.js +30 -11
  158. package/dist/cjs/pool/uma/utils.js.map +1 -1
  159. package/dist/cjs/priceClient/adapters/acrossApi.js +39 -22
  160. package/dist/cjs/priceClient/adapters/acrossApi.js.map +1 -1
  161. package/dist/cjs/priceClient/adapters/baseAdapter.js +73 -49
  162. package/dist/cjs/priceClient/adapters/baseAdapter.js.map +1 -1
  163. package/dist/cjs/priceClient/adapters/coingecko.js +61 -34
  164. package/dist/cjs/priceClient/adapters/coingecko.js.map +1 -1
  165. package/dist/cjs/priceClient/adapters/default.js +31 -16
  166. package/dist/cjs/priceClient/adapters/default.js.map +1 -1
  167. package/dist/cjs/priceClient/adapters/defiLlama.js +74 -40
  168. package/dist/cjs/priceClient/adapters/defiLlama.js.map +1 -1
  169. package/dist/cjs/priceClient/adapters/index.js +1 -1
  170. package/dist/cjs/priceClient/index.js +1 -1
  171. package/dist/cjs/priceClient/priceClient.js +159 -110
  172. package/dist/cjs/priceClient/priceClient.js.map +1 -1
  173. package/dist/cjs/providers/alchemy.js +19 -17
  174. package/dist/cjs/providers/alchemy.js.map +1 -1
  175. package/dist/cjs/providers/cachedProvider.js +129 -88
  176. package/dist/cjs/providers/cachedProvider.js.map +1 -1
  177. package/dist/cjs/providers/drpc.js +11 -9
  178. package/dist/cjs/providers/drpc.js.map +1 -1
  179. package/dist/cjs/providers/index.js +1 -1
  180. package/dist/cjs/providers/infura.js +12 -10
  181. package/dist/cjs/providers/infura.js.map +1 -1
  182. package/dist/cjs/providers/mocks/MockCachedSolanaRpcFactory.js +15 -7
  183. package/dist/cjs/providers/mocks/MockCachedSolanaRpcFactory.js.map +1 -1
  184. package/dist/cjs/providers/mocks/MockRateLimitedSolanaRpcFactory.js +14 -6
  185. package/dist/cjs/providers/mocks/MockRateLimitedSolanaRpcFactory.js.map +1 -1
  186. package/dist/cjs/providers/mocks/MockRetrySolanaRpcFactory.js +15 -7
  187. package/dist/cjs/providers/mocks/MockRetrySolanaRpcFactory.js.map +1 -1
  188. package/dist/cjs/providers/mocks/MockSolanaRpcFactory.js +66 -42
  189. package/dist/cjs/providers/mocks/MockSolanaRpcFactory.js.map +1 -1
  190. package/dist/cjs/providers/mocks/index.js +1 -1
  191. package/dist/cjs/providers/mocks/mockEthersProvider.js +31 -29
  192. package/dist/cjs/providers/mocks/mockEthersProvider.js.map +1 -1
  193. package/dist/cjs/providers/quicknode.js +21 -19
  194. package/dist/cjs/providers/quicknode.js.map +1 -1
  195. package/dist/cjs/providers/rateLimitedProvider.js +79 -64
  196. package/dist/cjs/providers/rateLimitedProvider.js.map +1 -1
  197. package/dist/cjs/providers/retryProvider.js +246 -163
  198. package/dist/cjs/providers/retryProvider.js.map +1 -1
  199. package/dist/cjs/providers/solana/baseRpcFactories.js +18 -14
  200. package/dist/cjs/providers/solana/baseRpcFactories.js.map +1 -1
  201. package/dist/cjs/providers/solana/cachedRpcFactory.js +112 -70
  202. package/dist/cjs/providers/solana/cachedRpcFactory.js.map +1 -1
  203. package/dist/cjs/providers/solana/defaultRpcFactory.js +15 -8
  204. package/dist/cjs/providers/solana/defaultRpcFactory.js.map +1 -1
  205. package/dist/cjs/providers/solana/index.js +1 -1
  206. package/dist/cjs/providers/solana/quorumFallbackRpcFactory.js +191 -135
  207. package/dist/cjs/providers/solana/quorumFallbackRpcFactory.js.map +1 -1
  208. package/dist/cjs/providers/solana/rateLimitedRpcFactory.js +90 -67
  209. package/dist/cjs/providers/solana/rateLimitedRpcFactory.js.map +1 -1
  210. package/dist/cjs/providers/solana/retryRpcFactory.js +79 -52
  211. package/dist/cjs/providers/solana/retryRpcFactory.js.map +1 -1
  212. package/dist/cjs/providers/solana/utils.js +2 -2
  213. package/dist/cjs/providers/solana/utils.js.map +1 -1
  214. package/dist/cjs/providers/speedProvider.js +53 -31
  215. package/dist/cjs/providers/speedProvider.js.map +1 -1
  216. package/dist/cjs/providers/types.js +1 -1
  217. package/dist/cjs/providers/types.js.map +1 -1
  218. package/dist/cjs/providers/utils.js +28 -26
  219. package/dist/cjs/providers/utils.js.map +1 -1
  220. package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.js +162 -108
  221. package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.js.map +1 -1
  222. package/dist/cjs/relayFeeCalculator/chain-queries/customGasToken.js +26 -14
  223. package/dist/cjs/relayFeeCalculator/chain-queries/customGasToken.js.map +1 -1
  224. package/dist/cjs/relayFeeCalculator/chain-queries/factory.js +29 -20
  225. package/dist/cjs/relayFeeCalculator/chain-queries/factory.js.map +1 -1
  226. package/dist/cjs/relayFeeCalculator/chain-queries/index.js +1 -1
  227. package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.js +137 -88
  228. package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -1
  229. package/dist/cjs/relayFeeCalculator/index.js +1 -1
  230. package/dist/cjs/relayFeeCalculator/relayFeeCalculator.js +297 -199
  231. package/dist/cjs/relayFeeCalculator/relayFeeCalculator.js.map +1 -1
  232. package/dist/cjs/typeguards/error.js +7 -5
  233. package/dist/cjs/typeguards/error.js.map +1 -1
  234. package/dist/cjs/typeguards/index.js +1 -1
  235. package/dist/cjs/utils/AddressUtils.js +144 -117
  236. package/dist/cjs/utils/AddressUtils.js.map +1 -1
  237. package/dist/cjs/utils/ArrayUtils.js +78 -21
  238. package/dist/cjs/utils/ArrayUtils.js.map +1 -1
  239. package/dist/cjs/utils/BigNumberUtils.js +10 -9
  240. package/dist/cjs/utils/BigNumberUtils.js.map +1 -1
  241. package/dist/cjs/utils/BlockExplorerUtils.js +30 -26
  242. package/dist/cjs/utils/BlockExplorerUtils.js.map +1 -1
  243. package/dist/cjs/utils/BlockFinder.js +5 -2
  244. package/dist/cjs/utils/BlockFinder.js.map +1 -1
  245. package/dist/cjs/utils/BlockUtils.js +41 -24
  246. package/dist/cjs/utils/BlockUtils.js.map +1 -1
  247. package/dist/cjs/utils/BundleUtils.js +24 -21
  248. package/dist/cjs/utils/BundleUtils.js.map +1 -1
  249. package/dist/cjs/utils/CCTPUtils.js +126 -62
  250. package/dist/cjs/utils/CCTPUtils.js.map +1 -1
  251. package/dist/cjs/utils/CachingUtils.js +42 -20
  252. package/dist/cjs/utils/CachingUtils.js.map +1 -1
  253. package/dist/cjs/utils/ContractUtils.js +5 -5
  254. package/dist/cjs/utils/ContractUtils.js.map +1 -1
  255. package/dist/cjs/utils/DepositUtils.js +99 -122
  256. package/dist/cjs/utils/DepositUtils.js.map +1 -1
  257. package/dist/cjs/utils/EventUtils.js +70 -49
  258. package/dist/cjs/utils/EventUtils.js.map +1 -1
  259. package/dist/cjs/utils/FormattingUtils.js +32 -26
  260. package/dist/cjs/utils/FormattingUtils.js.map +1 -1
  261. package/dist/cjs/utils/HyperLiquidUtils.js +23 -10
  262. package/dist/cjs/utils/HyperLiquidUtils.js.map +1 -1
  263. package/dist/cjs/utils/IPFSUtils.js +34 -16
  264. package/dist/cjs/utils/IPFSUtils.js.map +1 -1
  265. package/dist/cjs/utils/JSONUtils.js +6 -6
  266. package/dist/cjs/utils/JSONUtils.js.map +1 -1
  267. package/dist/cjs/utils/LogUtils.js +12 -10
  268. package/dist/cjs/utils/LogUtils.js.map +1 -1
  269. package/dist/cjs/utils/Multicall.js +115 -56
  270. package/dist/cjs/utils/Multicall.js.map +1 -1
  271. package/dist/cjs/utils/NetworkUtils.js +28 -12
  272. package/dist/cjs/utils/NetworkUtils.js.map +1 -1
  273. package/dist/cjs/utils/NumberUtils.js +3 -1
  274. package/dist/cjs/utils/NumberUtils.js.map +1 -1
  275. package/dist/cjs/utils/ObjectUtils.js +41 -27
  276. package/dist/cjs/utils/ObjectUtils.js.map +1 -1
  277. package/dist/cjs/utils/Profiler.js +83 -80
  278. package/dist/cjs/utils/Profiler.js.map +1 -1
  279. package/dist/cjs/utils/ReviverUtils.js +9 -5
  280. package/dist/cjs/utils/ReviverUtils.js.map +1 -1
  281. package/dist/cjs/utils/SpokeUtils.js +84 -84
  282. package/dist/cjs/utils/SpokeUtils.js.map +1 -1
  283. package/dist/cjs/utils/TokenUtils.js +64 -41
  284. package/dist/cjs/utils/TokenUtils.js.map +1 -1
  285. package/dist/cjs/utils/TypeGuards.js +1 -1
  286. package/dist/cjs/utils/TypeGuards.js.map +1 -1
  287. package/dist/cjs/utils/ValidatorUtils.js +7 -7
  288. package/dist/cjs/utils/ValidatorUtils.js.map +1 -1
  289. package/dist/cjs/utils/abi/contracts/index.js +1 -1
  290. package/dist/cjs/utils/abi/index.js +22 -12
  291. package/dist/cjs/utils/abi/index.js.map +1 -1
  292. package/dist/cjs/utils/abi/typechain/factories/Multicall3__factory.js +12 -9
  293. package/dist/cjs/utils/abi/typechain/factories/Multicall3__factory.js.map +1 -1
  294. package/dist/cjs/utils/abi/typechain/index.js +1 -1
  295. package/dist/cjs/utils/common.js +53 -40
  296. package/dist/cjs/utils/common.js.map +1 -1
  297. package/dist/cjs/utils/index.js +1 -1
  298. package/dist/esm/addressAggregator/adapters/abstract.js +64 -48
  299. package/dist/esm/addressAggregator/adapters/abstract.js.map +1 -1
  300. package/dist/esm/addressAggregator/adapters/bybit.js +29 -15
  301. package/dist/esm/addressAggregator/adapters/bybit.js.map +1 -1
  302. package/dist/esm/addressAggregator/adapters/env.js +14 -9
  303. package/dist/esm/addressAggregator/adapters/env.js.map +1 -1
  304. package/dist/esm/addressAggregator/adapters/file.js +43 -29
  305. package/dist/esm/addressAggregator/adapters/file.js.map +1 -1
  306. package/dist/esm/addressAggregator/adapters/risklabs.js +35 -20
  307. package/dist/esm/addressAggregator/adapters/risklabs.js.map +1 -1
  308. package/dist/esm/addressAggregator/index.js +83 -52
  309. package/dist/esm/addressAggregator/index.js.map +1 -1
  310. package/dist/esm/addressAggregator/types.js +1 -1
  311. package/dist/esm/addressAggregator/types.js.map +1 -1
  312. package/dist/esm/apiClient/abstractClient.js +9 -15
  313. package/dist/esm/apiClient/abstractClient.js.map +1 -1
  314. package/dist/esm/apiClient/mockedClient.js +26 -21
  315. package/dist/esm/apiClient/mockedClient.js.map +1 -1
  316. package/dist/esm/apiClient/productionClient.js +101 -61
  317. package/dist/esm/apiClient/productionClient.js.map +1 -1
  318. package/dist/esm/arch/evm/BlockUtils.js +217 -139
  319. package/dist/esm/arch/evm/BlockUtils.js.map +1 -1
  320. package/dist/esm/arch/evm/SpokeUtils.js +289 -146
  321. package/dist/esm/arch/evm/SpokeUtils.js.map +1 -1
  322. package/dist/esm/arch/evm/utils/wait.js +46 -34
  323. package/dist/esm/arch/evm/utils/wait.js.map +1 -1
  324. package/dist/esm/arch/svm/BlockUtils.js +166 -118
  325. package/dist/esm/arch/svm/BlockUtils.js.map +1 -1
  326. package/dist/esm/arch/svm/SpokeUtils.js +1150 -738
  327. package/dist/esm/arch/svm/SpokeUtils.js.map +1 -1
  328. package/dist/esm/arch/svm/constants.js +1 -1
  329. package/dist/esm/arch/svm/constants.js.map +1 -1
  330. package/dist/esm/arch/svm/eventsClient.js +232 -172
  331. package/dist/esm/arch/svm/eventsClient.js.map +1 -1
  332. package/dist/esm/arch/svm/provider.js +1 -1
  333. package/dist/esm/arch/svm/provider.js.map +1 -1
  334. package/dist/esm/arch/svm/utils.js +345 -155
  335. package/dist/esm/arch/svm/utils.js.map +1 -1
  336. package/dist/esm/caching/Arweave/ArweaveClient.js +256 -182
  337. package/dist/esm/caching/Arweave/ArweaveClient.js.map +1 -1
  338. package/dist/esm/caching/IPFS/PinataIPFSClient.js +48 -47
  339. package/dist/esm/caching/IPFS/PinataIPFSClient.js.map +1 -1
  340. package/dist/esm/caching/Memory/MemoryCacheClient.js +19 -13
  341. package/dist/esm/caching/Memory/MemoryCacheClient.js.map +1 -1
  342. package/dist/esm/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js +408 -333
  343. package/dist/esm/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js.map +1 -1
  344. package/dist/esm/clients/BaseAbstractClient.js +92 -66
  345. package/dist/esm/clients/BaseAbstractClient.js.map +1 -1
  346. package/dist/esm/clients/BundleDataClient/BundleDataClient.js +1054 -927
  347. package/dist/esm/clients/BundleDataClient/BundleDataClient.js.map +1 -1
  348. package/dist/esm/clients/BundleDataClient/utils/DataworkerUtils.js +131 -102
  349. package/dist/esm/clients/BundleDataClient/utils/DataworkerUtils.js.map +1 -1
  350. package/dist/esm/clients/BundleDataClient/utils/FillUtils.js +59 -57
  351. package/dist/esm/clients/BundleDataClient/utils/FillUtils.js.map +1 -1
  352. package/dist/esm/clients/BundleDataClient/utils/MerkleTreeUtils.js +5 -7
  353. package/dist/esm/clients/BundleDataClient/utils/MerkleTreeUtils.js.map +1 -1
  354. package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js +94 -75
  355. package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
  356. package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.js +23 -45
  357. package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.js.map +1 -1
  358. package/dist/esm/clients/HubPoolClient.js +740 -581
  359. package/dist/esm/clients/HubPoolClient.js.map +1 -1
  360. package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.js +178 -133
  361. package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.js.map +1 -1
  362. package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.js +183 -126
  363. package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.js.map +1 -1
  364. package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js +399 -372
  365. package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
  366. package/dist/esm/clients/SpokePoolClient/SpokePoolClientManager.js +9 -9
  367. package/dist/esm/clients/SpokePoolClient/SpokePoolClientManager.js.map +1 -1
  368. package/dist/esm/clients/SpokePoolClient/index.js +2 -2
  369. package/dist/esm/clients/SpokePoolClient/index.js.map +1 -1
  370. package/dist/esm/clients/SpokePoolClient/types.js +2 -2
  371. package/dist/esm/clients/SpokePoolClient/types.js.map +1 -1
  372. package/dist/esm/clients/mocks/MockConfigStoreClient.js +64 -53
  373. package/dist/esm/clients/mocks/MockConfigStoreClient.js.map +1 -1
  374. package/dist/esm/clients/mocks/MockEvents.js +49 -42
  375. package/dist/esm/clients/mocks/MockEvents.js.map +1 -1
  376. package/dist/esm/clients/mocks/MockHubPoolClient.js +182 -138
  377. package/dist/esm/clients/mocks/MockHubPoolClient.js.map +1 -1
  378. package/dist/esm/clients/mocks/MockSpokePoolClient.js +188 -202
  379. package/dist/esm/clients/mocks/MockSpokePoolClient.js.map +1 -1
  380. package/dist/esm/clients/mocks/MockSvmCpiEventsClient.js +132 -127
  381. package/dist/esm/clients/mocks/MockSvmCpiEventsClient.js.map +1 -1
  382. package/dist/esm/clients/mocks/MockSvmSpokePoolClient.js +69 -53
  383. package/dist/esm/clients/mocks/MockSvmSpokePoolClient.js.map +1 -1
  384. package/dist/esm/coingecko/Coingecko.js +443 -298
  385. package/dist/esm/coingecko/Coingecko.js.map +1 -1
  386. package/dist/esm/constants.js +47 -40
  387. package/dist/esm/constants.js.map +1 -1
  388. package/dist/esm/contracts/acrossConfigStore.js +46 -24
  389. package/dist/esm/contracts/acrossConfigStore.js.map +1 -1
  390. package/dist/esm/contracts/hubPool.js +18 -34
  391. package/dist/esm/contracts/hubPool.js.map +1 -1
  392. package/dist/esm/contracts/utils.js +5 -3
  393. package/dist/esm/contracts/utils.js.map +1 -1
  394. package/dist/esm/gasPriceOracle/adapters/arbitrum.js +14 -6
  395. package/dist/esm/gasPriceOracle/adapters/arbitrum.js.map +1 -1
  396. package/dist/esm/gasPriceOracle/adapters/ethereum.js +42 -22
  397. package/dist/esm/gasPriceOracle/adapters/ethereum.js.map +1 -1
  398. package/dist/esm/gasPriceOracle/adapters/linea-viem.js +25 -13
  399. package/dist/esm/gasPriceOracle/adapters/linea-viem.js.map +1 -1
  400. package/dist/esm/gasPriceOracle/adapters/polygon.js +108 -72
  401. package/dist/esm/gasPriceOracle/adapters/polygon.js.map +1 -1
  402. package/dist/esm/gasPriceOracle/adapters/solana.js +31 -22
  403. package/dist/esm/gasPriceOracle/adapters/solana.js.map +1 -1
  404. package/dist/esm/gasPriceOracle/oracle.js +96 -70
  405. package/dist/esm/gasPriceOracle/oracle.js.map +1 -1
  406. package/dist/esm/gasPriceOracle/types.js +2 -2
  407. package/dist/esm/gasPriceOracle/types.js.map +1 -1
  408. package/dist/esm/gasPriceOracle/util.js +4 -4
  409. package/dist/esm/gasPriceOracle/util.js.map +1 -1
  410. package/dist/esm/lpFeeCalculator/lpFeeCalculator.js +33 -30
  411. package/dist/esm/lpFeeCalculator/lpFeeCalculator.js.map +1 -1
  412. package/dist/esm/lpFeeCalculator/rateModel.js +9 -7
  413. package/dist/esm/lpFeeCalculator/rateModel.js.map +1 -1
  414. package/dist/esm/merkleDistributor/MerkleDistributor.js +17 -18
  415. package/dist/esm/merkleDistributor/MerkleDistributor.js.map +1 -1
  416. package/dist/esm/pool/TransactionManager.js +100 -45
  417. package/dist/esm/pool/TransactionManager.js.map +1 -1
  418. package/dist/esm/pool/poolClient.js +740 -479
  419. package/dist/esm/pool/poolClient.js.map +1 -1
  420. package/dist/esm/pool/uma/across/constants.js +2 -2
  421. package/dist/esm/pool/uma/across/constants.js.map +1 -1
  422. package/dist/esm/pool/uma/across/transactionManager.js +100 -45
  423. package/dist/esm/pool/uma/across/transactionManager.js.map +1 -1
  424. package/dist/esm/pool/uma/clients/erc20/client.js +13 -15
  425. package/dist/esm/pool/uma/clients/erc20/client.js.map +1 -1
  426. package/dist/esm/pool/uma/oracle/utils.js +3 -2
  427. package/dist/esm/pool/uma/oracle/utils.js.map +1 -1
  428. package/dist/esm/pool/uma/utils.js +28 -9
  429. package/dist/esm/pool/uma/utils.js.map +1 -1
  430. package/dist/esm/priceClient/adapters/acrossApi.js +40 -21
  431. package/dist/esm/priceClient/adapters/acrossApi.js.map +1 -1
  432. package/dist/esm/priceClient/adapters/baseAdapter.js +72 -46
  433. package/dist/esm/priceClient/adapters/baseAdapter.js.map +1 -1
  434. package/dist/esm/priceClient/adapters/coingecko.js +61 -33
  435. package/dist/esm/priceClient/adapters/coingecko.js.map +1 -1
  436. package/dist/esm/priceClient/adapters/default.js +31 -15
  437. package/dist/esm/priceClient/adapters/default.js.map +1 -1
  438. package/dist/esm/priceClient/adapters/defiLlama.js +73 -38
  439. package/dist/esm/priceClient/adapters/defiLlama.js.map +1 -1
  440. package/dist/esm/priceClient/priceClient.js +158 -109
  441. package/dist/esm/priceClient/priceClient.js.map +1 -1
  442. package/dist/esm/providers/alchemy.js +18 -16
  443. package/dist/esm/providers/alchemy.js.map +1 -1
  444. package/dist/esm/providers/cachedProvider.js +134 -99
  445. package/dist/esm/providers/cachedProvider.js.map +1 -1
  446. package/dist/esm/providers/constants.js +3 -3
  447. package/dist/esm/providers/constants.js.map +1 -1
  448. package/dist/esm/providers/drpc.js +10 -8
  449. package/dist/esm/providers/drpc.js.map +1 -1
  450. package/dist/esm/providers/infura.js +11 -9
  451. package/dist/esm/providers/infura.js.map +1 -1
  452. package/dist/esm/providers/mocks/MockCachedSolanaRpcFactory.js +15 -6
  453. package/dist/esm/providers/mocks/MockCachedSolanaRpcFactory.js.map +1 -1
  454. package/dist/esm/providers/mocks/MockRateLimitedSolanaRpcFactory.js +14 -5
  455. package/dist/esm/providers/mocks/MockRateLimitedSolanaRpcFactory.js.map +1 -1
  456. package/dist/esm/providers/mocks/MockRetrySolanaRpcFactory.js +15 -6
  457. package/dist/esm/providers/mocks/MockRetrySolanaRpcFactory.js.map +1 -1
  458. package/dist/esm/providers/mocks/MockSolanaRpcFactory.js +66 -41
  459. package/dist/esm/providers/mocks/MockSolanaRpcFactory.js.map +1 -1
  460. package/dist/esm/providers/mocks/mockEthersProvider.js +30 -27
  461. package/dist/esm/providers/mocks/mockEthersProvider.js.map +1 -1
  462. package/dist/esm/providers/quicknode.js +20 -18
  463. package/dist/esm/providers/quicknode.js.map +1 -1
  464. package/dist/esm/providers/rateLimitedProvider.js +80 -68
  465. package/dist/esm/providers/rateLimitedProvider.js.map +1 -1
  466. package/dist/esm/providers/retryProvider.js +259 -186
  467. package/dist/esm/providers/retryProvider.js.map +1 -1
  468. package/dist/esm/providers/solana/baseRpcFactories.js +19 -13
  469. package/dist/esm/providers/solana/baseRpcFactories.js.map +1 -1
  470. package/dist/esm/providers/solana/cachedRpcFactory.js +112 -75
  471. package/dist/esm/providers/solana/cachedRpcFactory.js.map +1 -1
  472. package/dist/esm/providers/solana/defaultRpcFactory.js +14 -6
  473. package/dist/esm/providers/solana/defaultRpcFactory.js.map +1 -1
  474. package/dist/esm/providers/solana/quorumFallbackRpcFactory.js +202 -149
  475. package/dist/esm/providers/solana/quorumFallbackRpcFactory.js.map +1 -1
  476. package/dist/esm/providers/solana/rateLimitedRpcFactory.js +90 -70
  477. package/dist/esm/providers/solana/rateLimitedRpcFactory.js.map +1 -1
  478. package/dist/esm/providers/solana/retryRpcFactory.js +74 -50
  479. package/dist/esm/providers/solana/retryRpcFactory.js.map +1 -1
  480. package/dist/esm/providers/solana/utils.js +1 -1
  481. package/dist/esm/providers/solana/utils.js.map +1 -1
  482. package/dist/esm/providers/speedProvider.js +51 -28
  483. package/dist/esm/providers/speedProvider.js.map +1 -1
  484. package/dist/esm/providers/types.js +2 -2
  485. package/dist/esm/providers/types.js.map +1 -1
  486. package/dist/esm/providers/utils.js +20 -17
  487. package/dist/esm/providers/utils.js.map +1 -1
  488. package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.js +152 -98
  489. package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.js.map +1 -1
  490. package/dist/esm/relayFeeCalculator/chain-queries/customGasToken.js +26 -13
  491. package/dist/esm/relayFeeCalculator/chain-queries/customGasToken.js.map +1 -1
  492. package/dist/esm/relayFeeCalculator/chain-queries/factory.js +19 -9
  493. package/dist/esm/relayFeeCalculator/chain-queries/factory.js.map +1 -1
  494. package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js +128 -83
  495. package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -1
  496. package/dist/esm/relayFeeCalculator/relayFeeCalculator.js +299 -211
  497. package/dist/esm/relayFeeCalculator/relayFeeCalculator.js.map +1 -1
  498. package/dist/esm/typeguards/error.js +5 -3
  499. package/dist/esm/typeguards/error.js.map +1 -1
  500. package/dist/esm/utils/AddressUtils.js +147 -115
  501. package/dist/esm/utils/AddressUtils.js.map +1 -1
  502. package/dist/esm/utils/ArrayUtils.js +78 -21
  503. package/dist/esm/utils/ArrayUtils.js.map +1 -1
  504. package/dist/esm/utils/BigNumberUtils.js +12 -11
  505. package/dist/esm/utils/BigNumberUtils.js.map +1 -1
  506. package/dist/esm/utils/BlockExplorerUtils.js +23 -19
  507. package/dist/esm/utils/BlockExplorerUtils.js.map +1 -1
  508. package/dist/esm/utils/BlockFinder.js +6 -2
  509. package/dist/esm/utils/BlockFinder.js.map +1 -1
  510. package/dist/esm/utils/BlockUtils.js +40 -31
  511. package/dist/esm/utils/BlockUtils.js.map +1 -1
  512. package/dist/esm/utils/BundleUtils.js +24 -21
  513. package/dist/esm/utils/BundleUtils.js.map +1 -1
  514. package/dist/esm/utils/CCTPUtils.js +123 -62
  515. package/dist/esm/utils/CCTPUtils.js.map +1 -1
  516. package/dist/esm/utils/CachingUtils.js +38 -17
  517. package/dist/esm/utils/CachingUtils.js.map +1 -1
  518. package/dist/esm/utils/ContractUtils.js +3 -3
  519. package/dist/esm/utils/ContractUtils.js.map +1 -1
  520. package/dist/esm/utils/DepositUtils.js +98 -121
  521. package/dist/esm/utils/DepositUtils.js.map +1 -1
  522. package/dist/esm/utils/EventUtils.js +69 -52
  523. package/dist/esm/utils/EventUtils.js.map +1 -1
  524. package/dist/esm/utils/FormattingUtils.js +26 -20
  525. package/dist/esm/utils/FormattingUtils.js.map +1 -1
  526. package/dist/esm/utils/HyperLiquidUtils.js +22 -8
  527. package/dist/esm/utils/HyperLiquidUtils.js.map +1 -1
  528. package/dist/esm/utils/IPFSUtils.js +35 -16
  529. package/dist/esm/utils/IPFSUtils.js.map +1 -1
  530. package/dist/esm/utils/JSONUtils.js +4 -4
  531. package/dist/esm/utils/JSONUtils.js.map +1 -1
  532. package/dist/esm/utils/LogUtils.js +12 -8
  533. package/dist/esm/utils/LogUtils.js.map +1 -1
  534. package/dist/esm/utils/Multicall.js +110 -50
  535. package/dist/esm/utils/Multicall.js.map +1 -1
  536. package/dist/esm/utils/NetworkUtils.js +28 -12
  537. package/dist/esm/utils/NetworkUtils.js.map +1 -1
  538. package/dist/esm/utils/NumberUtils.js +3 -1
  539. package/dist/esm/utils/NumberUtils.js.map +1 -1
  540. package/dist/esm/utils/ObjectUtils.js +41 -27
  541. package/dist/esm/utils/ObjectUtils.js.map +1 -1
  542. package/dist/esm/utils/Profiler.js +82 -77
  543. package/dist/esm/utils/Profiler.js.map +1 -1
  544. package/dist/esm/utils/ReviverUtils.js +7 -3
  545. package/dist/esm/utils/ReviverUtils.js.map +1 -1
  546. package/dist/esm/utils/SpokeUtils.js +78 -83
  547. package/dist/esm/utils/SpokeUtils.js.map +1 -1
  548. package/dist/esm/utils/TokenUtils.js +57 -33
  549. package/dist/esm/utils/TokenUtils.js.map +1 -1
  550. package/dist/esm/utils/ValidatorUtils.js +4 -4
  551. package/dist/esm/utils/ValidatorUtils.js.map +1 -1
  552. package/dist/esm/utils/abi/index.js +20 -10
  553. package/dist/esm/utils/abi/index.js.map +1 -1
  554. package/dist/esm/utils/abi/typechain/factories/Multicall3__factory.js +12 -8
  555. package/dist/esm/utils/abi/typechain/factories/Multicall3__factory.js.map +1 -1
  556. package/dist/esm/utils/common.js +52 -38
  557. package/dist/esm/utils/common.js.map +1 -1
  558. package/dist/types/constants.d.ts.map +1 -1
  559. package/dist/types/gasPriceOracle/oracle.d.ts.map +1 -1
  560. package/dist/types/utils/Multicall.d.ts.map +1 -1
  561. package/dist/types/utils/NetworkUtils.d.ts.map +1 -1
  562. package/package.json +3 -3
  563. package/src/constants.ts +1 -0
  564. package/src/gasPriceOracle/oracle.ts +1 -0
  565. package/src/utils/Multicall.ts +1 -0
  566. package/src/utils/NetworkUtils.ts +8 -1
@@ -1,10 +1,11 @@
1
+ import { __assign, __awaiter, __extends, __generator } from "tslib";
1
2
  import { utils as ethersUtils } from "ethers";
2
3
  import { bnZero, EvmAddress, MAX_BIG_INT, assign, getRelayEventKey, isDefined, isSlowFill, validateFillForDeposit, chainIsEvm, chainIsProd, toAddressType, unpackDepositEvent, unpackFillEvent, } from "../../utils";
3
4
  import { duplicateEvent, sortEventsAscendingInPlace } from "../../utils/EventUtils";
4
5
  import { CHAIN_IDs, ZERO_ADDRESS } from "../../constants";
5
6
  import { BaseAbstractClient } from "../BaseAbstractClient";
6
7
  import { getRefundInformationFromFill } from "../BundleDataClient";
7
- export const knownEventNames = [
8
+ export var knownEventNames = [
8
9
  "EnabledDepositRoute",
9
10
  "TokensBridged",
10
11
  "RelayedRootBundle",
@@ -24,27 +25,8 @@ export const knownEventNames = [
24
25
  * SpokePoolClient is a client for the SpokePool contract. It is responsible for querying the SpokePool contract
25
26
  * for events and storing them in memory. It also provides some convenience methods for querying the stored events.
26
27
  */
27
- export class SpokePoolClient extends BaseAbstractClient {
28
- logger;
29
- hubPoolClient;
30
- chainId;
31
- deploymentBlock;
32
- currentTime = 0;
33
- duplicateDepositHashes = {};
34
- depositHashesToFills = {};
35
- speedUps = {};
36
- slowFillRequests = {};
37
- depositRoutes = {};
38
- tokensBridged = [];
39
- rootBundleRelays = [];
40
- relayerRefundExecutions = [];
41
- claimedRelayerRefunds = [];
42
- bridgedToHubPool = [];
43
- configStoreClient;
44
- invalidFills = new Set();
45
- depositHashes = {};
46
- spokePoolAddress;
47
- fills = {};
28
+ var SpokePoolClient = /** @class */ (function (_super) {
29
+ __extends(SpokePoolClient, _super);
48
30
  /**
49
31
  * Creates a new SpokePoolClient.
50
32
  * @param logger A logger instance.
@@ -53,26 +35,42 @@ export class SpokePoolClient extends BaseAbstractClient {
53
35
  * @param deploymentBlock The block number that the SpokePool contract was deployed at.
54
36
  * @param eventSearchConfig An optional EventSearchConfig object that controls how far back in history the client will search for events. If not provided, the client will only search for events from the deployment block.
55
37
  */
56
- constructor(logger,
38
+ function SpokePoolClient(logger,
57
39
  // Can be excluded. This disables some deposit validation.
58
- hubPoolClient, chainId, deploymentBlock, eventSearchConfig = { from: 0, maxLookBack: 0 }) {
59
- super(eventSearchConfig);
60
- this.logger = logger;
61
- this.hubPoolClient = hubPoolClient;
62
- this.chainId = chainId;
63
- this.deploymentBlock = deploymentBlock;
64
- this.firstHeightToSearch = eventSearchConfig.from;
65
- this.latestHeightSearched = 0;
66
- this.configStoreClient = hubPoolClient?.configStoreClient;
40
+ hubPoolClient, chainId, deploymentBlock, eventSearchConfig) {
41
+ if (eventSearchConfig === void 0) { eventSearchConfig = { from: 0, maxLookBack: 0 }; }
42
+ var _this = _super.call(this, eventSearchConfig) || this;
43
+ _this.logger = logger;
44
+ _this.hubPoolClient = hubPoolClient;
45
+ _this.chainId = chainId;
46
+ _this.deploymentBlock = deploymentBlock;
47
+ _this.currentTime = 0;
48
+ _this.duplicateDepositHashes = {};
49
+ _this.depositHashesToFills = {};
50
+ _this.speedUps = {};
51
+ _this.slowFillRequests = {};
52
+ _this.depositRoutes = {};
53
+ _this.tokensBridged = [];
54
+ _this.rootBundleRelays = [];
55
+ _this.relayerRefundExecutions = [];
56
+ _this.claimedRelayerRefunds = [];
57
+ _this.bridgedToHubPool = [];
58
+ _this.invalidFills = new Set();
59
+ _this.depositHashes = {};
60
+ _this.fills = {};
61
+ _this.firstHeightToSearch = eventSearchConfig.from;
62
+ _this.latestHeightSearched = 0;
63
+ _this.configStoreClient = hubPoolClient === null || hubPoolClient === void 0 ? void 0 : hubPoolClient.configStoreClient;
64
+ return _this;
67
65
  }
68
66
  /**
69
67
  * Retrieves a list of unique deposits from the SpokePool contract destined for the given destination chain ID.
70
68
  * @param destinationChainId The destination chain ID.
71
69
  * @returns A list of deposits.
72
70
  */
73
- getDepositsForDestinationChain(destinationChainId) {
74
- return Object.values(this.depositHashes).filter((deposit) => deposit.destinationChainId === destinationChainId);
75
- }
71
+ SpokePoolClient.prototype.getDepositsForDestinationChain = function (destinationChainId) {
72
+ return Object.values(this.depositHashes).filter(function (deposit) { return deposit.destinationChainId === destinationChainId; });
73
+ };
76
74
  /**
77
75
  * Retrieves a list of duplicate deposits matching the given deposit's deposit hash.
78
76
  * @notice A duplicate is considered any deposit sent after the original deposit with the same deposit hash.
@@ -80,10 +78,11 @@ export class SpokePoolClient extends BaseAbstractClient {
80
78
  * @returns A list of duplicate deposits. Does NOT include the original deposit
81
79
  * unless the original deposit is a duplicate.
82
80
  */
83
- _getDuplicateDeposits(deposit) {
84
- const depositHash = getRelayEventKey(deposit);
85
- return this.duplicateDepositHashes[depositHash] ?? [];
86
- }
81
+ SpokePoolClient.prototype._getDuplicateDeposits = function (deposit) {
82
+ var _a;
83
+ var depositHash = getRelayEventKey(deposit);
84
+ return (_a = this.duplicateDepositHashes[depositHash]) !== null && _a !== void 0 ? _a : [];
85
+ };
87
86
  /**
88
87
  * Returns a list of all deposits including any duplicate ones. Designed only to be used in use cases where
89
88
  * all deposits are required, regardless of duplicates. For example, the Dataworker can use this to refund
@@ -91,197 +90,204 @@ export class SpokePoolClient extends BaseAbstractClient {
91
90
  * @param destinationChainId
92
91
  * @returns A list of deposits
93
92
  */
94
- getDepositsForDestinationChainWithDuplicates(destinationChainId) {
95
- const deposits = this.getDepositsForDestinationChain(destinationChainId);
96
- const duplicateDeposits = deposits.reduce((acc, deposit) => {
97
- const duplicates = this._getDuplicateDeposits(deposit);
93
+ SpokePoolClient.prototype.getDepositsForDestinationChainWithDuplicates = function (destinationChainId) {
94
+ var _this = this;
95
+ var deposits = this.getDepositsForDestinationChain(destinationChainId);
96
+ var duplicateDeposits = deposits.reduce(function (acc, deposit) {
97
+ var duplicates = _this._getDuplicateDeposits(deposit);
98
98
  return acc.concat(duplicates);
99
99
  }, []);
100
100
  return sortEventsAscendingInPlace(deposits.concat(duplicateDeposits.flat()));
101
- }
101
+ };
102
102
  /**
103
103
  * Retrieves a list of deposits from the SpokePool contract that are associated with this spoke pool.
104
104
  * @returns A list of deposits.
105
105
  * @note This method returns all deposits, regardless of destination chain ID in sorted order.
106
106
  */
107
- getDeposits(filter) {
108
- let deposits = Object.values(this.depositHashes);
107
+ SpokePoolClient.prototype.getDeposits = function (filter) {
108
+ var deposits = Object.values(this.depositHashes);
109
109
  if (isDefined(filter)) {
110
- const { fromBlock, toBlock } = filter;
111
- deposits = deposits.filter(({ blockNumber }) => blockNumber >= fromBlock && toBlock >= blockNumber);
110
+ var fromBlock_1 = filter.fromBlock, toBlock_1 = filter.toBlock;
111
+ deposits = deposits.filter(function (_a) {
112
+ var blockNumber = _a.blockNumber;
113
+ return blockNumber >= fromBlock_1 && toBlock_1 >= blockNumber;
114
+ });
112
115
  }
113
116
  return sortEventsAscendingInPlace(deposits);
114
- }
117
+ };
115
118
  /**
116
119
  * Retrieves a list of the tokens that have been bridged.
117
120
  * @returns A list of tokens.
118
121
  */
119
- getTokensBridged() {
122
+ SpokePoolClient.prototype.getTokensBridged = function () {
120
123
  return this.tokensBridged;
121
- }
124
+ };
122
125
  /**
123
126
  * Retrieves a mapping of tokens and their associated destination chain IDs that can be bridged.
124
127
  * @returns A mapping of tokens and their associated destination chain IDs in a nested mapping.
125
128
  */
126
- getDepositRoutes() {
129
+ SpokePoolClient.prototype.getDepositRoutes = function () {
127
130
  return this.depositRoutes;
128
- }
131
+ };
129
132
  /**
130
133
  * Retrieves a list of fills from the SpokePool contract.
131
134
  * @returns A list of fills.
132
135
  */
133
- getFills() {
136
+ SpokePoolClient.prototype.getFills = function () {
134
137
  return sortEventsAscendingInPlace(Object.values(this.fills).flat());
135
- }
138
+ };
136
139
  /**
137
140
  * Retrieves a list of fills from a specific origin chain ID.
138
141
  * @param originChainId The origin chain ID.
139
142
  * @returns A list of fills.
140
143
  */
141
- getFillsForOriginChain(originChainId) {
144
+ SpokePoolClient.prototype.getFillsForOriginChain = function (originChainId) {
142
145
  return this.fills[originChainId] || [];
143
- }
146
+ };
144
147
  /**
145
148
  * Retrieves a list of fills from a specific relayer address.
146
149
  * @param relayer The relayer address.
147
150
  * @returns A list of fills.
148
151
  */
149
- getFillsForRelayer(relayer) {
150
- return this.getFills().filter((fill) => fill.relayer.eq(relayer));
151
- }
152
+ SpokePoolClient.prototype.getFillsForRelayer = function (relayer) {
153
+ return this.getFills().filter(function (fill) { return fill.relayer.eq(relayer); });
154
+ };
152
155
  /**
153
156
  * Retrieves a list of fills from a given block range.
154
157
  * @param startingBlock The starting block number.
155
158
  * @param endingBlock The ending block number.
156
159
  * @returns A list of fills.
157
160
  */
158
- getFillsWithBlockInRange(startingBlock, endingBlock) {
159
- return this.getFills().filter((fill) => fill.blockNumber >= startingBlock && fill.blockNumber <= endingBlock);
160
- }
161
+ SpokePoolClient.prototype.getFillsWithBlockInRange = function (startingBlock, endingBlock) {
162
+ return this.getFills().filter(function (fill) { return fill.blockNumber >= startingBlock && fill.blockNumber <= endingBlock; });
163
+ };
161
164
  /**
162
165
  * Retrieves a list of root bundle relays from the SpokePool contract.
163
166
  * @returns A list of root bundle relays.
164
167
  */
165
- getRootBundleRelays() {
168
+ SpokePoolClient.prototype.getRootBundleRelays = function () {
166
169
  return this.rootBundleRelays;
167
- }
170
+ };
168
171
  /**
169
172
  * Retrieves the ID of the latest root bundle.
170
173
  * @returns The ID of the latest root bundle. This will be 0 if no root bundles have been relayed.
171
174
  */
172
- getLatestRootBundleId() {
175
+ SpokePoolClient.prototype.getLatestRootBundleId = function () {
176
+ var _a;
173
177
  return this.rootBundleRelays.length > 0
174
- ? this.rootBundleRelays[this.rootBundleRelays.length - 1]?.rootBundleId + 1
178
+ ? ((_a = this.rootBundleRelays[this.rootBundleRelays.length - 1]) === null || _a === void 0 ? void 0 : _a.rootBundleId) + 1
175
179
  : 0;
176
- }
180
+ };
177
181
  /**
178
182
  * Retrieves a list of relayer refund executions from the SpokePool contract.
179
183
  * @returns A list of relayer refund executions.
180
184
  */
181
- getRelayerRefundExecutions() {
185
+ SpokePoolClient.prototype.getRelayerRefundExecutions = function () {
182
186
  return this.relayerRefundExecutions;
183
- }
187
+ };
184
188
  /**
185
189
  * Retrieves a list of claimed relayer refunds from the SpokePool contract.
186
190
  * @returns A list of claimed relayer refunds.
187
191
  */
188
- getClaimedRelayerRefunds() {
192
+ SpokePoolClient.prototype.getClaimedRelayerRefunds = function () {
189
193
  return this.claimedRelayerRefunds;
190
- }
194
+ };
191
195
  /**
192
196
  * Retrieves a list of bridged to hub pool events from the SpokePool contract.
193
197
  * @returns A list of bridged to hub pool events.
194
198
  */
195
- getBridgedToHubPoolEvents() {
199
+ SpokePoolClient.prototype.getBridgedToHubPoolEvents = function () {
196
200
  return this.bridgedToHubPool;
197
- }
201
+ };
198
202
  /**
199
203
  * Appends a speed up signature to a specific deposit.
200
204
  * @param deposit The deposit to append the speed up signature to.
201
205
  * @returns A new deposit instance with the speed up signature appended to the deposit.
202
206
  */
203
- appendMaxSpeedUpSignatureToDeposit(deposit) {
204
- const { depositId, depositor } = deposit;
207
+ SpokePoolClient.prototype.appendMaxSpeedUpSignatureToDeposit = function (deposit) {
208
+ var _a;
209
+ var depositId = deposit.depositId, depositor = deposit.depositor;
205
210
  // Note: we know depositor cannot be more than 20 bytes since this is guaranteed by contracts.
206
211
  // Additionally, speed ups can only be done on EVM networks.
207
- const speedups = this.speedUps[depositor.toEvmAddress()]?.[depositId.toString()];
212
+ var speedups = (_a = this.speedUps[depositor.toEvmAddress()]) === null || _a === void 0 ? void 0 : _a[depositId.toString()];
208
213
  if (!isDefined(speedups) || speedups.length === 0) {
209
214
  return deposit;
210
215
  }
211
- const maxSpeedUp = speedups.reduce((prev, current) => prev.updatedOutputAmount.lt(current.updatedOutputAmount) ? prev : current);
216
+ var maxSpeedUp = speedups.reduce(function (prev, current) {
217
+ return prev.updatedOutputAmount.lt(current.updatedOutputAmount) ? prev : current;
218
+ });
212
219
  // We assume that the depositor authorises SpeedUps in isolation of each other, which keeps the relayer
213
220
  // logic simple: find the SpeedUp with the lowest updatedOutputAmount, and use all of its fields.
214
221
  if (maxSpeedUp.updatedOutputAmount.gte(deposit.outputAmount)) {
215
222
  return deposit;
216
223
  }
217
224
  // Return deposit with updated params from the speedup with the lowest updated output amount.
218
- const updatedDeposit = {
219
- ...deposit,
220
- speedUpSignature: maxSpeedUp.depositorSignature,
221
- updatedOutputAmount: maxSpeedUp.updatedOutputAmount,
222
- updatedRecipient: maxSpeedUp.updatedRecipient,
223
- updatedMessage: maxSpeedUp.updatedMessage,
224
- };
225
+ var updatedDeposit = __assign(__assign({}, deposit), { speedUpSignature: maxSpeedUp.depositorSignature, updatedOutputAmount: maxSpeedUp.updatedOutputAmount, updatedRecipient: maxSpeedUp.updatedRecipient, updatedMessage: maxSpeedUp.updatedMessage });
225
226
  return updatedDeposit;
226
- }
227
+ };
227
228
  /**
228
229
  * Find a deposit based on its deposit ID.
229
230
  * @notice If evaluating a fill, be sure to verify it against the resulting deposit.
230
231
  * @param depositId The unique ID of the deposit being queried.
231
232
  * @returns The corresponding deposit if found, undefined otherwise.
232
233
  */
233
- getDeposit(depositId) {
234
- return Object.values(this.depositHashes).find(({ depositId: _depositId }) => _depositId.eq(depositId));
235
- }
234
+ SpokePoolClient.prototype.getDeposit = function (depositId) {
235
+ return Object.values(this.depositHashes).find(function (_a) {
236
+ var _depositId = _a.depositId;
237
+ return _depositId.eq(depositId);
238
+ });
239
+ };
236
240
  /**
237
241
  * Retrieves a list of slow fill requests from the SpokePool contract.
238
242
  * @returns A list of slow fill requests.
239
243
  */
240
- getSlowFillRequests() {
244
+ SpokePoolClient.prototype.getSlowFillRequests = function () {
241
245
  return sortEventsAscendingInPlace(Object.values(this.slowFillRequests));
242
- }
246
+ };
243
247
  /**
244
248
  * Find a SlowFillRequested event based on its deposit RelayData.
245
249
  * @param relayData RelayData field for the SlowFill request.
246
250
  * @returns The corresponding SlowFillRequest event if found, otherwise undefined.
247
251
  */
248
- getSlowFillRequest(relayData) {
249
- const hash = getRelayEventKey({ ...relayData, destinationChainId: this.chainId });
252
+ SpokePoolClient.prototype.getSlowFillRequest = function (relayData) {
253
+ var hash = getRelayEventKey(__assign(__assign({}, relayData), { destinationChainId: this.chainId }));
250
254
  return this.slowFillRequests[hash];
251
- }
255
+ };
252
256
  /**
253
257
  * Retrieves a list of slow fill requests for deposits from a specific origin chain ID.
254
258
  * @param originChainId The origin chain ID.
255
259
  * @returns A list of slow fill requests.
256
260
  */
257
- getSlowFillRequestsForOriginChain(originChainId) {
258
- return Object.values(this.slowFillRequests).filter((e) => e.originChainId === originChainId);
259
- }
261
+ SpokePoolClient.prototype.getSlowFillRequestsForOriginChain = function (originChainId) {
262
+ return Object.values(this.slowFillRequests).filter(function (e) { return e.originChainId === originChainId; });
263
+ };
260
264
  /**
261
265
  * Retrieves speed up requests grouped by depositor and depositId.
262
266
  * @returns A mapping of depositor addresses to deposit ids with their corresponding speed up requests.
263
267
  */
264
- getSpeedUps() {
268
+ SpokePoolClient.prototype.getSpeedUps = function () {
265
269
  return this.speedUps;
266
- }
270
+ };
267
271
  /**
268
272
  * Find a corresponding deposit for a given fill.
269
273
  * @param fill The fill to find a corresponding deposit for.
270
274
  * @returns The corresponding deposit if found, undefined otherwise.
271
275
  */
272
- getDepositForFill(fill) {
273
- const deposit = this.depositHashes[getRelayEventKey(fill)];
274
- const match = validateFillForDeposit(fill, deposit);
276
+ SpokePoolClient.prototype.getDepositForFill = function (fill) {
277
+ var deposit = this.depositHashes[getRelayEventKey(fill)];
278
+ var match = validateFillForDeposit(fill, deposit);
275
279
  return match.valid ? deposit : undefined;
276
- }
277
- getFillsForDeposit(deposit) {
278
- return this.depositHashesToFills[this.getDepositHash(deposit)] ?? [];
279
- }
280
- isDepositFilled(deposit) {
281
- const depositHash = this.getDepositHash(deposit);
282
- const fills = this.depositHashesToFills[depositHash] ?? [];
283
- return fills.some((fill) => validateFillForDeposit(fill, deposit).valid);
284
- }
280
+ };
281
+ SpokePoolClient.prototype.getFillsForDeposit = function (deposit) {
282
+ var _a;
283
+ return (_a = this.depositHashesToFills[this.getDepositHash(deposit)]) !== null && _a !== void 0 ? _a : [];
284
+ };
285
+ SpokePoolClient.prototype.isDepositFilled = function (deposit) {
286
+ var _a;
287
+ var depositHash = this.getDepositHash(deposit);
288
+ var fills = (_a = this.depositHashesToFills[depositHash]) !== null && _a !== void 0 ? _a : [];
289
+ return fills.some(function (fill) { return validateFillForDeposit(fill, deposit).valid; });
290
+ };
285
291
  // @TODO: Remove this method after refactoring relayer repo.
286
292
  /**
287
293
  * Find the unfilled amount for a given deposit. This is the full deposit amount minus the total filled amount.
@@ -290,27 +296,25 @@ export class SpokePoolClient extends BaseAbstractClient {
290
296
  * @param invalidFills The invalid fills that have been applied to this deposit.
291
297
  * @returns The unfilled amount.
292
298
  */
293
- getValidUnfilledAmountForDeposit(deposit) {
294
- const { outputAmount, originChainId } = deposit;
295
- const fillsForDeposit = this.depositHashesToFills[this.getDepositHash(deposit)];
299
+ SpokePoolClient.prototype.getValidUnfilledAmountForDeposit = function (deposit) {
300
+ var _this = this;
301
+ var outputAmount = deposit.outputAmount, originChainId = deposit.originChainId;
302
+ var fillsForDeposit = this.depositHashesToFills[this.getDepositHash(deposit)];
296
303
  // If no fills then the full amount is remaining.
297
304
  if (fillsForDeposit === undefined || fillsForDeposit.length === 0) {
298
305
  return { unfilledAmount: outputAmount, fillCount: 0, invalidFills: [] };
299
306
  }
300
- const { validFills, invalidFills, unrepayableFills } = fillsForDeposit.reduce((groupedFills, fill) => {
307
+ var _a = fillsForDeposit.reduce(function (groupedFills, fill) {
301
308
  if (validateFillForDeposit(fill, deposit).valid) {
302
- const fillRepaymentData = {
303
- ...fill,
304
- fromLiteChain: deposit.fromLiteChain,
305
- };
306
- const { chainToSendRefundTo: repaymentChainId } = getRefundInformationFromFill(fillRepaymentData, this.hubPoolClient, this.hubPoolClient.latestHeightSearched);
309
+ var fillRepaymentData = __assign(__assign({}, fill), { fromLiteChain: deposit.fromLiteChain });
310
+ var repaymentChainId = getRefundInformationFromFill(fillRepaymentData, _this.hubPoolClient, _this.hubPoolClient.latestHeightSearched).chainToSendRefundTo;
307
311
  // In order to keep this function sync, we can't call verifyFillRepayment so we'll log any fills where
308
312
  // the filler-specified repayment chain and repayment address is not a valid repayment upon
309
313
  // first glance. In other words, the repayment address is not a valid EVM address or the repayment chain
310
314
  // is not a valid EVM chain. In the case where the repayment address is not a valid EVM address, the dataworker
311
315
  // might be able to overwrite the repayment address to the msg.sender on the fill txn, but to keep this
312
316
  // functioon synchronous, we can't make that decision now. So this function might log some false positives.
313
- if (this.hubPoolClient && !isSlowFill(fill) && !fill.relayer.isValidOn(repaymentChainId)) {
317
+ if (_this.hubPoolClient && !isSlowFill(fill) && !fill.relayer.isValidOn(repaymentChainId)) {
314
318
  groupedFills.unrepayableFills.push(fill);
315
319
  }
316
320
  // This fill is still valid and means that the deposit cannot be filled on-chain anymore, but it
@@ -321,29 +325,29 @@ export class SpokePoolClient extends BaseAbstractClient {
321
325
  groupedFills.invalidFills.push(fill);
322
326
  }
323
327
  return groupedFills;
324
- }, { validFills: [], invalidFills: [], unrepayableFills: [] });
325
- const logLevel = chainIsProd(originChainId) ? "warn" : "debug";
326
- const unrepayableFillsForDeposit = unrepayableFills.filter((x) => x.depositId.eq(deposit.depositId));
328
+ }, { validFills: [], invalidFills: [], unrepayableFills: [] }), validFills = _a.validFills, invalidFills = _a.invalidFills, unrepayableFills = _a.unrepayableFills;
329
+ var logLevel = chainIsProd(originChainId) ? "warn" : "debug";
330
+ var unrepayableFillsForDeposit = unrepayableFills.filter(function (x) { return x.depositId.eq(deposit.depositId); });
327
331
  if (unrepayableFillsForDeposit.length > 0) {
328
332
  this.logger[logLevel]({
329
333
  at: "SpokePoolClient",
330
334
  chainId: this.chainId,
331
335
  message: "Unrepayable fills found where we need to switch repayment address and or chain",
332
- deposit,
333
- unrepayableFills: Object.fromEntries(unrepayableFillsForDeposit.map((x) => [x.relayer.toNative(), x])),
336
+ deposit: deposit,
337
+ unrepayableFills: Object.fromEntries(unrepayableFillsForDeposit.map(function (x) { return [x.relayer.toNative(), x]; })),
334
338
  notificationPath: "across-unrepayable-fills",
335
339
  });
336
340
  }
337
341
  // If all fills are invalid we can consider this unfilled.
338
342
  if (validFills.length === 0) {
339
- return { unfilledAmount: outputAmount, fillCount: 0, invalidFills };
343
+ return { unfilledAmount: outputAmount, fillCount: 0, invalidFills: invalidFills };
340
344
  }
341
345
  return {
342
346
  unfilledAmount: bnZero,
343
347
  fillCount: validFills.length,
344
- invalidFills,
348
+ invalidFills: invalidFills,
345
349
  };
346
- }
350
+ };
347
351
  /**
348
352
  * Formulate a hash for a given deposit or fill
349
353
  * @param event The deposit or fill to formulate a hash for.
@@ -351,19 +355,20 @@ export class SpokePoolClient extends BaseAbstractClient {
351
355
  * @note This hash is used to match deposits and fills together.
352
356
  * @note This hash takes the form of: `${depositId}-${originChainId}`.
353
357
  */
354
- getDepositHash(event) {
355
- return `${event.depositId.toString()}-${event.originChainId}`;
356
- }
357
- canResolveZeroAddressOutputToken(deposit) {
358
- if (!this.hubPoolClient?.l2TokenHasPoolRebalanceRoute(deposit.inputToken, deposit.originChainId, deposit.quoteBlockNumber)) {
358
+ SpokePoolClient.prototype.getDepositHash = function (event) {
359
+ return "".concat(event.depositId.toString(), "-").concat(event.originChainId);
360
+ };
361
+ SpokePoolClient.prototype.canResolveZeroAddressOutputToken = function (deposit) {
362
+ var _a, _b;
363
+ if (!((_a = this.hubPoolClient) === null || _a === void 0 ? void 0 : _a.l2TokenHasPoolRebalanceRoute(deposit.inputToken, deposit.originChainId, deposit.quoteBlockNumber))) {
359
364
  return false;
360
365
  }
361
- const l1Token = this.hubPoolClient?.getL1TokenForL2TokenAtBlock(deposit.inputToken, deposit.originChainId, deposit.quoteBlockNumber);
366
+ var l1Token = (_b = this.hubPoolClient) === null || _b === void 0 ? void 0 : _b.getL1TokenForL2TokenAtBlock(deposit.inputToken, deposit.originChainId, deposit.quoteBlockNumber);
362
367
  if (!l1Token) {
363
368
  return false;
364
369
  }
365
370
  return this.hubPoolClient.l2TokenEnabledForL1TokenAtBlock(l1Token, deposit.destinationChainId, deposit.quoteBlockNumber);
366
- }
371
+ };
367
372
  /**
368
373
  * A wrapper over the `_update` method that handles errors and logs. This method additionally calls into the
369
374
  * HubPoolClient to update the state of this client with data from the HubPool contract.
@@ -372,285 +377,307 @@ export class SpokePoolClient extends BaseAbstractClient {
372
377
  * @note This method is the primary method for updating the state of this client externally.
373
378
  * @see _update
374
379
  */
375
- async update(eventsToQuery = this._queryableEventNames()) {
376
- const duplicateEvents = [];
377
- if (this.hubPoolClient !== null && !this.hubPoolClient.isUpdated) {
378
- throw new Error("HubPoolClient not updated");
379
- }
380
- const update = await this._update(eventsToQuery);
381
- if (!update.success) {
382
- return;
383
- }
384
- const { events: queryResults, currentTime, searchEndBlock } = update;
385
- if (eventsToQuery.includes("TokensBridged")) {
386
- for (const _event of queryResults[eventsToQuery.indexOf("TokensBridged")]) {
387
- const event = _event;
388
- this.tokensBridged.push({
389
- ...event,
390
- l2TokenAddress: toAddressType(event.l2TokenAddress, this.chainId),
391
- });
392
- }
393
- }
394
- // Performs the indexing of a deposit-like spoke pool event.
395
- const queryDepositEvents = async (eventName) => {
396
- const depositEvents = (queryResults[eventsToQuery.indexOf(eventName)] ?? []).map((event) => unpackDepositEvent(event, this.chainId));
397
- // For each deposit, resolve its quoteTimestamp to a block number on the HubPool.
398
- // Don't bother filtering for uniqueness; the HubPoolClient handles this efficienctly.
399
- const quoteBlockNumbers = await this.getBlockNumbers(depositEvents.map((e) => e.quoteTimestamp));
400
- for (const event of depositEvents) {
401
- const quoteBlockNumber = quoteBlockNumbers[Number(event.quoteTimestamp)];
402
- // Derive and append the common properties that are not part of the onchain event.
403
- const outputToken = event.outputToken.isZeroAddress()
404
- ? this.getDestinationTokenForDeposit({ ...event, quoteBlockNumber })
405
- : event.outputToken;
406
- const deposit = {
407
- ...event,
408
- outputToken,
409
- quoteBlockNumber,
410
- fromLiteChain: this.isOriginLiteChain(event),
411
- toLiteChain: this.isDestinationLiteChain(event),
412
- };
413
- if (this.depositHashes[getRelayEventKey(deposit)] !== undefined) {
414
- // Sanity check that this event is not a duplicate, even though the relay data hash is a duplicate.
415
- const allDeposits = this._getDuplicateDeposits(deposit).concat(this.depositHashes[getRelayEventKey(deposit)]);
416
- if (allDeposits.some((e) => duplicateEvent(deposit, e))) {
417
- duplicateEvents.push(event);
418
- continue;
419
- }
420
- assign(this.duplicateDepositHashes, [getRelayEventKey(deposit)], [deposit]);
421
- continue;
380
+ SpokePoolClient.prototype.update = function () {
381
+ return __awaiter(this, arguments, void 0, function (eventsToQuery) {
382
+ var duplicateEvents, update, queryResults, currentTime, searchEndBlock, _i, _a, _event, event_1, queryDepositEvents, _b, _c, event_2, querySpeedUpDepositEvents, queryRequestedSlowFillEvents, queryFilledRelayEvents, enableDepositsEvents, _d, enableDepositsEvents_1, event_3, relayedRootBundleEvents, _e, relayedRootBundleEvents_1, event_4, refundEvents, _f, refundEvents_1, _event, event_5, claimedRelayerRefundEvents, _g, claimedRelayerRefundEvents_1, event_6, bridgedToHubPoolEvents, _h, bridgedToHubPoolEvents_1, event_7;
383
+ var _this = this;
384
+ var _j, _k;
385
+ if (eventsToQuery === void 0) { eventsToQuery = this._queryableEventNames(); }
386
+ return __generator(this, function (_l) {
387
+ switch (_l.label) {
388
+ case 0:
389
+ duplicateEvents = [];
390
+ if (this.hubPoolClient !== null && !this.hubPoolClient.isUpdated) {
391
+ throw new Error("HubPoolClient not updated");
392
+ }
393
+ return [4 /*yield*/, this._update(eventsToQuery)];
394
+ case 1:
395
+ update = _l.sent();
396
+ if (!update.success) {
397
+ return [2 /*return*/];
398
+ }
399
+ queryResults = update.events, currentTime = update.currentTime, searchEndBlock = update.searchEndBlock;
400
+ if (eventsToQuery.includes("TokensBridged")) {
401
+ for (_i = 0, _a = queryResults[eventsToQuery.indexOf("TokensBridged")]; _i < _a.length; _i++) {
402
+ _event = _a[_i];
403
+ event_1 = _event;
404
+ this.tokensBridged.push(__assign(__assign({}, event_1), { l2TokenAddress: toAddressType(event_1.l2TokenAddress, this.chainId) }));
405
+ }
406
+ }
407
+ queryDepositEvents = function (eventName) { return __awaiter(_this, void 0, void 0, function () {
408
+ var depositEvents, quoteBlockNumbers, _loop_1, this_1, _i, depositEvents_1, event_8;
409
+ var _this = this;
410
+ var _a;
411
+ return __generator(this, function (_b) {
412
+ switch (_b.label) {
413
+ case 0:
414
+ depositEvents = ((_a = queryResults[eventsToQuery.indexOf(eventName)]) !== null && _a !== void 0 ? _a : []).map(function (event) {
415
+ return unpackDepositEvent(event, _this.chainId);
416
+ });
417
+ return [4 /*yield*/, this.getBlockNumbers(depositEvents.map(function (e) { return e.quoteTimestamp; }))];
418
+ case 1:
419
+ quoteBlockNumbers = _b.sent();
420
+ _loop_1 = function (event_8) {
421
+ var quoteBlockNumber = quoteBlockNumbers[Number(event_8.quoteTimestamp)];
422
+ // Derive and append the common properties that are not part of the onchain event.
423
+ var outputToken = event_8.outputToken.isZeroAddress()
424
+ ? this_1.getDestinationTokenForDeposit(__assign(__assign({}, event_8), { quoteBlockNumber: quoteBlockNumber }))
425
+ : event_8.outputToken;
426
+ var deposit = __assign(__assign({}, event_8), { outputToken: outputToken, quoteBlockNumber: quoteBlockNumber, fromLiteChain: this_1.isOriginLiteChain(event_8), toLiteChain: this_1.isDestinationLiteChain(event_8) });
427
+ if (this_1.depositHashes[getRelayEventKey(deposit)] !== undefined) {
428
+ // Sanity check that this event is not a duplicate, even though the relay data hash is a duplicate.
429
+ var allDeposits = this_1._getDuplicateDeposits(deposit).concat(this_1.depositHashes[getRelayEventKey(deposit)]);
430
+ if (allDeposits.some(function (e) { return duplicateEvent(deposit, e); })) {
431
+ duplicateEvents.push(event_8);
432
+ return "continue";
433
+ }
434
+ assign(this_1.duplicateDepositHashes, [getRelayEventKey(deposit)], [deposit]);
435
+ return "continue";
436
+ }
437
+ assign(this_1.depositHashes, [getRelayEventKey(deposit)], deposit);
438
+ };
439
+ this_1 = this;
440
+ for (_i = 0, depositEvents_1 = depositEvents; _i < depositEvents_1.length; _i++) {
441
+ event_8 = depositEvents_1[_i];
442
+ _loop_1(event_8);
443
+ }
444
+ return [2 /*return*/];
445
+ }
446
+ });
447
+ }); };
448
+ _b = 0, _c = ["FundsDeposited"];
449
+ _l.label = 2;
450
+ case 2:
451
+ if (!(_b < _c.length)) return [3 /*break*/, 5];
452
+ event_2 = _c[_b];
453
+ if (!eventsToQuery.includes(event_2)) return [3 /*break*/, 4];
454
+ return [4 /*yield*/, queryDepositEvents(event_2)];
455
+ case 3:
456
+ _l.sent();
457
+ _l.label = 4;
458
+ case 4:
459
+ _b++;
460
+ return [3 /*break*/, 2];
461
+ case 5:
462
+ querySpeedUpDepositEvents = function (eventName) {
463
+ var _a;
464
+ var speedUpEvents = ((_a = queryResults[eventsToQuery.indexOf(eventName)]) !== null && _a !== void 0 ? _a : [])
465
+ .map(function (_event) {
466
+ var event = _event;
467
+ var invalid = [event.depositor, event.updatedRecipient].some(function (addr) { return !EvmAddress.validate(ethersUtils.arrayify(addr)); });
468
+ if (invalid) {
469
+ return;
470
+ }
471
+ return __assign(__assign({}, event), { depositor: EvmAddress.from(event.depositor), updatedRecipient: EvmAddress.from(event.updatedRecipient) });
472
+ })
473
+ .filter(isDefined);
474
+ for (var _i = 0, speedUpEvents_1 = speedUpEvents; _i < speedUpEvents_1.length; _i++) {
475
+ var event_9 = speedUpEvents_1[_i];
476
+ var speedUp = __assign(__assign({}, event_9), { originChainId: _this.chainId });
477
+ assign(_this.speedUps, [speedUp.depositor.toEvmAddress(), speedUp.depositId.toString()], [speedUp]);
478
+ // Find deposit hash matching this speed up event and update the deposit data associated with the hash,
479
+ // if the hash+data exists. nb. Relying on depositId alone can produce collisions on deterministic deposit IDs.
480
+ var deposit = _this.getDeposit(speedUp.depositId);
481
+ // SpeedUp requests are only supported EVM -> EVM.
482
+ if (isDefined(deposit) && chainIsEvm(deposit.destinationChainId) && deposit.depositor.eq(speedUp.depositor)) {
483
+ // We can assume all deposits in this lookback window are loaded in-memory already so if the depositHash
484
+ // is not mapped to a deposit, then we can throw away the speedup as it can't be applied to anything.
485
+ var eventKey = getRelayEventKey(deposit);
486
+ _this.depositHashes[eventKey] = _this.appendMaxSpeedUpSignatureToDeposit(deposit);
487
+ }
488
+ }
489
+ };
490
+ // Update deposits with speed up requests from depositor.
491
+ ["RequestedSpeedUpDeposit"].forEach(function (event) {
492
+ if (eventsToQuery.includes(event)) {
493
+ querySpeedUpDepositEvents(event);
494
+ }
495
+ });
496
+ queryRequestedSlowFillEvents = function (eventName) {
497
+ var _a, _b;
498
+ var _c;
499
+ var destinationChainId = _this.chainId;
500
+ var slowFillRequests = ((_a = queryResults[eventsToQuery.indexOf(eventName)]) !== null && _a !== void 0 ? _a : []).map(function (_event) {
501
+ var event = _event;
502
+ return __assign(__assign({}, event), { destinationChainId: destinationChainId, depositor: toAddressType(event.depositor, event.originChainId), recipient: toAddressType(event.recipient, destinationChainId), inputToken: toAddressType(event.inputToken, event.originChainId), outputToken: toAddressType(event.outputToken, destinationChainId), exclusiveRelayer: toAddressType(event.exclusiveRelayer, destinationChainId) });
503
+ });
504
+ for (var _i = 0, slowFillRequests_1 = slowFillRequests; _i < slowFillRequests_1.length; _i++) {
505
+ var slowFillRequest = slowFillRequests_1[_i];
506
+ var depositHash = getRelayEventKey(slowFillRequest);
507
+ // Sanity check that this event is not a duplicate.
508
+ if (_this.slowFillRequests[depositHash] !== undefined) {
509
+ duplicateEvents.push(slowFillRequest);
510
+ continue;
511
+ }
512
+ (_b = (_c = _this.slowFillRequests)[depositHash]) !== null && _b !== void 0 ? _b : (_c[depositHash] = slowFillRequest);
513
+ }
514
+ };
515
+ ["RequestedSlowFill"].forEach(function (event) {
516
+ if (eventsToQuery.includes(event)) {
517
+ queryRequestedSlowFillEvents(event);
518
+ }
519
+ });
520
+ queryFilledRelayEvents = function (eventName) {
521
+ var _a, _b;
522
+ var fillEvents = ((_a = queryResults[eventsToQuery.indexOf(eventName)]) !== null && _a !== void 0 ? _a : []).map(function (event) {
523
+ return unpackFillEvent(event, _this.chainId);
524
+ });
525
+ if (fillEvents.length > 0) {
526
+ _this.log("debug", "Using ".concat(fillEvents.length, " newly queried ").concat(eventName, " events for chain ").concat(_this.chainId), {
527
+ earliestEvent: fillEvents[0].blockNumber,
528
+ });
529
+ }
530
+ var _loop_2 = function (fill) {
531
+ // Sanity check that this event is not a duplicate.
532
+ var duplicateFill = (_b = _this.fills[fill.originChainId]) === null || _b === void 0 ? void 0 : _b.find(function (f) { return duplicateEvent(fill, f); });
533
+ if (duplicateFill) {
534
+ duplicateEvents.push(fill);
535
+ return "continue";
536
+ }
537
+ assign(_this.fills, [fill.originChainId], [fill]);
538
+ assign(_this.depositHashesToFills, [_this.getDepositHash(fill)], [fill]);
539
+ };
540
+ // @note The type assertions here suppress errors that might arise due to incomplete types. For now, verify via
541
+ // test that the types are complete. A broader change in strategy for safely unpacking events will be introduced.
542
+ for (var _i = 0, fillEvents_1 = fillEvents; _i < fillEvents_1.length; _i++) {
543
+ var fill = fillEvents_1[_i];
544
+ _loop_2(fill);
545
+ }
546
+ };
547
+ // Update observed fills with ingested event data.
548
+ ["FilledRelay"].forEach(function (event) {
549
+ if (eventsToQuery.includes(event)) {
550
+ queryFilledRelayEvents(event);
551
+ }
552
+ });
553
+ if (eventsToQuery.includes("EnabledDepositRoute")) {
554
+ enableDepositsEvents = queryResults[eventsToQuery.indexOf("EnabledDepositRoute")].map(function (_event) {
555
+ var event = _event;
556
+ return __assign(__assign({}, event), { originToken: toAddressType(event.originToken, CHAIN_IDs.MAINNET) });
557
+ });
558
+ for (_d = 0, enableDepositsEvents_1 = enableDepositsEvents; _d < enableDepositsEvents_1.length; _d++) {
559
+ event_3 = enableDepositsEvents_1[_d];
560
+ assign(this.depositRoutes, [event_3.originToken.toBytes32(), event_3.destinationChainId], event_3.enabled);
561
+ }
562
+ }
563
+ if (eventsToQuery.includes("RelayedRootBundle")) {
564
+ relayedRootBundleEvents = queryResults[eventsToQuery.indexOf("RelayedRootBundle")];
565
+ for (_e = 0, relayedRootBundleEvents_1 = relayedRootBundleEvents; _e < relayedRootBundleEvents_1.length; _e++) {
566
+ event_4 = relayedRootBundleEvents_1[_e];
567
+ this.rootBundleRelays.push(event_4);
568
+ }
569
+ }
570
+ if (eventsToQuery.includes("ExecutedRelayerRefundRoot")) {
571
+ refundEvents = queryResults[eventsToQuery.indexOf("ExecutedRelayerRefundRoot")];
572
+ for (_f = 0, refundEvents_1 = refundEvents; _f < refundEvents_1.length; _f++) {
573
+ _event = refundEvents_1[_f];
574
+ event_5 = _event;
575
+ this.relayerRefundExecutions.push(__assign(__assign({}, event_5), { l2TokenAddress: toAddressType(event_5.l2TokenAddress, this.chainId), refundAddresses: event_5.refundAddresses.map(function (addr) { return toAddressType(addr, _this.chainId); }) }));
576
+ }
577
+ }
578
+ if (eventsToQuery.includes("ClaimedRelayerRefund")) {
579
+ claimedRelayerRefundEvents = ((_j = queryResults[eventsToQuery.indexOf("ClaimedRelayerRefund")]) !== null && _j !== void 0 ? _j : []);
580
+ for (_g = 0, claimedRelayerRefundEvents_1 = claimedRelayerRefundEvents; _g < claimedRelayerRefundEvents_1.length; _g++) {
581
+ event_6 = claimedRelayerRefundEvents_1[_g];
582
+ this.claimedRelayerRefunds.push(__assign(__assign({}, event_6), { amount: event_6.amount || event_6.claimAmount }));
583
+ }
584
+ }
585
+ if (eventsToQuery.includes("BridgedToHubPool")) {
586
+ bridgedToHubPoolEvents = ((_k = queryResults[eventsToQuery.indexOf("BridgedToHubPool")]) !== null && _k !== void 0 ? _k : []);
587
+ for (_h = 0, bridgedToHubPoolEvents_1 = bridgedToHubPoolEvents; _h < bridgedToHubPoolEvents_1.length; _h++) {
588
+ event_7 = bridgedToHubPoolEvents_1[_h];
589
+ this.bridgedToHubPool.push(event_7);
590
+ }
591
+ }
592
+ if (duplicateEvents.length > 0) {
593
+ this.log("debug", "Duplicate events listed", {
594
+ duplicateEvents: duplicateEvents,
595
+ });
596
+ this.log("error", "Duplicate events detected, check debug logs");
597
+ }
598
+ // Next iteration should start off from where this one ended.
599
+ this.currentTime = currentTime;
600
+ this.latestHeightSearched = searchEndBlock;
601
+ this.firstHeightToSearch = searchEndBlock + 1;
602
+ this.eventSearchConfig.to = undefined; // Caller can re-set on subsequent updates if necessary
603
+ this.isUpdated = true;
604
+ this.log("debug", "SpokePool client for chain ".concat(this.chainId, " updated!"), {
605
+ nextFirstHeightToSearch: this.firstHeightToSearch,
606
+ });
607
+ return [2 /*return*/];
422
608
  }
423
- assign(this.depositHashes, [getRelayEventKey(deposit)], deposit);
424
- }
425
- };
426
- for (const event of ["FundsDeposited"]) {
427
- if (eventsToQuery.includes(event)) {
428
- await queryDepositEvents(event);
429
- }
430
- }
431
- // Performs indexing of a "speed up deposit"-like event.
432
- const querySpeedUpDepositEvents = (eventName) => {
433
- const speedUpEvents = (queryResults[eventsToQuery.indexOf(eventName)] ?? [])
434
- .map((_event) => {
435
- const event = _event;
436
- const invalid = [event.depositor, event.updatedRecipient].some((addr) => !EvmAddress.validate(ethersUtils.arrayify(addr)));
437
- if (invalid) {
438
- return;
439
- }
440
- return {
441
- ...event,
442
- depositor: EvmAddress.from(event.depositor),
443
- updatedRecipient: EvmAddress.from(event.updatedRecipient),
444
- };
445
- })
446
- .filter(isDefined);
447
- for (const event of speedUpEvents) {
448
- const speedUp = {
449
- ...event,
450
- originChainId: this.chainId,
451
- };
452
- assign(this.speedUps, [speedUp.depositor.toEvmAddress(), speedUp.depositId.toString()], [speedUp]);
453
- // Find deposit hash matching this speed up event and update the deposit data associated with the hash,
454
- // if the hash+data exists. nb. Relying on depositId alone can produce collisions on deterministic deposit IDs.
455
- const deposit = this.getDeposit(speedUp.depositId);
456
- // SpeedUp requests are only supported EVM -> EVM.
457
- if (isDefined(deposit) && chainIsEvm(deposit.destinationChainId) && deposit.depositor.eq(speedUp.depositor)) {
458
- // We can assume all deposits in this lookback window are loaded in-memory already so if the depositHash
459
- // is not mapped to a deposit, then we can throw away the speedup as it can't be applied to anything.
460
- const eventKey = getRelayEventKey(deposit);
461
- this.depositHashes[eventKey] = this.appendMaxSpeedUpSignatureToDeposit(deposit);
462
- }
463
- }
464
- };
465
- // Update deposits with speed up requests from depositor.
466
- ["RequestedSpeedUpDeposit"].forEach((event) => {
467
- if (eventsToQuery.includes(event)) {
468
- querySpeedUpDepositEvents(event);
469
- }
470
- });
471
- // Performs indexing of "requested slow fill"-like events.
472
- const queryRequestedSlowFillEvents = (eventName) => {
473
- const destinationChainId = this.chainId;
474
- const slowFillRequests = (queryResults[eventsToQuery.indexOf(eventName)] ?? []).map((_event) => {
475
- const event = _event;
476
- return {
477
- ...event,
478
- destinationChainId,
479
- depositor: toAddressType(event.depositor, event.originChainId),
480
- recipient: toAddressType(event.recipient, destinationChainId),
481
- inputToken: toAddressType(event.inputToken, event.originChainId),
482
- outputToken: toAddressType(event.outputToken, destinationChainId),
483
- exclusiveRelayer: toAddressType(event.exclusiveRelayer, destinationChainId),
484
- };
485
- });
486
- for (const slowFillRequest of slowFillRequests) {
487
- const depositHash = getRelayEventKey(slowFillRequest);
488
- // Sanity check that this event is not a duplicate.
489
- if (this.slowFillRequests[depositHash] !== undefined) {
490
- duplicateEvents.push(slowFillRequest);
491
- continue;
492
- }
493
- this.slowFillRequests[depositHash] ??= slowFillRequest;
494
- }
495
- };
496
- ["RequestedSlowFill"].forEach((event) => {
497
- if (eventsToQuery.includes(event)) {
498
- queryRequestedSlowFillEvents(event);
499
- }
500
- });
501
- // Performs indexing of filled relay-like events.
502
- const queryFilledRelayEvents = (eventName) => {
503
- const fillEvents = (queryResults[eventsToQuery.indexOf(eventName)] ?? []).map((event) => unpackFillEvent(event, this.chainId));
504
- if (fillEvents.length > 0) {
505
- this.log("debug", `Using ${fillEvents.length} newly queried ${eventName} events for chain ${this.chainId}`, {
506
- earliestEvent: fillEvents[0].blockNumber,
507
- });
508
- }
509
- // @note The type assertions here suppress errors that might arise due to incomplete types. For now, verify via
510
- // test that the types are complete. A broader change in strategy for safely unpacking events will be introduced.
511
- for (const fill of fillEvents) {
512
- // Sanity check that this event is not a duplicate.
513
- const duplicateFill = this.fills[fill.originChainId]?.find((f) => duplicateEvent(fill, f));
514
- if (duplicateFill) {
515
- duplicateEvents.push(fill);
516
- continue;
517
- }
518
- assign(this.fills, [fill.originChainId], [fill]);
519
- assign(this.depositHashesToFills, [this.getDepositHash(fill)], [fill]);
520
- }
521
- };
522
- // Update observed fills with ingested event data.
523
- ["FilledRelay"].forEach((event) => {
524
- if (eventsToQuery.includes(event)) {
525
- queryFilledRelayEvents(event);
526
- }
527
- });
528
- if (eventsToQuery.includes("EnabledDepositRoute")) {
529
- const enableDepositsEvents = queryResults[eventsToQuery.indexOf("EnabledDepositRoute")].map((_event) => {
530
- const event = _event;
531
- return {
532
- ...event,
533
- originToken: toAddressType(event.originToken, CHAIN_IDs.MAINNET),
534
- };
535
- });
536
- for (const event of enableDepositsEvents) {
537
- assign(this.depositRoutes, [event.originToken.toBytes32(), event.destinationChainId], event.enabled);
538
- }
539
- }
540
- if (eventsToQuery.includes("RelayedRootBundle")) {
541
- const relayedRootBundleEvents = queryResults[eventsToQuery.indexOf("RelayedRootBundle")];
542
- for (const event of relayedRootBundleEvents) {
543
- this.rootBundleRelays.push(event);
544
- }
545
- }
546
- if (eventsToQuery.includes("ExecutedRelayerRefundRoot")) {
547
- const refundEvents = queryResults[eventsToQuery.indexOf("ExecutedRelayerRefundRoot")];
548
- for (const _event of refundEvents) {
549
- const event = _event;
550
- this.relayerRefundExecutions.push({
551
- ...event,
552
- l2TokenAddress: toAddressType(event.l2TokenAddress, this.chainId),
553
- refundAddresses: event.refundAddresses.map((addr) => toAddressType(addr, this.chainId)),
554
- });
555
- }
556
- }
557
- if (eventsToQuery.includes("ClaimedRelayerRefund")) {
558
- const claimedRelayerRefundEvents = (queryResults[eventsToQuery.indexOf("ClaimedRelayerRefund")] ??
559
- []);
560
- for (const event of claimedRelayerRefundEvents) {
561
- this.claimedRelayerRefunds.push({
562
- ...event,
563
- amount: event.amount || event.claimAmount, // Note: This field is named differently in EVM and SVM
564
- });
565
- }
566
- }
567
- if (eventsToQuery.includes("BridgedToHubPool")) {
568
- const bridgedToHubPoolEvents = (queryResults[eventsToQuery.indexOf("BridgedToHubPool")] ??
569
- []);
570
- for (const event of bridgedToHubPoolEvents) {
571
- this.bridgedToHubPool.push(event);
572
- }
573
- }
574
- if (duplicateEvents.length > 0) {
575
- this.log("debug", "Duplicate events listed", {
576
- duplicateEvents,
577
609
  });
578
- this.log("error", "Duplicate events detected, check debug logs");
579
- }
580
- // Next iteration should start off from where this one ended.
581
- this.currentTime = currentTime;
582
- this.latestHeightSearched = searchEndBlock;
583
- this.firstHeightToSearch = searchEndBlock + 1;
584
- this.eventSearchConfig.to = undefined; // Caller can re-set on subsequent updates if necessary
585
- this.isUpdated = true;
586
- this.log("debug", `SpokePool client for chain ${this.chainId} updated!`, {
587
- nextFirstHeightToSearch: this.firstHeightToSearch,
588
610
  });
589
- }
611
+ };
590
612
  /**
591
613
  * Resolve a given timestamp to a block number on the HubPool chain via the HubPoolClient.
592
614
  * @param timestamp A single timestamp to be resolved via the HubPoolClient.
593
615
  * @returns The block number on the HubPool chain corresponding to the supplied timestamp.
594
616
  */
595
- getBlockNumber(timestamp) {
596
- return this.hubPoolClient?.getBlockNumber(timestamp) ?? Promise.resolve(MAX_BIG_INT.toNumber());
597
- }
617
+ SpokePoolClient.prototype.getBlockNumber = function (timestamp) {
618
+ var _a, _b;
619
+ return (_b = (_a = this.hubPoolClient) === null || _a === void 0 ? void 0 : _a.getBlockNumber(timestamp)) !== null && _b !== void 0 ? _b : Promise.resolve(MAX_BIG_INT.toNumber());
620
+ };
598
621
  /**
599
622
  * For an array of timestamps, resolve each timestamp to a block number on the HubPool chain via the HubPoolClient.
600
623
  * @param timestamps Array of timestamps to be resolved to a block number via the HubPoolClient.
601
624
  * @returns A mapping of quoteTimestamp -> HubPool block number.
602
625
  */
603
- getBlockNumbers(timestamps) {
604
- return (this.hubPoolClient?.getBlockNumbers(timestamps) ??
605
- Promise.resolve(Object.fromEntries(timestamps.map((timestamp) => [timestamp, MAX_BIG_INT.toNumber()]))));
606
- }
626
+ SpokePoolClient.prototype.getBlockNumbers = function (timestamps) {
627
+ var _a, _b;
628
+ return ((_b = (_a = this.hubPoolClient) === null || _a === void 0 ? void 0 : _a.getBlockNumbers(timestamps)) !== null && _b !== void 0 ? _b : Promise.resolve(Object.fromEntries(timestamps.map(function (timestamp) { return [timestamp, MAX_BIG_INT.toNumber()]; }))));
629
+ };
607
630
  /**
608
631
  * Retrieves the destination token for a given deposit.
609
632
  * @param deposit The deposit to retrieve the destination token for.
610
633
  * @returns The destination token.
611
634
  */
612
- getDestinationTokenForDeposit(deposit) {
635
+ SpokePoolClient.prototype.getDestinationTokenForDeposit = function (deposit) {
613
636
  if (!this.canResolveZeroAddressOutputToken(deposit)) {
614
637
  return toAddressType(ZERO_ADDRESS, CHAIN_IDs.MAINNET);
615
638
  }
616
639
  // L1 token should be resolved if we get here:
617
- const l1Token = this.hubPoolClient.getL1TokenForL2TokenAtBlock(deposit.inputToken, deposit.originChainId, deposit.quoteBlockNumber);
618
- const counterpartToken = this.hubPoolClient.getL2TokenForL1TokenAtBlock(l1Token, deposit.destinationChainId, deposit.quoteBlockNumber);
619
- return counterpartToken ?? toAddressType(ZERO_ADDRESS, CHAIN_IDs.MAINNET);
620
- }
640
+ var l1Token = this.hubPoolClient.getL1TokenForL2TokenAtBlock(deposit.inputToken, deposit.originChainId, deposit.quoteBlockNumber);
641
+ var counterpartToken = this.hubPoolClient.getL2TokenForL1TokenAtBlock(l1Token, deposit.destinationChainId, deposit.quoteBlockNumber);
642
+ return counterpartToken !== null && counterpartToken !== void 0 ? counterpartToken : toAddressType(ZERO_ADDRESS, CHAIN_IDs.MAINNET);
643
+ };
621
644
  /**
622
645
  * Performs a log for a specific level, message and data.
623
646
  * @param level The log level.
624
647
  * @param message The log message.
625
648
  * @param data Optional data to log.
626
649
  */
627
- log(level, message, data) {
628
- this.logger[level]({ at: "SpokePoolClient", chainId: this.chainId, message, ...data });
629
- }
650
+ SpokePoolClient.prototype.log = function (level, message, data) {
651
+ this.logger[level](__assign({ at: "SpokePoolClient", chainId: this.chainId, message: message }, data));
652
+ };
630
653
  /**
631
654
  * Retrieves the current time from the SpokePool contract.
632
655
  * @returns The current time, which will be 0 if there has been no update() yet.
633
656
  */
634
- getCurrentTime() {
657
+ SpokePoolClient.prototype.getCurrentTime = function () {
635
658
  return this.currentTime;
636
- }
659
+ };
637
660
  /**
638
661
  * Determines whether a deposit originates from a lite chain.
639
662
  * @param deposit The deposit to evaluate.
640
663
  * @returns True if the deposit originates from a lite chain, false otherwise. If the hub pool client is not defined,
641
664
  * this method will return false.
642
665
  */
643
- isOriginLiteChain(deposit) {
644
- return this.configStoreClient?.isChainLiteChainAtTimestamp(deposit.originChainId, deposit.quoteTimestamp) ?? false;
645
- }
666
+ SpokePoolClient.prototype.isOriginLiteChain = function (deposit) {
667
+ var _a, _b;
668
+ return (_b = (_a = this.configStoreClient) === null || _a === void 0 ? void 0 : _a.isChainLiteChainAtTimestamp(deposit.originChainId, deposit.quoteTimestamp)) !== null && _b !== void 0 ? _b : false;
669
+ };
646
670
  /**
647
671
  * Determines whether the deposit destination chain is a lite chain.
648
672
  * @param deposit The deposit to evaluate.
649
673
  * @returns True if the deposit is destined to a lite chain, false otherwise. If the hub pool client is not defined,
650
674
  * this method will return false.
651
675
  */
652
- isDestinationLiteChain(deposit) {
653
- return (this.configStoreClient?.isChainLiteChainAtTimestamp(deposit.destinationChainId, deposit.quoteTimestamp) ?? false);
654
- }
655
- }
676
+ SpokePoolClient.prototype.isDestinationLiteChain = function (deposit) {
677
+ var _a, _b;
678
+ return ((_b = (_a = this.configStoreClient) === null || _a === void 0 ? void 0 : _a.isChainLiteChainAtTimestamp(deposit.destinationChainId, deposit.quoteTimestamp)) !== null && _b !== void 0 ? _b : false);
679
+ };
680
+ return SpokePoolClient;
681
+ }(BaseAbstractClient));
682
+ export { SpokePoolClient };
656
683
  //# sourceMappingURL=SpokePoolClient.js.map