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