@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,3 +1,4 @@
1
+ import { __awaiter, __generator } from "tslib";
1
2
  import assert from "assert";
2
3
  import { createPublicClient, http, isAddress } from "viem";
3
4
  import { isDefined } from "../../../utils";
@@ -6,59 +7,70 @@ export var WAITFOR_FAIL;
6
7
  WAITFOR_FAIL[WAITFOR_FAIL["TIMEOUT"] = 0] = "TIMEOUT";
7
8
  })(WAITFOR_FAIL || (WAITFOR_FAIL = {}));
8
9
  export function waitFor(providerUrl, eventFilter) {
9
- const provider = createPublicClient({
10
+ var provider = createPublicClient({
10
11
  transport: http(providerUrl),
11
12
  });
12
- const { address } = eventFilter;
13
- const timeout = eventFilter.timeout * 1000;
13
+ var address = eventFilter.address;
14
+ var timeout = eventFilter.timeout * 1000;
14
15
  assert(!isDefined(address) || isAddress(address));
15
- return new Promise((resolve) => {
16
- const abortController = new AbortController();
17
- const onLogs = (logs) => {
18
- const txnRef = logs[0].transactionHash;
16
+ return new Promise(function (resolve) {
17
+ var abortController = new AbortController();
18
+ var onLogs = function (logs) {
19
+ var txnRef = logs[0].transactionHash;
19
20
  abortController.abort();
20
- resolve({ error: false, txnRef });
21
+ resolve({ error: false, txnRef: txnRef });
21
22
  };
22
- const timeoutId = setTimeout(() => {
23
+ var timeoutId = setTimeout(function () {
23
24
  abortController.abort();
24
25
  resolve({ error: true, reason: WAITFOR_FAIL.TIMEOUT });
25
26
  }, timeout);
26
- const unsub = provider.watchEvent({ address, onLogs });
27
- abortController.signal.addEventListener("abort", () => {
27
+ var unsub = provider.watchEvent({ address: address, onLogs: onLogs });
28
+ abortController.signal.addEventListener("abort", function () {
28
29
  clearTimeout(timeoutId);
29
30
  unsub();
30
31
  });
31
32
  });
32
33
  }
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}`);
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
+ });
54
66
  }
55
67
  // Only run the CLI entry point in Node.js environments
56
68
  if (typeof window === "undefined" && require.main === module) {
57
69
  run()
58
- .then(() => {
70
+ .then(function () {
59
71
  process.exitCode = 0;
60
72
  })
61
- .catch(() => {
73
+ .catch(function () {
62
74
  console.error("Process errored");
63
75
  process.exitCode = 9;
64
76
  });
@@ -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,3 +1,5 @@
1
+ var _a;
2
+ import { __awaiter, __extends, __generator } from "tslib";
1
3
  import assert from "assert";
2
4
  import { clamp, sortedIndexBy } from "lodash";
3
5
  import { BlockFinder } from "../../utils/BlockFinder";
@@ -5,10 +7,10 @@ import { isDefined } from "../../utils/TypeGuards";
5
7
  import { getCurrentTime } from "../../utils/TimeUtils";
6
8
  import { CHAIN_IDs } from "../../constants";
7
9
  import { getNearestSlotTime } from "./utils";
8
- const now = getCurrentTime();
9
- const averageBlockTimes = {
10
- [CHAIN_IDs.SOLANA]: { average: 0.4, timestamp: now, blockRange: 1 },
11
- };
10
+ var now = getCurrentTime();
11
+ var averageBlockTimes = (_a = {},
12
+ _a[CHAIN_IDs.SOLANA] = { average: 0.4, timestamp: now, blockRange: 1 },
13
+ _a);
12
14
  /**
13
15
  * @description Compute the average slot time over a slot range.
14
16
  * @dev Solana slots are all defined to be ~400ms away from each other += a small deviation, so we can hardcode this.
@@ -18,138 +20,184 @@ export function averageBlockTime() {
18
20
  // @todo This may need to be expanded to work without assuming that chainId = CHAIN_IDs.SOLANA.
19
21
  return averageBlockTimes[CHAIN_IDs.SOLANA];
20
22
  }
21
- function estimateBlocksElapsed(seconds, cushionPercentage = 0.0, _provider) {
22
- const cushionMultiplier = cushionPercentage + 1.0;
23
- const { average } = averageBlockTime();
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;
24
27
  return Math.floor((seconds * cushionMultiplier) / average);
25
28
  }
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;
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;
35
38
  }
36
39
  /**
37
40
  * @notice Gets the latest slot whose timestamp is <= the provided timestamp.
38
41
  * @param number Timestamp timestamp to search.
39
42
  * @param hints Optional low and high slot to bound the search space.
40
43
  */
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
- }
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
+ };
80
99
  /**
81
100
  * For a given slot, resolve the current or preceding timestamp.
82
101
  * Not all Solana slots have an associated block timestamp; in case of no block at the requested slot, the most
83
102
  * immediate preceding block timestamp will be used. Note that this may return an eventually-incorrect timestamp for
84
103
  * future slots.
85
104
  */
86
- getBlockTime(slot) {
87
- const opts = isDefined(slot) ? { slot } : undefined;
105
+ SVMBlockFinder.prototype.getBlockTime = function (slot) {
106
+ var opts = isDefined(slot) ? { slot: slot } : undefined;
88
107
  return getNearestSlotTime(this.provider, opts, this.logger);
89
- }
108
+ };
90
109
  // Grabs the most recent slot and caches it.
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
- }
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
+ };
103
131
  // Grabs the slot for a particular number and caches it.
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
- }
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
+ };
124
161
  // Return the latest slot, between startSlot and endSlot, whose timestamp is <= timestamp.
125
162
  // Effectively, this is an interpolation search algorithm to minimize slot requests.
126
163
  // Note: startSlot and endSlot _must_ be different slots.
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
- }
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 };
155
203
  //# 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":";;AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,WAAW,EAA4D,MAAM,yBAAyB,CAAC;AAChH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAK7C,IAAM,GAAG,GAAG,cAAc,EAAE,CAAC;AAC7B,IAAM,iBAAiB;IACrB,GAAC,SAAS,CAAC,MAAM,IAAG,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE;OACpE,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC9B,+FAA+F;IAC/F,OAAO,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAe,EAAE,iBAAuB,EAAE,SAAsB;IAA/C,kCAAA,EAAA,uBAAuB;IACrE,IAAM,iBAAiB,GAAG,iBAAiB,GAAG,GAAG,CAAC;IAC1C,IAAA,OAAO,GAAK,gBAAgB,EAAE,QAAvB,CAAwB;IACvC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,iBAAiB,CAAC,GAAG,OAAO,CAAC,CAAC;AAC7D,CAAC;AAED;IAAoC,kCAAqB;IACvD,wBACmB,QAAqB,EACrB,MAAuB,EACvB,MAAuB;QADvB,uBAAA,EAAA,WAAuB;QAGxC,YAAA,MAAK,WAAE,SAAC;QAJS,cAAQ,GAAR,QAAQ,CAAa;QACrB,YAAM,GAAN,MAAM,CAAiB;QACvB,YAAM,GAAN,MAAM,CAAiB;;IAG1C,CAAC;IAED;;;;OAIG;IACU,6CAAoB,GAAjC;4DAAkC,SAA0B,EAAE,KAA4B;;;YAA5B,sBAAA,EAAA,UAA4B;;;;wBACxF,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;wBAC9B,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,EAAE,4BAA4B,CAAC,CAAC;6BAEhF,CAAA,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,SAAS,CAAA,EAArF,wBAAqF;wBACzE,qBAAM,IAAI,CAAC,cAAc,EAAE,EAAA;;wBAAnC,KAAK,GAAG,SAA2B;wBACzC,IAAI,SAAS,IAAI,KAAK,CAAC,SAAS;4BAAE,sBAAO,KAAK,EAAC;;;oBAGjD,uDAAuD;oBACvD,4EAA4E;oBAC5E,qBAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;6BACjB,MAAM,CAAC,SAAS,CAAC;6BACjB,GAAG,CAAC,UAAC,WAAW,IAAK,OAAA,KAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAA1B,CAA0B,CAAC,CACpD,EAAA;;wBAND,uDAAuD;wBACvD,4EAA4E;wBAC5E,SAIC,CAAC;6BAGE,CAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,SAAS,CAAA,EAApC,wBAAoC;wBAChC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;wBAK9B,OAAO,GAAG,CAAC,CAAC;wBACZ,iBAAiB,GAAG,IAAI,CAAC,GAAG;wBAChC,8FAA8F;wBAC9F,qBAAqB,CAAC,YAAY,CAAC,SAAS,GAAG,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,EACjF,CAAC,CACF,CAAC;wBAGO,UAAU,GAAG,CAAC;;;wBACf,QAAQ,GAAG,UAAU,GAAG,iBAAiB,CAAC;wBAC1C,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;wBAClD,qBAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAA;;wBAAxC,KAAK,GAAG,SAAgC;wBAC9C,IAAI,KAAK,CAAC,SAAS,IAAI,SAAS;4BAAE,wBAAM,CAAC,0BAA0B;wBACnE,MAAM,CAAC,WAAW,GAAG,CAAC,EAAE,6BAA6B,CAAC,CAAC;;;wBAL9B,UAAU,EAAE,CAAA;;;wBAUnC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,WAAA,EAAW,EAAE,WAAW,CAAC,CAAC;wBAC9E,sBAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,EAAC;;;;KAC9E;IAED;;;;;OAKG;IACK,qCAAY,GAApB,UAAqB,IAAa;QAChC,IAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,MAAA,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACpD,OAAO,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9D,CAAC;IAED,4CAA4C;IAC9B,uCAAc,GAA5B;;;;;;4BAC8B,qBAAM,IAAI,CAAC,YAAY,EAAE,EAAA;;wBAA/C,KAAsB,SAAyB,EAA7C,IAAI,UAAA,EAAE,SAAS,eAAA;wBAGjB,KAAK,GAAa;4BACtB,SAAS,WAAA;4BACT,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;yBACrB,CAAC;wBACI,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;wBAC1D,IAAI,CAAA,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0CAAE,MAAM,MAAK,KAAK,CAAC,MAAM;4BAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;wBACrF,sBAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC;;;;KAC3B;IAED,wDAAwD;IAC1C,iCAAQ,GAAtB,UAAuB,MAAc;;;;;;;wBAC/B,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,QAAA,EAAW,EAAE,QAAQ,CAAC,CAAC;wBACtE,IAAI,CAAA,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0CAAE,MAAM,MAAK,MAAM;4BAAE,sBAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC,CAAC,wCAAwC;wBAG3E,qBAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAA;;wBAApE,KAA6B,SAAuC,EAA5D,KAAK,UAAA,EAAE,SAAS,eAAA;wBACxB,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;wBAErB,KAAK,GAAa;4BACtB,SAAS,WAAA;4BACT,MAAM,EAAE,IAAI;yBACb,CAAC;wBAEF,8FAA8F;wBAC9F,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAW,EAAE,QAAQ,CAAC,CAAC;wBAExE,iDAAiD;wBACjD,IAAI,CAAA,MAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0CAAE,MAAM,MAAK,IAAI;4BAAE,sBAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC;wBACnE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,4BAA4B;wBACjE,sBAAO,KAAK,EAAC;;;;KACd;IAED,0FAA0F;IAC1F,oFAAoF;IACpF,yDAAyD;IAC3C,kCAAS,GAAvB,UAAwB,UAAoB,EAAE,QAAkB,EAAE,SAAiB;;;;;;wBAC3E,KAAyB,CAAC,UAAU,EAAE,QAAQ,CAAC,EAA9C,UAAU,QAAA,EAAE,QAAQ,QAAA,CAA2B;wBACtD,8GAA8G;wBAC9G,aAAa;wBACb,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS;4BAAE,sBAAO,QAAQ,EAAC;wBAEtD,gHAAgH;wBAChH,8CAA8C;wBAC9C,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC;4BAAE,sBAAO,UAAU,EAAC;wBAEjE,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,kCAAkC,CAAC,CAAC;wBAClF,MAAM,CACJ,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,SAAS,GAAG,UAAU,CAAC,SAAS,EAClE,+CAA+C,CAChD,CAAC;wBAGI,mBAAmB,GAAG,QAAQ,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;wBAChE,kBAAkB,GAAG,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;wBACzD,eAAe,GAAG,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,mBAAmB,CAAC;wBAC3E,cAAc,GAAG,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,kBAAkB,CAAC,CAAC;wBAG3E,qBAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAA;;wBAAjG,QAAQ,GAAG,SAAsF;wBAEvG,0GAA0G;wBAC1G,IAAI,QAAQ,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC;4BACnC,sBAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAC;wBACvD,CAAC;6BAAM,CAAC;4BACN,sBAAO,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAC;wBACzD,CAAC;;;;;KACF;IACH,qBAAC;AAAD,CAAC,AA/ID,CAAoC,WAAW,GA+I9C"}