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