@across-protocol/sdk 4.1.63 → 4.2.0
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/arch/evm/BlockUtils.d.ts +15 -0
- package/dist/cjs/arch/evm/BlockUtils.js +218 -0
- package/dist/cjs/arch/evm/BlockUtils.js.map +1 -0
- package/dist/cjs/arch/evm/SpokeUtils.d.ts +1 -1
- package/dist/cjs/arch/evm/SpokeUtils.js +6 -5
- package/dist/cjs/arch/evm/SpokeUtils.js.map +1 -1
- package/dist/cjs/arch/evm/index.d.ts +1 -0
- package/dist/cjs/arch/evm/index.js +1 -0
- package/dist/cjs/arch/evm/index.js.map +1 -1
- package/dist/cjs/arch/svm/SpokeUtils.d.ts +20 -0
- package/dist/cjs/arch/svm/SpokeUtils.js +449 -0
- package/dist/cjs/arch/svm/SpokeUtils.js.map +1 -0
- package/dist/cjs/arch/svm/constants.d.ts +2 -0
- package/dist/cjs/arch/svm/constants.js +7 -0
- package/dist/cjs/arch/svm/constants.js.map +1 -0
- package/dist/cjs/arch/svm/eventsClient.d.ts +26 -0
- package/dist/cjs/arch/svm/eventsClient.js +253 -0
- package/dist/cjs/arch/svm/eventsClient.js.map +1 -0
- package/dist/cjs/arch/svm/index.d.ts +5 -1
- package/dist/cjs/arch/svm/index.js +6 -2
- package/dist/cjs/arch/svm/index.js.map +1 -1
- package/dist/cjs/{svm → arch/svm}/types.d.ts +9 -4
- package/dist/cjs/arch/svm/types.js.map +1 -0
- package/dist/cjs/arch/svm/utils.d.ts +18 -0
- package/dist/cjs/arch/svm/utils.js +212 -0
- package/dist/cjs/arch/svm/utils.js.map +1 -0
- package/dist/cjs/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.d.ts +1 -1
- package/dist/cjs/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js +7 -7
- package/dist/cjs/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js.map +1 -1
- package/dist/cjs/clients/BaseAbstractClient.d.ts +6 -5
- package/dist/cjs/clients/BaseAbstractClient.js +30 -19
- package/dist/cjs/clients/BaseAbstractClient.js.map +1 -1
- package/dist/cjs/clients/BundleDataClient/BundleDataClient.js +15 -11
- package/dist/cjs/clients/BundleDataClient/BundleDataClient.js.map +1 -1
- package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js +1 -1
- package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
- package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.d.ts +114 -114
- package/dist/cjs/clients/HubPoolClient.d.ts +4 -3
- package/dist/cjs/clients/HubPoolClient.js +18 -17
- package/dist/cjs/clients/HubPoolClient.js.map +1 -1
- package/dist/cjs/clients/SpokePoolClient/EVMSpokePoolClient.d.ts +3 -3
- package/dist/cjs/clients/SpokePoolClient/EVMSpokePoolClient.js +23 -20
- package/dist/cjs/clients/SpokePoolClient/EVMSpokePoolClient.js.map +1 -1
- package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.d.ts +23 -0
- package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.js +172 -0
- package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.js.map +1 -0
- package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.d.ts +5 -5
- package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js +54 -57
- package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
- package/dist/cjs/clients/SpokePoolClient/index.d.ts +3 -0
- package/dist/cjs/clients/SpokePoolClient/index.js +8 -1
- package/dist/cjs/clients/SpokePoolClient/index.js.map +1 -1
- package/dist/cjs/clients/index.d.ts +1 -1
- package/dist/cjs/clients/index.js +2 -1
- package/dist/cjs/clients/index.js.map +1 -1
- package/dist/cjs/clients/mocks/MockConfigStoreClient.d.ts +1 -1
- package/dist/cjs/clients/mocks/MockConfigStoreClient.js +2 -2
- package/dist/cjs/clients/mocks/MockConfigStoreClient.js.map +1 -1
- package/dist/cjs/clients/mocks/MockHubPoolClient.js +2 -2
- package/dist/cjs/clients/mocks/MockHubPoolClient.js.map +1 -1
- package/dist/cjs/clients/mocks/MockSpokePoolClient.js +7 -4
- package/dist/cjs/clients/mocks/MockSpokePoolClient.js.map +1 -1
- package/dist/cjs/clients/mocks/MockSvmCpiEventsClient.d.ts +33 -0
- package/dist/cjs/clients/mocks/MockSvmCpiEventsClient.js +184 -0
- package/dist/cjs/clients/mocks/MockSvmCpiEventsClient.js.map +1 -0
- package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.d.ts +30 -0
- package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.js +90 -0
- package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.js.map +1 -0
- package/dist/cjs/clients/mocks/index.d.ts +2 -0
- package/dist/cjs/clients/mocks/index.js +2 -0
- package/dist/cjs/clients/mocks/index.js.map +1 -1
- package/dist/cjs/constants.d.ts +1 -0
- package/dist/cjs/constants.js +2 -1
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/gasPriceOracle/adapters/arbitrum.d.ts +2 -2
- package/dist/cjs/gasPriceOracle/adapters/arbitrum.js.map +1 -1
- package/dist/cjs/gasPriceOracle/adapters/ethereum.d.ts +4 -4
- package/dist/cjs/gasPriceOracle/adapters/ethereum.js.map +1 -1
- package/dist/cjs/gasPriceOracle/adapters/linea-viem.js +3 -2
- package/dist/cjs/gasPriceOracle/adapters/linea-viem.js.map +1 -1
- package/dist/cjs/gasPriceOracle/adapters/polygon.d.ts +3 -3
- package/dist/cjs/gasPriceOracle/adapters/solana.d.ts +4 -0
- package/dist/cjs/gasPriceOracle/adapters/solana.js +43 -0
- package/dist/cjs/gasPriceOracle/adapters/solana.js.map +1 -0
- package/dist/cjs/gasPriceOracle/index.d.ts +1 -1
- package/dist/cjs/gasPriceOracle/oracle.d.ts +4 -3
- package/dist/cjs/gasPriceOracle/oracle.js +16 -9
- package/dist/cjs/gasPriceOracle/oracle.js.map +1 -1
- package/dist/cjs/gasPriceOracle/types.d.ts +6 -1
- package/dist/cjs/index.d.ts +0 -1
- package/dist/cjs/index.js +1 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interfaces/SpokePool.d.ts +13 -0
- package/dist/cjs/interfaces/SpokePool.js.map +1 -1
- package/dist/cjs/providers/index.d.ts +1 -1
- package/dist/cjs/providers/index.js +1 -2
- package/dist/cjs/providers/index.js.map +1 -1
- package/dist/cjs/providers/mocks/MockCachedSolanaRpcFactory.d.ts +5 -0
- package/dist/cjs/providers/mocks/MockCachedSolanaRpcFactory.js +21 -0
- package/dist/cjs/providers/mocks/MockCachedSolanaRpcFactory.js.map +1 -0
- package/dist/cjs/providers/mocks/MockRateLimitedSolanaRpcFactory.d.ts +5 -0
- package/dist/cjs/providers/mocks/MockRateLimitedSolanaRpcFactory.js +20 -0
- package/dist/cjs/providers/mocks/MockRateLimitedSolanaRpcFactory.js.map +1 -0
- package/dist/cjs/providers/mocks/MockSolanaRpcFactory.d.ts +13 -0
- package/dist/cjs/providers/mocks/MockSolanaRpcFactory.js +76 -0
- package/dist/cjs/providers/mocks/MockSolanaRpcFactory.js.map +1 -0
- package/dist/cjs/providers/mocks/index.d.ts +4 -0
- package/dist/cjs/providers/mocks/index.js +8 -0
- package/dist/cjs/providers/mocks/index.js.map +1 -0
- package/dist/cjs/providers/{mockProvider.js → mocks/mockEthersProvider.js} +2 -2
- package/dist/cjs/providers/mocks/mockEthersProvider.js.map +1 -0
- package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.d.ts +1 -1
- package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.js +10 -8
- package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.js.map +1 -1
- package/dist/cjs/relayFeeCalculator/chain-queries/factory.d.ts +4 -2
- package/dist/cjs/relayFeeCalculator/chain-queries/factory.js +8 -2
- package/dist/cjs/relayFeeCalculator/chain-queries/factory.js.map +1 -1
- package/dist/cjs/relayFeeCalculator/chain-queries/index.d.ts +1 -0
- package/dist/cjs/relayFeeCalculator/chain-queries/index.js +1 -0
- package/dist/cjs/relayFeeCalculator/chain-queries/index.js.map +1 -1
- package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.d.ts +37 -0
- package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.js +171 -0
- package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -0
- package/dist/cjs/relayFeeCalculator/relayFeeCalculator.d.ts +2 -0
- package/dist/cjs/relayFeeCalculator/relayFeeCalculator.js +9 -3
- package/dist/cjs/relayFeeCalculator/relayFeeCalculator.js.map +1 -1
- package/dist/cjs/utils/AddressUtils.d.ts +9 -3
- package/dist/cjs/utils/AddressUtils.js +36 -6
- package/dist/cjs/utils/AddressUtils.js.map +1 -1
- package/dist/cjs/utils/ArrayUtils.d.ts +1 -0
- package/dist/cjs/utils/ArrayUtils.js +6 -1
- package/dist/cjs/utils/ArrayUtils.js.map +1 -1
- package/dist/cjs/utils/BlockFinder.d.ts +22 -0
- package/dist/cjs/utils/BlockFinder.js +10 -0
- package/dist/cjs/utils/BlockFinder.js.map +1 -0
- package/dist/cjs/utils/BlockUtils.d.ts +2 -27
- package/dist/cjs/utils/BlockUtils.js +2 -208
- package/dist/cjs/utils/BlockUtils.js.map +1 -1
- package/dist/cjs/utils/EventUtils.d.ts +4 -4
- package/dist/cjs/utils/EventUtils.js +7 -4
- package/dist/cjs/utils/EventUtils.js.map +1 -1
- package/dist/cjs/utils/JSONUtils.js +3 -0
- package/dist/cjs/utils/JSONUtils.js.map +1 -1
- package/dist/cjs/utils/NumberUtils.d.ts +1 -0
- package/dist/cjs/utils/NumberUtils.js +7 -1
- package/dist/cjs/utils/NumberUtils.js.map +1 -1
- package/dist/cjs/utils/SpokeUtils.js +5 -0
- package/dist/cjs/utils/SpokeUtils.js.map +1 -1
- package/dist/cjs/utils/index.d.ts +1 -0
- package/dist/cjs/utils/index.js +1 -0
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/esm/arch/evm/BlockUtils.d.ts +24 -0
- package/dist/esm/arch/evm/BlockUtils.js +250 -0
- package/dist/esm/arch/evm/BlockUtils.js.map +1 -0
- package/dist/esm/arch/evm/SpokeUtils.d.ts +1 -1
- package/dist/esm/arch/evm/SpokeUtils.js +6 -5
- package/dist/esm/arch/evm/SpokeUtils.js.map +1 -1
- package/dist/esm/arch/evm/index.d.ts +1 -0
- package/dist/esm/arch/evm/index.js +1 -0
- package/dist/esm/arch/evm/index.js.map +1 -1
- package/dist/esm/arch/svm/SpokeUtils.d.ts +122 -0
- package/dist/esm/arch/svm/SpokeUtils.js +566 -0
- package/dist/esm/arch/svm/SpokeUtils.js.map +1 -0
- package/dist/esm/arch/svm/constants.d.ts +2 -0
- package/dist/esm/arch/svm/constants.js +3 -0
- package/dist/esm/arch/svm/constants.js.map +1 -0
- package/dist/esm/arch/svm/eventsClient.d.ts +87 -0
- package/dist/esm/arch/svm/eventsClient.js +316 -0
- package/dist/esm/arch/svm/eventsClient.js.map +1 -0
- package/dist/esm/arch/svm/index.d.ts +5 -1
- package/dist/esm/arch/svm/index.js +5 -1
- package/dist/esm/arch/svm/index.js.map +1 -1
- package/dist/esm/{svm → arch/svm}/types.d.ts +9 -4
- package/dist/esm/arch/svm/types.js.map +1 -0
- package/dist/esm/arch/svm/utils.d.ts +63 -0
- package/dist/esm/arch/svm/utils.js +258 -0
- package/dist/esm/arch/svm/utils.js.map +1 -0
- package/dist/esm/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.d.ts +1 -1
- package/dist/esm/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js +7 -7
- package/dist/esm/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js.map +1 -1
- package/dist/esm/clients/BaseAbstractClient.d.ts +6 -5
- package/dist/esm/clients/BaseAbstractClient.js +30 -19
- package/dist/esm/clients/BaseAbstractClient.js.map +1 -1
- package/dist/esm/clients/BundleDataClient/BundleDataClient.js +17 -14
- package/dist/esm/clients/BundleDataClient/BundleDataClient.js.map +1 -1
- package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js +1 -1
- package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
- package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.d.ts +114 -114
- package/dist/esm/clients/HubPoolClient.d.ts +4 -3
- package/dist/esm/clients/HubPoolClient.js +19 -18
- package/dist/esm/clients/HubPoolClient.js.map +1 -1
- package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.d.ts +3 -3
- package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.js +23 -20
- package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.js.map +1 -1
- package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.d.ts +66 -0
- package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.js +225 -0
- package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.js.map +1 -0
- package/dist/esm/clients/SpokePoolClient/SpokePoolClient.d.ts +7 -7
- package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js +57 -59
- package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
- package/dist/esm/clients/SpokePoolClient/index.d.ts +8 -0
- package/dist/esm/clients/SpokePoolClient/index.js +10 -0
- package/dist/esm/clients/SpokePoolClient/index.js.map +1 -1
- package/dist/esm/clients/index.d.ts +1 -1
- package/dist/esm/clients/index.js +1 -1
- package/dist/esm/clients/index.js.map +1 -1
- package/dist/esm/clients/mocks/MockConfigStoreClient.d.ts +1 -1
- package/dist/esm/clients/mocks/MockConfigStoreClient.js +2 -2
- package/dist/esm/clients/mocks/MockConfigStoreClient.js.map +1 -1
- package/dist/esm/clients/mocks/MockHubPoolClient.js +2 -2
- package/dist/esm/clients/mocks/MockHubPoolClient.js.map +1 -1
- package/dist/esm/clients/mocks/MockSpokePoolClient.js +8 -5
- package/dist/esm/clients/mocks/MockSpokePoolClient.js.map +1 -1
- package/dist/esm/clients/mocks/MockSvmCpiEventsClient.d.ts +33 -0
- package/dist/esm/clients/mocks/MockSvmCpiEventsClient.js +183 -0
- package/dist/esm/clients/mocks/MockSvmCpiEventsClient.js.map +1 -0
- package/dist/esm/clients/mocks/MockSvmSpokePoolClient.d.ts +30 -0
- package/dist/esm/clients/mocks/MockSvmSpokePoolClient.js +89 -0
- package/dist/esm/clients/mocks/MockSvmSpokePoolClient.js.map +1 -0
- package/dist/esm/clients/mocks/index.d.ts +2 -0
- package/dist/esm/clients/mocks/index.js +2 -0
- package/dist/esm/clients/mocks/index.js.map +1 -1
- package/dist/esm/constants.d.ts +1 -0
- package/dist/esm/constants.js +1 -0
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/gasPriceOracle/adapters/arbitrum.d.ts +2 -2
- package/dist/esm/gasPriceOracle/adapters/arbitrum.js.map +1 -1
- package/dist/esm/gasPriceOracle/adapters/ethereum.d.ts +4 -4
- package/dist/esm/gasPriceOracle/adapters/ethereum.js.map +1 -1
- package/dist/esm/gasPriceOracle/adapters/linea-viem.js +3 -2
- package/dist/esm/gasPriceOracle/adapters/linea-viem.js.map +1 -1
- package/dist/esm/gasPriceOracle/adapters/polygon.d.ts +4 -4
- package/dist/esm/gasPriceOracle/adapters/polygon.js +1 -1
- package/dist/esm/gasPriceOracle/adapters/solana.d.ts +8 -0
- package/dist/esm/gasPriceOracle/adapters/solana.js +43 -0
- package/dist/esm/gasPriceOracle/adapters/solana.js.map +1 -0
- package/dist/esm/gasPriceOracle/index.d.ts +1 -1
- package/dist/esm/gasPriceOracle/oracle.d.ts +4 -3
- package/dist/esm/gasPriceOracle/oracle.js +18 -9
- package/dist/esm/gasPriceOracle/oracle.js.map +1 -1
- package/dist/esm/gasPriceOracle/types.d.ts +6 -1
- package/dist/esm/index.d.ts +0 -1
- package/dist/esm/index.js +0 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interfaces/SpokePool.d.ts +13 -0
- package/dist/esm/interfaces/SpokePool.js.map +1 -1
- package/dist/esm/providers/index.d.ts +1 -1
- package/dist/esm/providers/index.js +1 -2
- package/dist/esm/providers/index.js.map +1 -1
- package/dist/esm/providers/mocks/MockCachedSolanaRpcFactory.d.ts +5 -0
- package/dist/esm/providers/mocks/MockCachedSolanaRpcFactory.js +19 -0
- package/dist/esm/providers/mocks/MockCachedSolanaRpcFactory.js.map +1 -0
- package/dist/esm/providers/mocks/MockRateLimitedSolanaRpcFactory.d.ts +5 -0
- package/dist/esm/providers/mocks/MockRateLimitedSolanaRpcFactory.js +18 -0
- package/dist/esm/providers/mocks/MockRateLimitedSolanaRpcFactory.js.map +1 -0
- package/dist/esm/providers/mocks/MockSolanaRpcFactory.d.ts +13 -0
- package/dist/esm/providers/mocks/MockSolanaRpcFactory.js +74 -0
- package/dist/esm/providers/mocks/MockSolanaRpcFactory.js.map +1 -0
- package/dist/esm/providers/mocks/index.d.ts +4 -0
- package/dist/esm/providers/mocks/index.js +5 -0
- package/dist/esm/providers/mocks/index.js.map +1 -0
- package/dist/esm/providers/{mockProvider.js → mocks/mockEthersProvider.js} +2 -2
- package/dist/esm/providers/mocks/mockEthersProvider.js.map +1 -0
- package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.d.ts +1 -1
- package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.js +10 -8
- package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.js.map +1 -1
- package/dist/esm/relayFeeCalculator/chain-queries/factory.d.ts +4 -2
- package/dist/esm/relayFeeCalculator/chain-queries/factory.js +11 -5
- package/dist/esm/relayFeeCalculator/chain-queries/factory.js.map +1 -1
- package/dist/esm/relayFeeCalculator/chain-queries/index.d.ts +1 -0
- package/dist/esm/relayFeeCalculator/chain-queries/index.js +1 -0
- package/dist/esm/relayFeeCalculator/chain-queries/index.js.map +1 -1
- package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.d.ts +84 -0
- package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js +216 -0
- package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -0
- package/dist/esm/relayFeeCalculator/relayFeeCalculator.d.ts +12 -1
- package/dist/esm/relayFeeCalculator/relayFeeCalculator.js +9 -4
- package/dist/esm/relayFeeCalculator/relayFeeCalculator.js.map +1 -1
- package/dist/esm/utils/AddressUtils.d.ts +9 -3
- package/dist/esm/utils/AddressUtils.js +41 -6
- package/dist/esm/utils/AddressUtils.js.map +1 -1
- package/dist/esm/utils/ArrayUtils.d.ts +6 -0
- package/dist/esm/utils/ArrayUtils.js +9 -0
- package/dist/esm/utils/ArrayUtils.js.map +1 -1
- package/dist/esm/utils/BlockFinder.d.ts +22 -0
- package/dist/esm/utils/BlockFinder.js +7 -0
- package/dist/esm/utils/BlockFinder.js.map +1 -0
- package/dist/esm/utils/BlockUtils.d.ts +2 -36
- package/dist/esm/utils/BlockUtils.js +2 -243
- package/dist/esm/utils/BlockUtils.js.map +1 -1
- package/dist/esm/utils/EventUtils.d.ts +4 -4
- package/dist/esm/utils/EventUtils.js +7 -4
- package/dist/esm/utils/EventUtils.js.map +1 -1
- package/dist/esm/utils/JSONUtils.js +3 -0
- package/dist/esm/utils/JSONUtils.js.map +1 -1
- package/dist/esm/utils/NumberUtils.d.ts +7 -0
- package/dist/esm/utils/NumberUtils.js +11 -0
- package/dist/esm/utils/NumberUtils.js.map +1 -1
- package/dist/esm/utils/SpokeUtils.js +5 -0
- package/dist/esm/utils/SpokeUtils.js.map +1 -1
- package/dist/esm/utils/index.d.ts +1 -0
- package/dist/esm/utils/index.js +1 -0
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/types/arch/evm/BlockUtils.d.ts +25 -0
- package/dist/types/arch/evm/BlockUtils.d.ts.map +1 -0
- package/dist/types/arch/evm/SpokeUtils.d.ts +1 -1
- package/dist/types/arch/evm/SpokeUtils.d.ts.map +1 -1
- package/dist/types/arch/evm/index.d.ts +1 -0
- package/dist/types/arch/evm/index.d.ts.map +1 -1
- package/dist/types/arch/svm/SpokeUtils.d.ts +123 -0
- package/dist/types/arch/svm/SpokeUtils.d.ts.map +1 -0
- package/dist/types/arch/svm/constants.d.ts +3 -0
- package/dist/types/arch/svm/constants.d.ts.map +1 -0
- package/dist/types/arch/svm/eventsClient.d.ts +88 -0
- package/dist/types/arch/svm/eventsClient.d.ts.map +1 -0
- package/dist/types/arch/svm/index.d.ts +5 -1
- package/dist/types/arch/svm/index.d.ts.map +1 -1
- package/dist/types/{svm → arch/svm}/types.d.ts +9 -4
- package/dist/types/arch/svm/types.d.ts.map +1 -0
- package/dist/types/arch/svm/utils.d.ts +64 -0
- package/dist/types/arch/svm/utils.d.ts.map +1 -0
- package/dist/types/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.d.ts +1 -1
- package/dist/types/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.d.ts.map +1 -1
- package/dist/types/clients/BaseAbstractClient.d.ts +6 -5
- package/dist/types/clients/BaseAbstractClient.d.ts.map +1 -1
- package/dist/types/clients/BundleDataClient/BundleDataClient.d.ts.map +1 -1
- package/dist/types/clients/BundleDataClient/utils/SuperstructUtils.d.ts +114 -114
- package/dist/types/clients/HubPoolClient.d.ts +4 -3
- package/dist/types/clients/HubPoolClient.d.ts.map +1 -1
- package/dist/types/clients/SpokePoolClient/EVMSpokePoolClient.d.ts +3 -3
- package/dist/types/clients/SpokePoolClient/EVMSpokePoolClient.d.ts.map +1 -1
- package/dist/types/clients/SpokePoolClient/SVMSpokePoolClient.d.ts +67 -0
- package/dist/types/clients/SpokePoolClient/SVMSpokePoolClient.d.ts.map +1 -0
- package/dist/types/clients/SpokePoolClient/SpokePoolClient.d.ts +7 -7
- package/dist/types/clients/SpokePoolClient/SpokePoolClient.d.ts.map +1 -1
- package/dist/types/clients/SpokePoolClient/index.d.ts +8 -0
- package/dist/types/clients/SpokePoolClient/index.d.ts.map +1 -1
- package/dist/types/clients/index.d.ts +1 -1
- package/dist/types/clients/index.d.ts.map +1 -1
- package/dist/types/clients/mocks/MockConfigStoreClient.d.ts +1 -1
- package/dist/types/clients/mocks/MockConfigStoreClient.d.ts.map +1 -1
- package/dist/types/clients/mocks/MockSpokePoolClient.d.ts.map +1 -1
- package/dist/types/clients/mocks/MockSvmCpiEventsClient.d.ts +34 -0
- package/dist/types/clients/mocks/MockSvmCpiEventsClient.d.ts.map +1 -0
- package/dist/types/clients/mocks/MockSvmSpokePoolClient.d.ts +31 -0
- package/dist/types/clients/mocks/MockSvmSpokePoolClient.d.ts.map +1 -0
- package/dist/types/clients/mocks/index.d.ts +2 -0
- package/dist/types/clients/mocks/index.d.ts.map +1 -1
- package/dist/types/constants.d.ts +1 -0
- package/dist/types/constants.d.ts.map +1 -1
- package/dist/types/gasPriceOracle/adapters/arbitrum.d.ts +2 -2
- package/dist/types/gasPriceOracle/adapters/arbitrum.d.ts.map +1 -1
- package/dist/types/gasPriceOracle/adapters/ethereum.d.ts +4 -4
- package/dist/types/gasPriceOracle/adapters/ethereum.d.ts.map +1 -1
- package/dist/types/gasPriceOracle/adapters/linea-viem.d.ts.map +1 -1
- package/dist/types/gasPriceOracle/adapters/polygon.d.ts +4 -4
- package/dist/types/gasPriceOracle/adapters/polygon.d.ts.map +1 -1
- package/dist/types/gasPriceOracle/adapters/solana.d.ts +9 -0
- package/dist/types/gasPriceOracle/adapters/solana.d.ts.map +1 -0
- package/dist/types/gasPriceOracle/index.d.ts +1 -1
- package/dist/types/gasPriceOracle/index.d.ts.map +1 -1
- package/dist/types/gasPriceOracle/oracle.d.ts +4 -3
- package/dist/types/gasPriceOracle/oracle.d.ts.map +1 -1
- package/dist/types/gasPriceOracle/types.d.ts +6 -1
- package/dist/types/gasPriceOracle/types.d.ts.map +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/interfaces/SpokePool.d.ts +13 -0
- package/dist/types/interfaces/SpokePool.d.ts.map +1 -1
- package/dist/types/providers/index.d.ts +1 -1
- package/dist/types/providers/index.d.ts.map +1 -1
- package/dist/types/providers/mocks/MockCachedSolanaRpcFactory.d.ts +6 -0
- package/dist/types/providers/mocks/MockCachedSolanaRpcFactory.d.ts.map +1 -0
- package/dist/types/providers/mocks/MockRateLimitedSolanaRpcFactory.d.ts +6 -0
- package/dist/types/providers/mocks/MockRateLimitedSolanaRpcFactory.d.ts.map +1 -0
- package/dist/types/providers/mocks/MockSolanaRpcFactory.d.ts +14 -0
- package/dist/types/providers/mocks/MockSolanaRpcFactory.d.ts.map +1 -0
- package/dist/types/providers/mocks/index.d.ts +5 -0
- package/dist/types/providers/mocks/index.d.ts.map +1 -0
- package/dist/types/providers/{mockProvider.d.ts → mocks/mockEthersProvider.d.ts} +1 -1
- package/dist/types/providers/mocks/mockEthersProvider.d.ts.map +1 -0
- package/dist/types/relayFeeCalculator/chain-queries/baseQuery.d.ts +1 -1
- package/dist/types/relayFeeCalculator/chain-queries/baseQuery.d.ts.map +1 -1
- package/dist/types/relayFeeCalculator/chain-queries/factory.d.ts +4 -2
- package/dist/types/relayFeeCalculator/chain-queries/factory.d.ts.map +1 -1
- package/dist/types/relayFeeCalculator/chain-queries/index.d.ts +1 -0
- package/dist/types/relayFeeCalculator/chain-queries/index.d.ts.map +1 -1
- package/dist/types/relayFeeCalculator/chain-queries/svmQuery.d.ts +85 -0
- package/dist/types/relayFeeCalculator/chain-queries/svmQuery.d.ts.map +1 -0
- package/dist/types/relayFeeCalculator/relayFeeCalculator.d.ts +12 -1
- package/dist/types/relayFeeCalculator/relayFeeCalculator.d.ts.map +1 -1
- package/dist/types/utils/AddressUtils.d.ts +9 -3
- package/dist/types/utils/AddressUtils.d.ts.map +1 -1
- package/dist/types/utils/ArrayUtils.d.ts +6 -0
- package/dist/types/utils/ArrayUtils.d.ts.map +1 -1
- package/dist/types/utils/BlockFinder.d.ts +23 -0
- package/dist/types/utils/BlockFinder.d.ts.map +1 -0
- package/dist/types/utils/BlockUtils.d.ts +2 -36
- package/dist/types/utils/BlockUtils.d.ts.map +1 -1
- package/dist/types/utils/EventUtils.d.ts +4 -4
- package/dist/types/utils/EventUtils.d.ts.map +1 -1
- package/dist/types/utils/JSONUtils.d.ts.map +1 -1
- package/dist/types/utils/NumberUtils.d.ts +7 -0
- package/dist/types/utils/NumberUtils.d.ts.map +1 -1
- package/dist/types/utils/SpokeUtils.d.ts.map +1 -1
- package/dist/types/utils/index.d.ts +1 -0
- package/dist/types/utils/index.d.ts.map +1 -1
- package/package.json +3 -1
- package/src/arch/evm/BlockUtils.ts +209 -0
- package/src/arch/evm/SpokeUtils.ts +5 -5
- package/src/arch/evm/index.ts +1 -0
- package/src/arch/svm/SpokeUtils.ts +581 -0
- package/src/arch/svm/constants.ts +2 -0
- package/src/arch/svm/eventsClient.ts +342 -0
- package/src/arch/svm/index.ts +5 -1
- package/src/{svm → arch/svm}/types.ts +21 -4
- package/src/arch/svm/utils.ts +233 -0
- package/src/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.ts +7 -7
- package/src/clients/BaseAbstractClient.ts +20 -13
- package/src/clients/BundleDataClient/BundleDataClient.ts +28 -19
- package/src/clients/BundleDataClient/utils/PoolRebalanceUtils.ts +1 -1
- package/src/clients/HubPoolClient.ts +19 -19
- package/src/clients/SpokePoolClient/EVMSpokePoolClient.ts +23 -21
- package/src/clients/SpokePoolClient/SVMSpokePoolClient.ts +268 -0
- package/src/clients/SpokePoolClient/SpokePoolClient.ts +50 -59
- package/src/clients/SpokePoolClient/index.ts +11 -0
- package/src/clients/index.ts +1 -1
- package/src/clients/mocks/MockConfigStoreClient.ts +2 -2
- package/src/clients/mocks/MockHubPoolClient.ts +2 -2
- package/src/clients/mocks/MockSpokePoolClient.ts +9 -4
- package/src/clients/mocks/MockSvmCpiEventsClient.ts +226 -0
- package/src/clients/mocks/MockSvmSpokePoolClient.ts +119 -0
- package/src/clients/mocks/index.ts +2 -0
- package/src/constants.ts +1 -0
- package/src/gasPriceOracle/adapters/arbitrum.ts +5 -2
- package/src/gasPriceOracle/adapters/ethereum.ts +7 -4
- package/src/gasPriceOracle/adapters/linea-viem.ts +3 -1
- package/src/gasPriceOracle/adapters/polygon.ts +6 -6
- package/src/gasPriceOracle/adapters/solana.ts +45 -0
- package/src/gasPriceOracle/index.ts +1 -1
- package/src/gasPriceOracle/oracle.ts +20 -4
- package/src/gasPriceOracle/types.ts +7 -1
- package/src/index.ts +0 -1
- package/src/interfaces/SpokePool.ts +14 -0
- package/src/providers/index.ts +1 -1
- package/src/providers/mocks/MockCachedSolanaRpcFactory.ts +15 -0
- package/src/providers/mocks/MockRateLimitedSolanaRpcFactory.ts +14 -0
- package/src/providers/mocks/MockSolanaRpcFactory.ts +55 -0
- package/src/providers/mocks/index.ts +4 -0
- package/src/providers/{mockProvider.ts → mocks/mockEthersProvider.ts} +1 -1
- package/src/relayFeeCalculator/chain-queries/baseQuery.ts +11 -9
- package/src/relayFeeCalculator/chain-queries/factory.ts +24 -8
- package/src/relayFeeCalculator/chain-queries/index.ts +1 -0
- package/src/relayFeeCalculator/chain-queries/svmQuery.ts +225 -0
- package/src/relayFeeCalculator/relayFeeCalculator.ts +15 -3
- package/src/utils/AddressUtils.ts +49 -6
- package/src/utils/ArrayUtils.ts +12 -0
- package/src/utils/BlockFinder.ts +26 -0
- package/src/utils/BlockUtils.ts +5 -215
- package/src/utils/EventUtils.ts +11 -11
- package/src/utils/JSONUtils.ts +2 -0
- package/src/utils/NumberUtils.ts +10 -0
- package/src/utils/SpokeUtils.ts +7 -3
- package/src/utils/index.ts +1 -0
- package/dist/cjs/providers/mockProvider.js.map +0 -1
- package/dist/cjs/svm/eventsClient.d.ts +0 -15
- package/dist/cjs/svm/eventsClient.js +0 -157
- package/dist/cjs/svm/eventsClient.js.map +0 -1
- package/dist/cjs/svm/index.d.ts +0 -3
- package/dist/cjs/svm/index.js +0 -8
- package/dist/cjs/svm/index.js.map +0 -1
- package/dist/cjs/svm/types.js.map +0 -1
- package/dist/cjs/svm/utils/events.d.ts +0 -8
- package/dist/cjs/svm/utils/events.js +0 -47
- package/dist/cjs/svm/utils/events.js.map +0 -1
- package/dist/cjs/svm/utils/helpers.d.ts +0 -2
- package/dist/cjs/svm/utils/helpers.js +0 -19
- package/dist/cjs/svm/utils/helpers.js.map +0 -1
- package/dist/cjs/svm/utils/index.d.ts +0 -1
- package/dist/cjs/svm/utils/index.js +0 -5
- package/dist/cjs/svm/utils/index.js.map +0 -1
- package/dist/esm/providers/mockProvider.js.map +0 -1
- package/dist/esm/svm/eventsClient.d.ts +0 -51
- package/dist/esm/svm/eventsClient.js +0 -195
- package/dist/esm/svm/eventsClient.js.map +0 -1
- package/dist/esm/svm/index.d.ts +0 -3
- package/dist/esm/svm/index.js +0 -5
- package/dist/esm/svm/index.js.map +0 -1
- package/dist/esm/svm/types.js.map +0 -1
- package/dist/esm/svm/utils/events.d.ts +0 -17
- package/dist/esm/svm/utils/events.js +0 -55
- package/dist/esm/svm/utils/events.js.map +0 -1
- package/dist/esm/svm/utils/helpers.d.ts +0 -5
- package/dist/esm/svm/utils/helpers.js +0 -18
- package/dist/esm/svm/utils/helpers.js.map +0 -1
- package/dist/esm/svm/utils/index.d.ts +0 -1
- package/dist/esm/svm/utils/index.js +0 -2
- package/dist/esm/svm/utils/index.js.map +0 -1
- package/dist/types/providers/mockProvider.d.ts.map +0 -1
- package/dist/types/svm/eventsClient.d.ts +0 -52
- package/dist/types/svm/eventsClient.d.ts.map +0 -1
- package/dist/types/svm/index.d.ts +0 -4
- package/dist/types/svm/index.d.ts.map +0 -1
- package/dist/types/svm/types.d.ts.map +0 -1
- package/dist/types/svm/utils/events.d.ts +0 -18
- package/dist/types/svm/utils/events.d.ts.map +0 -1
- package/dist/types/svm/utils/helpers.d.ts +0 -6
- package/dist/types/svm/utils/helpers.d.ts.map +0 -1
- package/dist/types/svm/utils/index.d.ts +0 -2
- package/dist/types/svm/utils/index.d.ts.map +0 -1
- package/src/svm/eventsClient.ts +0 -199
- package/src/svm/index.ts +0 -3
- package/src/svm/utils/events.ts +0 -58
- package/src/svm/utils/helpers.ts +0 -9
- package/src/svm/utils/index.ts +0 -1
- /package/dist/cjs/{svm → arch/svm}/types.js +0 -0
- /package/dist/cjs/providers/{mockProvider.d.ts → mocks/mockEthersProvider.d.ts} +0 -0
- /package/dist/esm/{svm → arch/svm}/types.js +0 -0
- /package/dist/esm/providers/{mockProvider.d.ts → mocks/mockEthersProvider.d.ts} +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { providers } from "ethers";
|
|
2
2
|
import { CachingMechanismInterface } from "../interfaces";
|
|
3
3
|
import { EventSearchConfig, isDefined, MakeOptional } from "../utils";
|
|
4
|
+
import { SVMProvider } from "../arch/svm";
|
|
4
5
|
|
|
5
6
|
export enum UpdateFailureReason {
|
|
6
7
|
NotReady,
|
|
@@ -18,15 +19,15 @@ export function isUpdateFailureReason(x: EventSearchConfig | UpdateFailureReason
|
|
|
18
19
|
*/
|
|
19
20
|
export abstract class BaseAbstractClient {
|
|
20
21
|
protected _isUpdated: boolean;
|
|
21
|
-
public
|
|
22
|
-
public
|
|
22
|
+
public firstHeightToSearch = 0;
|
|
23
|
+
public latestHeightSearched = 0;
|
|
23
24
|
|
|
24
25
|
/**
|
|
25
26
|
* Creates a new client.
|
|
26
27
|
* @param cachingMechanism The caching mechanism to use for this client. If not provided, the client will not rely on an external cache.
|
|
27
28
|
*/
|
|
28
29
|
constructor(
|
|
29
|
-
readonly eventSearchConfig: MakeOptional<EventSearchConfig, "
|
|
30
|
+
readonly eventSearchConfig: MakeOptional<EventSearchConfig, "to"> = { from: 0, maxLookBack: 0 },
|
|
30
31
|
protected cachingMechanism?: CachingMechanismInterface
|
|
31
32
|
) {
|
|
32
33
|
this._isUpdated = false;
|
|
@@ -58,22 +59,28 @@ export abstract class BaseAbstractClient {
|
|
|
58
59
|
* @provider Ethers RPC provider instance.
|
|
59
60
|
* @returns An EventSearchConfig instance if valid, otherwise an UpdateFailureReason.
|
|
60
61
|
*/
|
|
61
|
-
public async updateSearchConfig(
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
62
|
+
public async updateSearchConfig(
|
|
63
|
+
provider: providers.Provider | SVMProvider
|
|
64
|
+
): Promise<EventSearchConfig | UpdateFailureReason> {
|
|
65
|
+
const from = this.firstHeightToSearch;
|
|
66
|
+
let { to } = this.eventSearchConfig;
|
|
67
|
+
if (isDefined(to)) {
|
|
68
|
+
if (from > to) {
|
|
69
|
+
throw new Error(`Invalid event search config from (${from}) > to (${to})`);
|
|
67
70
|
}
|
|
68
71
|
} else {
|
|
69
|
-
|
|
70
|
-
|
|
72
|
+
if (provider instanceof providers.Provider) {
|
|
73
|
+
to = await provider.getBlockNumber();
|
|
74
|
+
} else {
|
|
75
|
+
to = Number(await provider.getSlot({ commitment: "confirmed" }).send());
|
|
76
|
+
}
|
|
77
|
+
if (to < from) {
|
|
71
78
|
return UpdateFailureReason.AlreadyUpdated;
|
|
72
79
|
}
|
|
73
80
|
}
|
|
74
81
|
|
|
75
|
-
const {
|
|
76
|
-
return {
|
|
82
|
+
const { maxLookBack } = this.eventSearchConfig;
|
|
83
|
+
return { from, to, maxLookBack };
|
|
77
84
|
}
|
|
78
85
|
|
|
79
86
|
/**
|
|
@@ -20,7 +20,8 @@ import {
|
|
|
20
20
|
DepositWithBlock,
|
|
21
21
|
} from "../../interfaces";
|
|
22
22
|
import { SpokePoolClient } from "..";
|
|
23
|
-
import { findFillEvent } from "../../arch/evm";
|
|
23
|
+
import { findFillEvent as findEvmFillEvent } from "../../arch/evm";
|
|
24
|
+
import { findFillEvent as findSvmFillEvent } from "../../arch/svm";
|
|
24
25
|
import {
|
|
25
26
|
BigNumber,
|
|
26
27
|
bnZero,
|
|
@@ -56,7 +57,7 @@ import {
|
|
|
56
57
|
V3FillWithBlock,
|
|
57
58
|
verifyFillRepayment,
|
|
58
59
|
} from "./utils";
|
|
59
|
-
import { isEVMSpokePoolClient } from "../SpokePoolClient";
|
|
60
|
+
import { isEVMSpokePoolClient, isSvmSpokePoolClient } from "../SpokePoolClient";
|
|
60
61
|
|
|
61
62
|
// max(uint256) - 1
|
|
62
63
|
export const INFINITE_FILL_DEADLINE = bnUint32Max;
|
|
@@ -370,7 +371,7 @@ export class BundleDataClient {
|
|
|
370
371
|
}
|
|
371
372
|
|
|
372
373
|
const bundle = this.clients.hubPoolClient.getLatestFullyExecutedRootBundle(
|
|
373
|
-
this.clients.hubPoolClient.
|
|
374
|
+
this.clients.hubPoolClient.latestHeightSearched
|
|
374
375
|
);
|
|
375
376
|
if (bundle !== undefined) {
|
|
376
377
|
refunds.push(await this.getPendingRefundsFromBundle(bundle));
|
|
@@ -383,7 +384,7 @@ export class BundleDataClient {
|
|
|
383
384
|
async getPendingRefundsFromBundle(bundle: ProposedRootBundle): Promise<CombinedRefunds> {
|
|
384
385
|
const nextBundleMainnetStartBlock = this.clients.hubPoolClient.getNextBundleStartBlockNumber(
|
|
385
386
|
this.chainIdListForBundleEvaluationBlockNumbers,
|
|
386
|
-
this.clients.hubPoolClient.
|
|
387
|
+
this.clients.hubPoolClient.latestHeightSearched,
|
|
387
388
|
this.clients.hubPoolClient.chainId
|
|
388
389
|
);
|
|
389
390
|
const chainIds = this.clients.configStoreClient.getChainIdIndicesForBlock(nextBundleMainnetStartBlock);
|
|
@@ -517,7 +518,7 @@ export class BundleDataClient {
|
|
|
517
518
|
const hubPoolClient = this.clients.hubPoolClient;
|
|
518
519
|
const nextBundleMainnetStartBlock = hubPoolClient.getNextBundleStartBlockNumber(
|
|
519
520
|
this.chainIdListForBundleEvaluationBlockNumbers,
|
|
520
|
-
hubPoolClient.
|
|
521
|
+
hubPoolClient.latestHeightSearched,
|
|
521
522
|
hubPoolClient.chainId
|
|
522
523
|
);
|
|
523
524
|
const chainIds = this.clients.configStoreClient.getChainIdIndicesForBlock(nextBundleMainnetStartBlock);
|
|
@@ -530,8 +531,8 @@ export class BundleDataClient {
|
|
|
530
531
|
this.spokePoolClients,
|
|
531
532
|
getEndBlockBuffers(chainIds, this.blockRangeEndBlockBuffer),
|
|
532
533
|
this.clients,
|
|
533
|
-
this.clients.hubPoolClient.
|
|
534
|
-
this.clients.configStoreClient.getEnabledChains(this.clients.hubPoolClient.
|
|
534
|
+
this.clients.hubPoolClient.latestHeightSearched,
|
|
535
|
+
this.clients.configStoreClient.getEnabledChains(this.clients.hubPoolClient.latestHeightSearched)
|
|
535
536
|
);
|
|
536
537
|
// Return block ranges for blocks after _pendingBlockRanges and up to widestBlockRanges.
|
|
537
538
|
// If a chain is disabled or doesn't have a spoke pool client, return a range of 0
|
|
@@ -799,7 +800,7 @@ export class BundleDataClient {
|
|
|
799
800
|
// hasn't queried. This is because this function will usually be called
|
|
800
801
|
// in production with block ranges that were validated by
|
|
801
802
|
// DataworkerUtils.blockRangesAreInvalidForSpokeClients.
|
|
802
|
-
Math.min(queryBlock, spokePoolClients[deposit.destinationChainId].
|
|
803
|
+
Math.min(queryBlock, spokePoolClients[deposit.destinationChainId].latestHeightSearched)
|
|
803
804
|
);
|
|
804
805
|
};
|
|
805
806
|
|
|
@@ -1616,16 +1617,24 @@ export class BundleDataClient {
|
|
|
1616
1617
|
deposit: DepositWithBlock,
|
|
1617
1618
|
spokePoolClient: SpokePoolClient
|
|
1618
1619
|
): Promise<FillWithBlock | undefined> {
|
|
1619
|
-
if (
|
|
1620
|
-
|
|
1621
|
-
|
|
1620
|
+
if (isSvmSpokePoolClient(spokePoolClient)) {
|
|
1621
|
+
return await findSvmFillEvent(
|
|
1622
|
+
deposit,
|
|
1623
|
+
spokePoolClient.chainId,
|
|
1624
|
+
spokePoolClient.svmEventsClient,
|
|
1625
|
+
spokePoolClient.deploymentBlock,
|
|
1626
|
+
spokePoolClient.latestHeightSearched
|
|
1627
|
+
);
|
|
1628
|
+
} else if (isEVMSpokePoolClient(spokePoolClient)) {
|
|
1629
|
+
return await findEvmFillEvent(
|
|
1630
|
+
spokePoolClient.spokePool,
|
|
1631
|
+
deposit,
|
|
1632
|
+
spokePoolClient.deploymentBlock,
|
|
1633
|
+
spokePoolClient.latestHeightSearched
|
|
1634
|
+
);
|
|
1635
|
+
} else {
|
|
1636
|
+
throw new Error("Unsupported spoke pool client type");
|
|
1622
1637
|
}
|
|
1623
|
-
return await findFillEvent(
|
|
1624
|
-
spokePoolClient.spokePool,
|
|
1625
|
-
deposit,
|
|
1626
|
-
spokePoolClient.deploymentBlock,
|
|
1627
|
-
spokePoolClient.latestBlockSearched
|
|
1628
|
-
);
|
|
1629
1638
|
}
|
|
1630
1639
|
|
|
1631
1640
|
async getBundleBlockTimestamps(
|
|
@@ -1652,13 +1661,13 @@ export class BundleDataClient {
|
|
|
1652
1661
|
// contain blocks where the spoke pool client hasn't queried. This is because this function
|
|
1653
1662
|
// will usually be called in production with block ranges that were validated by
|
|
1654
1663
|
// DataworkerUtils.blockRangesAreInvalidForSpokeClients.
|
|
1655
|
-
const startBlockForChain = Math.min(_startBlockForChain, spokePoolClient.
|
|
1664
|
+
const startBlockForChain = Math.min(_startBlockForChain, spokePoolClient.latestHeightSearched);
|
|
1656
1665
|
// @dev Add 1 to the bundle end block. The thinking here is that there can be a gap between
|
|
1657
1666
|
// block timestamps in subsequent blocks. The bundle data client assumes that fill deadlines expire
|
|
1658
1667
|
// in exactly one bundle, therefore we must make sure that the bundle block timestamp for one bundle's
|
|
1659
1668
|
// end block is exactly equal to the bundle block timestamp for the next bundle's start block. This way
|
|
1660
1669
|
// there are no gaps in block timestamps between bundles.
|
|
1661
|
-
const endBlockForChain = Math.min(_endBlockForChain + 1, spokePoolClient.
|
|
1670
|
+
const endBlockForChain = Math.min(_endBlockForChain + 1, spokePoolClient.latestHeightSearched);
|
|
1662
1671
|
const [startTime, _endTime] = [
|
|
1663
1672
|
await spokePoolClient.getTimestampForBlock(startBlockForChain),
|
|
1664
1673
|
await spokePoolClient.getTimestampForBlock(endBlockForChain),
|
|
@@ -32,7 +32,7 @@ export function getWidestPossibleExpectedBlockRange(
|
|
|
32
32
|
// filled during the challenge period.
|
|
33
33
|
const latestPossibleBundleEndBlockNumbers = chainIdListForBundleEvaluationBlockNumbers.map(
|
|
34
34
|
(chainId: number, index) =>
|
|
35
|
-
spokeClients[chainId] && Math.max(spokeClients[chainId].
|
|
35
|
+
spokeClients[chainId] && Math.max(spokeClients[chainId].latestHeightSearched - endBlockBuffers[index], 0)
|
|
36
36
|
);
|
|
37
37
|
return chainIdListForBundleEvaluationBlockNumbers.map((chainId: number, index) => {
|
|
38
38
|
const lastEndBlockForChain = clients.hubPoolClient.getLatestBundleEndBlockForChain(
|
|
@@ -22,9 +22,9 @@ import {
|
|
|
22
22
|
TokenRunningBalance,
|
|
23
23
|
} from "../interfaces";
|
|
24
24
|
import * as lpFeeCalculator from "../lpFeeCalculator";
|
|
25
|
+
import { EVMBlockFinder } from "../arch/evm";
|
|
25
26
|
import {
|
|
26
27
|
BigNumber,
|
|
27
|
-
BlockFinder,
|
|
28
28
|
bnZero,
|
|
29
29
|
dedupArray,
|
|
30
30
|
EventSearchConfig,
|
|
@@ -97,7 +97,7 @@ export class HubPoolClient extends BaseAbstractClient {
|
|
|
97
97
|
protected pendingRootBundle: PendingRootBundle | undefined;
|
|
98
98
|
|
|
99
99
|
public currentTime: number | undefined;
|
|
100
|
-
public readonly blockFinder:
|
|
100
|
+
public readonly blockFinder: EVMBlockFinder;
|
|
101
101
|
|
|
102
102
|
constructor(
|
|
103
103
|
readonly logger: winston.Logger,
|
|
@@ -105,7 +105,7 @@ export class HubPoolClient extends BaseAbstractClient {
|
|
|
105
105
|
public configStoreClient: ConfigStoreClient,
|
|
106
106
|
public deploymentBlock = 0,
|
|
107
107
|
readonly chainId: number = 1,
|
|
108
|
-
eventSearchConfig: MakeOptional<EventSearchConfig, "
|
|
108
|
+
eventSearchConfig: MakeOptional<EventSearchConfig, "to"> = { from: 0, maxLookBack: 0 },
|
|
109
109
|
protected readonly configOverride: {
|
|
110
110
|
ignoredHubExecutedBundles: number[];
|
|
111
111
|
ignoredHubProposedBundles: number[];
|
|
@@ -117,11 +117,11 @@ export class HubPoolClient extends BaseAbstractClient {
|
|
|
117
117
|
cachingMechanism?: CachingMechanismInterface
|
|
118
118
|
) {
|
|
119
119
|
super(eventSearchConfig, cachingMechanism);
|
|
120
|
-
this.
|
|
121
|
-
this.
|
|
120
|
+
this.latestHeightSearched = Math.min(deploymentBlock - 1, 0);
|
|
121
|
+
this.firstHeightToSearch = eventSearchConfig.from;
|
|
122
122
|
|
|
123
123
|
const provider = this.hubPool.provider;
|
|
124
|
-
this.blockFinder = new
|
|
124
|
+
this.blockFinder = new EVMBlockFinder(provider);
|
|
125
125
|
}
|
|
126
126
|
|
|
127
127
|
protected hubPoolEventFilters(): Record<HubPoolEvent, EventFilter> {
|
|
@@ -254,7 +254,7 @@ export class HubPoolClient extends BaseAbstractClient {
|
|
|
254
254
|
return l2Token !== undefined;
|
|
255
255
|
}
|
|
256
256
|
|
|
257
|
-
l2TokenHasPoolRebalanceRoute(l2Token: string, l2ChainId: number, hubPoolBlock = this.
|
|
257
|
+
l2TokenHasPoolRebalanceRoute(l2Token: string, l2ChainId: number, hubPoolBlock = this.latestHeightSearched): boolean {
|
|
258
258
|
return Object.values(this.l1TokensToDestinationTokensWithBlock).some((destinationTokenMapping) => {
|
|
259
259
|
return Object.entries(destinationTokenMapping).some(([_l2ChainId, setPoolRebalanceRouteEvents]) => {
|
|
260
260
|
return setPoolRebalanceRouteEvents.some((e) => {
|
|
@@ -312,7 +312,7 @@ export class HubPoolClient extends BaseAbstractClient {
|
|
|
312
312
|
}
|
|
313
313
|
|
|
314
314
|
async getCurrentPoolUtilization(l1Token: string): Promise<BigNumber> {
|
|
315
|
-
const blockNumber = this.
|
|
315
|
+
const blockNumber = this.latestHeightSearched ?? (await this.hubPool.provider.getBlockNumber());
|
|
316
316
|
return await this.getUtilization(l1Token, blockNumber, bnZero, getCurrentTime(), 0);
|
|
317
317
|
}
|
|
318
318
|
|
|
@@ -523,7 +523,7 @@ export class HubPoolClient extends BaseAbstractClient {
|
|
|
523
523
|
chainIdA: number,
|
|
524
524
|
tokenB: string,
|
|
525
525
|
chainIdB: number,
|
|
526
|
-
hubPoolBlock = this.
|
|
526
|
+
hubPoolBlock = this.latestHeightSearched
|
|
527
527
|
): boolean {
|
|
528
528
|
if (
|
|
529
529
|
!this.l2TokenHasPoolRebalanceRoute(tokenA, chainIdA, hubPoolBlock) ||
|
|
@@ -719,7 +719,7 @@ export class HubPoolClient extends BaseAbstractClient {
|
|
|
719
719
|
if (n === 0) {
|
|
720
720
|
throw new Error("n cannot be 0");
|
|
721
721
|
}
|
|
722
|
-
if (!this.
|
|
722
|
+
if (!this.latestHeightSearched) {
|
|
723
723
|
throw new Error("HubPoolClient::getNthFullyExecutedRootBundle client not updated");
|
|
724
724
|
}
|
|
725
725
|
|
|
@@ -728,7 +728,7 @@ export class HubPoolClient extends BaseAbstractClient {
|
|
|
728
728
|
// If n is negative, then return the Nth latest executed bundle, otherwise return the Nth earliest
|
|
729
729
|
// executed bundle.
|
|
730
730
|
if (n < 0) {
|
|
731
|
-
let nextLatestMainnetBlock = startBlock ?? this.
|
|
731
|
+
let nextLatestMainnetBlock = startBlock ?? this.latestHeightSearched;
|
|
732
732
|
for (let i = 0; i < Math.abs(n); i++) {
|
|
733
733
|
bundleToReturn = this.getLatestFullyExecutedRootBundle(nextLatestMainnetBlock);
|
|
734
734
|
const bundleBlockNumber = bundleToReturn ? bundleToReturn.blockNumber : 0;
|
|
@@ -740,12 +740,12 @@ export class HubPoolClient extends BaseAbstractClient {
|
|
|
740
740
|
} else {
|
|
741
741
|
let nextStartBlock = startBlock ?? 0;
|
|
742
742
|
for (let i = 0; i < n; i++) {
|
|
743
|
-
bundleToReturn = this.getEarliestFullyExecutedRootBundle(this.
|
|
743
|
+
bundleToReturn = this.getEarliestFullyExecutedRootBundle(this.latestHeightSearched, nextStartBlock);
|
|
744
744
|
const bundleBlockNumber = bundleToReturn ? bundleToReturn.blockNumber : 0;
|
|
745
745
|
|
|
746
746
|
// Add 1 so that next `getEarliestFullyExecutedRootBundle` call filters out the root bundle we just found
|
|
747
747
|
// because its block number is < nextStartBlock.
|
|
748
|
-
nextStartBlock = Math.min(bundleBlockNumber + 1, this.
|
|
748
|
+
nextStartBlock = Math.min(bundleBlockNumber + 1, this.latestHeightSearched);
|
|
749
749
|
}
|
|
750
750
|
}
|
|
751
751
|
|
|
@@ -831,7 +831,7 @@ export class HubPoolClient extends BaseAbstractClient {
|
|
|
831
831
|
// instantiation. However, certain events generally must be queried back to HubPool genesis.
|
|
832
832
|
const overrideEvents = ["CrossChainContractsSet", "L1TokenEnabledForLiquidityProvision", "SetPoolRebalanceRoute"];
|
|
833
833
|
if (overrideEvents.includes(eventName) && !this.isUpdated) {
|
|
834
|
-
_searchConfig.
|
|
834
|
+
_searchConfig.from = this.deploymentBlock;
|
|
835
835
|
}
|
|
836
836
|
|
|
837
837
|
return {
|
|
@@ -853,7 +853,7 @@ export class HubPoolClient extends BaseAbstractClient {
|
|
|
853
853
|
const [multicallOutput, ...events] = await Promise.all([
|
|
854
854
|
hubPool.callStatic.multicall(
|
|
855
855
|
multicallFunctions.map((f) => hubPool.interface.encodeFunctionData(f)),
|
|
856
|
-
{ blockTag: searchConfig.
|
|
856
|
+
{ blockTag: searchConfig.to }
|
|
857
857
|
),
|
|
858
858
|
...eventSearchConfigs.map((config) => paginatedEventQuery(hubPool, config.filter, config.searchConfig)),
|
|
859
859
|
]);
|
|
@@ -874,7 +874,7 @@ export class HubPoolClient extends BaseAbstractClient {
|
|
|
874
874
|
success: true,
|
|
875
875
|
currentTime,
|
|
876
876
|
pendingRootBundleProposal,
|
|
877
|
-
searchEndBlock: searchConfig.
|
|
877
|
+
searchEndBlock: searchConfig.to,
|
|
878
878
|
events: _events,
|
|
879
879
|
};
|
|
880
880
|
}
|
|
@@ -1087,9 +1087,9 @@ export class HubPoolClient extends BaseAbstractClient {
|
|
|
1087
1087
|
}
|
|
1088
1088
|
|
|
1089
1089
|
this.currentTime = currentTime;
|
|
1090
|
-
this.
|
|
1091
|
-
this.
|
|
1092
|
-
this.eventSearchConfig.
|
|
1090
|
+
this.latestHeightSearched = searchEndBlock;
|
|
1091
|
+
this.firstHeightToSearch = update.searchEndBlock + 1; // Next iteration should start off from where this one ended.
|
|
1092
|
+
this.eventSearchConfig.to = undefined; // Caller can re-set on subsequent updates if necessary.
|
|
1093
1093
|
|
|
1094
1094
|
this.isUpdated = true;
|
|
1095
1095
|
this.logger.debug({ at: "HubPoolClient::update", message: "HubPool client updated!", searchEndBlock });
|
|
@@ -39,20 +39,17 @@ export class EVMSpokePoolClient extends SpokePoolClient {
|
|
|
39
39
|
hubPoolClient: HubPoolClient | null,
|
|
40
40
|
chainId: number,
|
|
41
41
|
deploymentBlock: number,
|
|
42
|
-
eventSearchConfig: MakeOptional<EventSearchConfig, "
|
|
42
|
+
eventSearchConfig: MakeOptional<EventSearchConfig, "to"> = { from: 0, maxLookBack: 0 }
|
|
43
43
|
) {
|
|
44
44
|
super(logger, hubPoolClient, chainId, deploymentBlock, eventSearchConfig);
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
public override relayFillStatus(relayData: RelayData,
|
|
48
|
-
return relayFillStatus(this.spokePool, relayData,
|
|
47
|
+
public override relayFillStatus(relayData: RelayData, atHeight?: number): Promise<FillStatus> {
|
|
48
|
+
return relayFillStatus(this.spokePool, relayData, atHeight, this.chainId);
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
public override fillStatusArray(
|
|
52
|
-
relayData
|
|
53
|
-
blockTag?: number | "latest"
|
|
54
|
-
): Promise<(FillStatus | undefined)[]> {
|
|
55
|
-
return fillStatusArray(this.spokePool, relayData, blockTag);
|
|
51
|
+
public override fillStatusArray(relayData: RelayData[], atHeight?: number): Promise<(FillStatus | undefined)[]> {
|
|
52
|
+
return fillStatusArray(this.spokePool, relayData, atHeight);
|
|
56
53
|
}
|
|
57
54
|
|
|
58
55
|
public override getMaxFillDeadlineInRange(startBlock: number, endBlock: number): Promise<number> {
|
|
@@ -89,7 +86,7 @@ export class EVMSpokePoolClient extends SpokePoolClient {
|
|
|
89
86
|
// However, certain events have special overriding requirements to their search ranges:
|
|
90
87
|
// - EnabledDepositRoute: The full history is always required, so override the requested fromBlock.
|
|
91
88
|
if (eventName === "EnabledDepositRoute" && !this.isUpdated) {
|
|
92
|
-
_searchConfig.
|
|
89
|
+
_searchConfig.from = this.deploymentBlock;
|
|
93
90
|
}
|
|
94
91
|
|
|
95
92
|
return {
|
|
@@ -110,7 +107,7 @@ export class EVMSpokePoolClient extends SpokePoolClient {
|
|
|
110
107
|
const [multicallOutput, ...events] = await Promise.all([
|
|
111
108
|
spokePool.callStatic.multicall(
|
|
112
109
|
multicallFunctions.map((f) => spokePool.interface.encodeFunctionData(f)),
|
|
113
|
-
{ blockTag: searchConfig.
|
|
110
|
+
{ blockTag: searchConfig.to }
|
|
114
111
|
),
|
|
115
112
|
...eventSearchConfigs.map((config) => paginatedEventQuery(this.spokePool, config.filter, config.searchConfig)),
|
|
116
113
|
]);
|
|
@@ -124,17 +121,22 @@ export class EVMSpokePoolClient extends SpokePoolClient {
|
|
|
124
121
|
const errMsg = BigNumber.isBigNumber(currentTime)
|
|
125
122
|
? `currentTime: ${currentTime} < ${toBN(this.currentTime)}`
|
|
126
123
|
: `currentTime is not a BigNumber: ${JSON.stringify(currentTime)}`;
|
|
127
|
-
throw new Error(`
|
|
124
|
+
throw new Error(`EVMSpokePoolClient::update: ${errMsg}`);
|
|
128
125
|
}
|
|
129
126
|
|
|
130
127
|
// Sort all events to ensure they are stored in a consistent order.
|
|
131
128
|
events.forEach((events) => sortEventsAscendingInPlace(events.map(logToSortableEvent)));
|
|
132
129
|
|
|
130
|
+
// Map events to SortableEvent
|
|
131
|
+
const eventsWithBlockNumber = events.map((eventList) =>
|
|
132
|
+
eventList.map((event) => spreadEventWithBlockNumber(event))
|
|
133
|
+
);
|
|
134
|
+
|
|
133
135
|
return {
|
|
134
136
|
success: true,
|
|
135
137
|
currentTime: currentTime.toNumber(), // uint32
|
|
136
|
-
searchEndBlock: searchConfig.
|
|
137
|
-
events,
|
|
138
|
+
searchEndBlock: searchConfig.to,
|
|
139
|
+
events: eventsWithBlockNumber,
|
|
138
140
|
};
|
|
139
141
|
}
|
|
140
142
|
|
|
@@ -149,31 +151,31 @@ export class EVMSpokePoolClient extends SpokePoolClient {
|
|
|
149
151
|
}
|
|
150
152
|
|
|
151
153
|
// No deposit found; revert to searching for it.
|
|
152
|
-
const upperBound = this.
|
|
153
|
-
const
|
|
154
|
+
const upperBound = this.latestHeightSearched || undefined; // Don't permit block 0 as the high block.
|
|
155
|
+
const from = await findDepositBlock(this.spokePool, depositId, this.deploymentBlock, upperBound);
|
|
154
156
|
const chain = getNetworkName(this.chainId);
|
|
155
|
-
if (!
|
|
157
|
+
if (!from) {
|
|
156
158
|
const reason =
|
|
157
159
|
`Unable to find ${chain} depositId ${depositId}` +
|
|
158
160
|
` within blocks [${this.deploymentBlock}, ${upperBound ?? "latest"}].`;
|
|
159
161
|
return { found: false, code: InvalidFill.DepositIdNotFound, reason };
|
|
160
162
|
}
|
|
161
163
|
|
|
162
|
-
const
|
|
164
|
+
const to = from;
|
|
163
165
|
const tStart = Date.now();
|
|
164
166
|
// Check both V3FundsDeposited and FundsDeposited events to look for a specified depositId.
|
|
165
|
-
const {
|
|
167
|
+
const { maxLookBack } = this.eventSearchConfig;
|
|
166
168
|
const query = (
|
|
167
169
|
await Promise.all([
|
|
168
170
|
paginatedEventQuery(
|
|
169
171
|
this.spokePool,
|
|
170
172
|
this.spokePool.filters.V3FundsDeposited(null, null, null, null, null, depositId),
|
|
171
|
-
{
|
|
173
|
+
{ from, to, maxLookBack }
|
|
172
174
|
),
|
|
173
175
|
paginatedEventQuery(
|
|
174
176
|
this.spokePool,
|
|
175
177
|
this.spokePool.filters.FundsDeposited(null, null, null, null, null, depositId),
|
|
176
|
-
{
|
|
178
|
+
{ from, to, maxLookBack }
|
|
177
179
|
),
|
|
178
180
|
])
|
|
179
181
|
).flat();
|
|
@@ -184,7 +186,7 @@ export class EVMSpokePoolClient extends SpokePoolClient {
|
|
|
184
186
|
return {
|
|
185
187
|
found: false,
|
|
186
188
|
code: InvalidFill.DepositIdNotFound,
|
|
187
|
-
reason: `${chain} depositId ${depositId} not found at block ${
|
|
189
|
+
reason: `${chain} depositId ${depositId} not found at block ${from}.`,
|
|
188
190
|
};
|
|
189
191
|
}
|
|
190
192
|
|