@across-protocol/sdk 4.3.110 → 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 (558) 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 -29
  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 -103
  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 -114
  270. package/dist/cjs/utils/Multicall.js.map +1 -1
  271. package/dist/cjs/utils/NetworkUtils.js +12 -21
  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 -46
  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 -95
  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 -109
  535. package/dist/esm/utils/Multicall.js.map +1 -1
  536. package/dist/esm/utils/NetworkUtils.js +12 -21
  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/package.json +2 -2
@@ -1,4 +1,3 @@
1
- import { __awaiter, __generator } from "tslib";
2
1
  import assert from "assert";
3
2
  import { createPublicClient, http, isAddress } from "viem";
4
3
  import { isDefined } from "../../../utils";
@@ -7,70 +6,59 @@ export var WAITFOR_FAIL;
7
6
  WAITFOR_FAIL[WAITFOR_FAIL["TIMEOUT"] = 0] = "TIMEOUT";
8
7
  })(WAITFOR_FAIL || (WAITFOR_FAIL = {}));
9
8
  export function waitFor(providerUrl, eventFilter) {
10
- var provider = createPublicClient({
9
+ const provider = createPublicClient({
11
10
  transport: http(providerUrl),
12
11
  });
13
- var address = eventFilter.address;
14
- var timeout = eventFilter.timeout * 1000;
12
+ const { address } = eventFilter;
13
+ const timeout = eventFilter.timeout * 1000;
15
14
  assert(!isDefined(address) || isAddress(address));
16
- return new Promise(function (resolve) {
17
- var abortController = new AbortController();
18
- var onLogs = function (logs) {
19
- var txnRef = logs[0].transactionHash;
15
+ return new Promise((resolve) => {
16
+ const abortController = new AbortController();
17
+ const onLogs = (logs) => {
18
+ const txnRef = logs[0].transactionHash;
20
19
  abortController.abort();
21
- resolve({ error: false, txnRef: txnRef });
20
+ resolve({ error: false, txnRef });
22
21
  };
23
- var timeoutId = setTimeout(function () {
22
+ const timeoutId = setTimeout(() => {
24
23
  abortController.abort();
25
24
  resolve({ error: true, reason: WAITFOR_FAIL.TIMEOUT });
26
25
  }, timeout);
27
- var unsub = provider.watchEvent({ address: address, onLogs: onLogs });
28
- abortController.signal.addEventListener("abort", function () {
26
+ const unsub = provider.watchEvent({ address, onLogs });
27
+ abortController.signal.addEventListener("abort", () => {
29
28
  clearTimeout(timeoutId);
30
29
  unsub();
31
30
  });
32
31
  });
33
32
  }
34
- function run() {
35
- return __awaiter(this, void 0, void 0, function () {
36
- var url, event, filter, result;
37
- return __generator(this, function (_a) {
38
- switch (_a.label) {
39
- case 0:
40
- url = process.env.RPC_PROVIDER;
41
- assert(isDefined(url), "No mainnet RPC_PROVIDER defined");
42
- event = "RootBundleExecuted(uint256,uint256,uint256,address[],uint256[],int256[],int256[],address)";
43
- filter = {
44
- address: "0xc186fA914353c44b2E33eBE05f21846F1048bEda",
45
- event: event,
46
- timeout: 5400,
47
- };
48
- return [4 /*yield*/, waitFor(url, filter)];
49
- case 1:
50
- result = _a.sent();
51
- if (result.error) {
52
- switch (result.reason) {
53
- case WAITFOR_FAIL.TIMEOUT:
54
- console.log("Error: timed out waiting for event");
55
- break;
56
- default:
57
- console.log("Unknown error (".concat(result.reason, ")"));
58
- }
59
- throw Error;
60
- }
61
- console.log("Event transaction hash: ".concat(result.txnRef));
62
- return [2 /*return*/];
63
- }
64
- });
65
- });
33
+ async function run() {
34
+ const { RPC_PROVIDER: url } = process.env;
35
+ assert(isDefined(url), "No mainnet RPC_PROVIDER defined");
36
+ const event = "RootBundleExecuted(uint256,uint256,uint256,address[],uint256[],int256[],int256[],address)";
37
+ const filter = {
38
+ address: "0xc186fA914353c44b2E33eBE05f21846F1048bEda",
39
+ event,
40
+ timeout: 5400,
41
+ };
42
+ const result = await waitFor(url, filter);
43
+ if (result.error) {
44
+ switch (result.reason) {
45
+ case WAITFOR_FAIL.TIMEOUT:
46
+ console.log("Error: timed out waiting for event");
47
+ break;
48
+ default:
49
+ console.log(`Unknown error (${result.reason})`);
50
+ }
51
+ throw Error;
52
+ }
53
+ console.log(`Event transaction hash: ${result.txnRef}`);
66
54
  }
67
55
  // Only run the CLI entry point in Node.js environments
68
56
  if (typeof window === "undefined" && require.main === module) {
69
57
  run()
70
- .then(function () {
58
+ .then(() => {
71
59
  process.exitCode = 0;
72
60
  })
73
- .catch(function () {
61
+ .catch(() => {
74
62
  console.error("Process errored");
75
63
  process.exitCode = 9;
76
64
  });
@@ -1 +1 @@
1
- {"version":3,"file":"wait.js","sourceRoot":"","sources":["../../../../../src/arch/evm/utils/wait.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wait.js","sourceRoot":"","sources":["../../../../../src/arch/evm/utils/wait.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,3 @@
1
- var _a;
2
- import { __awaiter, __extends, __generator } from "tslib";
3
1
  import assert from "assert";
4
2
  import { clamp, sortedIndexBy } from "lodash";
5
3
  import { BlockFinder } from "../../utils/BlockFinder";
@@ -7,10 +5,10 @@ import { isDefined } from "../../utils/TypeGuards";
7
5
  import { getCurrentTime } from "../../utils/TimeUtils";
8
6
  import { CHAIN_IDs } from "../../constants";
9
7
  import { getNearestSlotTime } from "./utils";
10
- var now = getCurrentTime();
11
- var averageBlockTimes = (_a = {},
12
- _a[CHAIN_IDs.SOLANA] = { average: 0.4, timestamp: now, blockRange: 1 },
13
- _a);
8
+ const now = getCurrentTime();
9
+ const averageBlockTimes = {
10
+ [CHAIN_IDs.SOLANA]: { average: 0.4, timestamp: now, blockRange: 1 },
11
+ };
14
12
  /**
15
13
  * @description Compute the average slot time over a slot range.
16
14
  * @dev Solana slots are all defined to be ~400ms away from each other += a small deviation, so we can hardcode this.
@@ -20,184 +18,138 @@ export function averageBlockTime() {
20
18
  // @todo This may need to be expanded to work without assuming that chainId = CHAIN_IDs.SOLANA.
21
19
  return averageBlockTimes[CHAIN_IDs.SOLANA];
22
20
  }
23
- function estimateBlocksElapsed(seconds, cushionPercentage, _provider) {
24
- if (cushionPercentage === void 0) { cushionPercentage = 0.0; }
25
- var cushionMultiplier = cushionPercentage + 1.0;
26
- var average = averageBlockTime().average;
21
+ function estimateBlocksElapsed(seconds, cushionPercentage = 0.0, _provider) {
22
+ const cushionMultiplier = cushionPercentage + 1.0;
23
+ const { average } = averageBlockTime();
27
24
  return Math.floor((seconds * cushionMultiplier) / average);
28
25
  }
29
- var SVMBlockFinder = /** @class */ (function (_super) {
30
- __extends(SVMBlockFinder, _super);
31
- function SVMBlockFinder(provider, blocks, logger) {
32
- if (blocks === void 0) { blocks = []; }
33
- var _this = _super.call(this) || this;
34
- _this.provider = provider;
35
- _this.blocks = blocks;
36
- _this.logger = logger;
37
- return _this;
26
+ export class SVMBlockFinder extends BlockFinder {
27
+ provider;
28
+ blocks;
29
+ logger;
30
+ constructor(provider, blocks = [], logger) {
31
+ super();
32
+ this.provider = provider;
33
+ this.blocks = blocks;
34
+ this.logger = logger;
38
35
  }
39
36
  /**
40
37
  * @notice Gets the latest slot whose timestamp is <= the provided timestamp.
41
38
  * @param number Timestamp timestamp to search.
42
39
  * @param hints Optional low and high slot to bound the search space.
43
40
  */
44
- SVMBlockFinder.prototype.getBlockForTimestamp = function (timestamp_1) {
45
- return __awaiter(this, arguments, void 0, function (timestamp, hints) {
46
- var block, initialBlock, cushion, incrementDistance, multiplier, distance, blockNumber, block, index;
47
- var _this = this;
48
- if (hints === void 0) { hints = {}; }
49
- return __generator(this, function (_a) {
50
- switch (_a.label) {
51
- case 0:
52
- timestamp = Number(timestamp);
53
- assert(timestamp !== undefined && timestamp !== null, "timestamp must be provided");
54
- if (!(this.blocks.length === 0 || this.blocks[this.blocks.length - 1].timestamp < timestamp)) return [3 /*break*/, 2];
55
- return [4 /*yield*/, this.getLatestBlock()];
56
- case 1:
57
- block = _a.sent();
58
- if (timestamp >= block.timestamp)
59
- return [2 /*return*/, block];
60
- _a.label = 2;
61
- case 2:
62
- // Prime the BlockFinder cache with any supplied hints.
63
- // If the hint is accurate, then this will bypass the subsequent estimation.
64
- return [4 /*yield*/, Promise.all(Object.values(hints)
65
- .filter(isDefined)
66
- .map(function (blockNumber) { return _this.getBlock(blockNumber); }))];
67
- case 3:
68
- // Prime the BlockFinder cache with any supplied hints.
69
- // If the hint is accurate, then this will bypass the subsequent estimation.
70
- _a.sent();
71
- if (!(this.blocks[0].timestamp > timestamp)) return [3 /*break*/, 7];
72
- initialBlock = this.blocks[0];
73
- cushion = 1;
74
- incrementDistance = Math.max(
75
- // Ensure the increment slot distance is _at least_ a single slot to prevent an infinite loop.
76
- estimateBlocksElapsed(initialBlock.timestamp - timestamp, cushion, this.provider), 1);
77
- multiplier = 1;
78
- _a.label = 4;
79
- case 4:
80
- distance = multiplier * incrementDistance;
81
- blockNumber = Math.max(0, initialBlock.number - distance);
82
- return [4 /*yield*/, this.getBlock(blockNumber)];
83
- case 5:
84
- block = _a.sent();
85
- if (block.timestamp <= timestamp)
86
- return [3 /*break*/, 7]; // Found an earlier block.
87
- assert(blockNumber > 0, "timestamp is before block 0");
88
- _a.label = 6;
89
- case 6:
90
- multiplier++;
91
- return [3 /*break*/, 4];
92
- case 7:
93
- index = sortedIndexBy(this.blocks, { timestamp: timestamp }, "timestamp");
94
- return [2 /*return*/, this.findBlock(this.blocks[index - 1], this.blocks[index], timestamp)];
95
- }
96
- });
97
- });
98
- };
41
+ async getBlockForTimestamp(timestamp, hints = {}) {
42
+ timestamp = Number(timestamp);
43
+ assert(timestamp !== undefined && timestamp !== null, "timestamp must be provided");
44
+ // If the last slot we have stored is too early, grab the latest slot.
45
+ if (this.blocks.length === 0 || this.blocks[this.blocks.length - 1].timestamp < timestamp) {
46
+ const block = await this.getLatestBlock();
47
+ if (timestamp >= block.timestamp)
48
+ return block;
49
+ }
50
+ // Prime the BlockFinder cache with any supplied hints.
51
+ // If the hint is accurate, then this will bypass the subsequent estimation.
52
+ await Promise.all(Object.values(hints)
53
+ .filter(isDefined)
54
+ .map((blockNumber) => this.getBlock(blockNumber)));
55
+ // Check the first slot. If it's greater than our timestamp, we need to find an earlier slot.
56
+ if (this.blocks[0].timestamp > timestamp) {
57
+ const initialBlock = this.blocks[0];
58
+ // We use a 2x cushion to reduce the number of iterations in the following loop and increase the chance
59
+ // that the first slot we find sets a floor for the target timestamp. The loop converges on the correct slot
60
+ // slower than the following incremental search performed by `findBlock`, so we want to minimize the number of
61
+ // loop iterations in favor of searching more slots over the `findBlock` search.
62
+ const cushion = 1;
63
+ const incrementDistance = Math.max(
64
+ // Ensure the increment slot distance is _at least_ a single slot to prevent an infinite loop.
65
+ estimateBlocksElapsed(initialBlock.timestamp - timestamp, cushion, this.provider), 1);
66
+ // Search backwards by a constant increment until we find a slot before the timestamp or hit slot 0.
67
+ for (let multiplier = 1;; multiplier++) {
68
+ const distance = multiplier * incrementDistance;
69
+ const blockNumber = Math.max(0, initialBlock.number - distance);
70
+ const block = await this.getBlock(blockNumber);
71
+ if (block.timestamp <= timestamp)
72
+ break; // Found an earlier block.
73
+ assert(blockNumber > 0, "timestamp is before block 0");
74
+ }
75
+ }
76
+ // Find the index where the slot would be inserted and use that as the end slot (since it is >= the timestamp).
77
+ const index = sortedIndexBy(this.blocks, { timestamp }, "timestamp");
78
+ return this.findBlock(this.blocks[index - 1], this.blocks[index], timestamp);
79
+ }
99
80
  /**
100
81
  * For a given slot, resolve the current or preceding timestamp.
101
82
  * Not all Solana slots have an associated block timestamp; in case of no block at the requested slot, the most
102
83
  * immediate preceding block timestamp will be used. Note that this may return an eventually-incorrect timestamp for
103
84
  * future slots.
104
85
  */
105
- SVMBlockFinder.prototype.getBlockTime = function (slot) {
106
- var opts = isDefined(slot) ? { slot: slot } : undefined;
86
+ getBlockTime(slot) {
87
+ const opts = isDefined(slot) ? { slot } : undefined;
107
88
  return getNearestSlotTime(this.provider, opts, this.logger);
108
- };
89
+ }
109
90
  // Grabs the most recent slot and caches it.
110
- SVMBlockFinder.prototype.getLatestBlock = function () {
111
- return __awaiter(this, void 0, void 0, function () {
112
- var _a, slot, timestamp, block, index;
113
- var _b;
114
- return __generator(this, function (_c) {
115
- switch (_c.label) {
116
- case 0: return [4 /*yield*/, this.getBlockTime()];
117
- case 1:
118
- _a = _c.sent(), slot = _a.slot, timestamp = _a.timestamp;
119
- block = {
120
- timestamp: timestamp,
121
- number: Number(slot),
122
- };
123
- index = sortedIndexBy(this.blocks, block, "number");
124
- if (((_b = this.blocks[index]) === null || _b === void 0 ? void 0 : _b.number) !== block.number)
125
- this.blocks.splice(index, 0, block);
126
- return [2 /*return*/, this.blocks[index]];
127
- }
128
- });
129
- });
130
- };
91
+ async getLatestBlock() {
92
+ const { slot, timestamp } = await this.getBlockTime();
93
+ // Cast the return type to an SVMBlock.
94
+ const block = {
95
+ timestamp,
96
+ number: Number(slot),
97
+ };
98
+ const index = sortedIndexBy(this.blocks, block, "number");
99
+ if (this.blocks[index]?.number !== block.number)
100
+ this.blocks.splice(index, 0, block);
101
+ return this.blocks[index];
102
+ }
131
103
  // Grabs the slot for a particular number and caches it.
132
- SVMBlockFinder.prototype.getBlock = function (number) {
133
- return __awaiter(this, void 0, void 0, function () {
134
- var index, _a, _slot, timestamp, slot, block;
135
- var _b, _c;
136
- return __generator(this, function (_d) {
137
- switch (_d.label) {
138
- case 0:
139
- index = sortedIndexBy(this.blocks, { number: number }, "number");
140
- if (((_b = this.blocks[index]) === null || _b === void 0 ? void 0 : _b.number) === number)
141
- return [2 /*return*/, this.blocks[index]]; // Return early if block already exists.
142
- return [4 /*yield*/, this.getBlockTime(BigInt(number))];
143
- case 1:
144
- _a = _d.sent(), _slot = _a.slot, timestamp = _a.timestamp;
145
- slot = Number(_slot);
146
- block = {
147
- timestamp: timestamp,
148
- number: slot,
149
- };
150
- // Recompute the index after the async call since the state of this.blocks could have changed!
151
- index = sortedIndexBy(this.blocks, { number: slot }, "number");
152
- // Rerun this check to avoid duplicate insertion.
153
- if (((_c = this.blocks[index]) === null || _c === void 0 ? void 0 : _c.number) === slot)
154
- return [2 /*return*/, this.blocks[index]];
155
- this.blocks.splice(index, 0, block); // A simple insert at index.
156
- return [2 /*return*/, block];
157
- }
158
- });
159
- });
160
- };
104
+ async getBlock(number) {
105
+ let index = sortedIndexBy(this.blocks, { number }, "number");
106
+ if (this.blocks[index]?.number === number)
107
+ return this.blocks[index]; // Return early if block already exists.
108
+ // The resolved slot may be rotated backwards if no timestamp exists at the requested slot.
109
+ const { slot: _slot, timestamp } = await this.getBlockTime(BigInt(number));
110
+ const slot = Number(_slot);
111
+ // Cast the return type to an SVMBlock.
112
+ const block = {
113
+ timestamp,
114
+ number: slot,
115
+ };
116
+ // Recompute the index after the async call since the state of this.blocks could have changed!
117
+ index = sortedIndexBy(this.blocks, { number: slot }, "number");
118
+ // Rerun this check to avoid duplicate insertion.
119
+ if (this.blocks[index]?.number === slot)
120
+ return this.blocks[index];
121
+ this.blocks.splice(index, 0, block); // A simple insert at index.
122
+ return block;
123
+ }
161
124
  // Return the latest slot, between startSlot and endSlot, whose timestamp is <= timestamp.
162
125
  // Effectively, this is an interpolation search algorithm to minimize slot requests.
163
126
  // Note: startSlot and endSlot _must_ be different slots.
164
- SVMBlockFinder.prototype.findBlock = function (_startSlot, _endSlot, timestamp) {
165
- return __awaiter(this, void 0, void 0, function () {
166
- var _a, startBlock, endBlock, totalTimeDifference, totalBlockDistance, blockPercentile, estimatedBlock, newBlock;
167
- return __generator(this, function (_b) {
168
- switch (_b.label) {
169
- case 0:
170
- _a = [_startSlot, _endSlot], startBlock = _a[0], endBlock = _a[1];
171
- // In the case of equality, the endBlock is expected to be passed as the one whose timestamp === the requested
172
- // timestamp.
173
- if (endBlock.timestamp === timestamp)
174
- return [2 /*return*/, endBlock];
175
- // If there's no equality, but the blocks are adjacent, return the startBlock, since we want the returned slot's
176
- // timestamp to be <= the requested timestamp.
177
- if (endBlock.number === startBlock.number + 1)
178
- return [2 /*return*/, startBlock];
179
- assert(endBlock.number !== startBlock.number, "startBlock cannot equal endBlock");
180
- assert(timestamp < endBlock.timestamp && timestamp > startBlock.timestamp, "timestamp not in between start and end blocks");
181
- totalTimeDifference = endBlock.timestamp - startBlock.timestamp;
182
- totalBlockDistance = endBlock.number - startBlock.number;
183
- blockPercentile = (timestamp - startBlock.timestamp) / totalTimeDifference;
184
- estimatedBlock = startBlock.number + Math.round(blockPercentile * totalBlockDistance);
185
- return [4 /*yield*/, this.getBlock(clamp(estimatedBlock, startBlock.number + 1, endBlock.number - 1))];
186
- case 1:
187
- newBlock = _b.sent();
188
- // Depending on whether the new slot is below or above the timestamp, narrow the search space accordingly.
189
- if (newBlock.timestamp < timestamp) {
190
- return [2 /*return*/, this.findBlock(newBlock, endBlock, timestamp)];
191
- }
192
- else {
193
- return [2 /*return*/, this.findBlock(startBlock, newBlock, timestamp)];
194
- }
195
- return [2 /*return*/];
196
- }
197
- });
198
- });
199
- };
200
- return SVMBlockFinder;
201
- }(BlockFinder));
202
- export { SVMBlockFinder };
127
+ async findBlock(_startSlot, _endSlot, timestamp) {
128
+ const [startBlock, endBlock] = [_startSlot, _endSlot];
129
+ // In the case of equality, the endBlock is expected to be passed as the one whose timestamp === the requested
130
+ // timestamp.
131
+ if (endBlock.timestamp === timestamp)
132
+ return endBlock;
133
+ // If there's no equality, but the blocks are adjacent, return the startBlock, since we want the returned slot's
134
+ // timestamp to be <= the requested timestamp.
135
+ if (endBlock.number === startBlock.number + 1)
136
+ return startBlock;
137
+ assert(endBlock.number !== startBlock.number, "startBlock cannot equal endBlock");
138
+ assert(timestamp < endBlock.timestamp && timestamp > startBlock.timestamp, "timestamp not in between start and end blocks");
139
+ // Interpolating the timestamp we're searching for to slot numbers.
140
+ const totalTimeDifference = endBlock.timestamp - startBlock.timestamp;
141
+ const totalBlockDistance = endBlock.number - startBlock.number;
142
+ const blockPercentile = (timestamp - startBlock.timestamp) / totalTimeDifference;
143
+ const estimatedBlock = startBlock.number + Math.round(blockPercentile * totalBlockDistance);
144
+ // Clamp ensures the estimated slot is strictly greater than the start slot and strictly less than the end slot.
145
+ const newBlock = await this.getBlock(clamp(estimatedBlock, startBlock.number + 1, endBlock.number - 1));
146
+ // Depending on whether the new slot is below or above the timestamp, narrow the search space accordingly.
147
+ if (newBlock.timestamp < timestamp) {
148
+ return this.findBlock(newBlock, endBlock, timestamp);
149
+ }
150
+ else {
151
+ return this.findBlock(startBlock, newBlock, timestamp);
152
+ }
153
+ }
154
+ }
203
155
  //# sourceMappingURL=BlockUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BlockUtils.js","sourceRoot":"","sources":["../../../../src/arch/svm/BlockUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BlockUtils.js","sourceRoot":"","sources":["../../../../src/arch/svm/BlockUtils.ts"],"names":[],"mappings":"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"}