@across-protocol/sdk 4.1.63 → 4.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/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/coingecko/Coingecko.d.ts +3 -2
- package/dist/cjs/coingecko/Coingecko.js +11 -3
- package/dist/cjs/coingecko/Coingecko.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/TokenUtils.js +4 -1
- package/dist/cjs/utils/TokenUtils.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/coingecko/Coingecko.d.ts +3 -2
- package/dist/esm/coingecko/Coingecko.js +12 -3
- package/dist/esm/coingecko/Coingecko.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/TokenUtils.d.ts +12 -0
- package/dist/esm/utils/TokenUtils.js +6 -3
- package/dist/esm/utils/TokenUtils.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/coingecko/Coingecko.d.ts +3 -2
- package/dist/types/coingecko/Coingecko.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/TokenUtils.d.ts +12 -0
- package/dist/types/utils/TokenUtils.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/coingecko/Coingecko.ts +12 -3
- 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 +47 -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/TokenUtils.ts +6 -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
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import { Address, Rpc, RpcTransport, SolanaRpcApiFromTransport } from "@solana/kit";
|
|
2
|
+
import winston from "winston";
|
|
3
|
+
import {
|
|
4
|
+
SVMEventNames,
|
|
5
|
+
unwrapEventData,
|
|
6
|
+
getFillDeadline,
|
|
7
|
+
getTimestampForSlot,
|
|
8
|
+
getStatePda,
|
|
9
|
+
SvmCpiEventsClient,
|
|
10
|
+
findDeposit,
|
|
11
|
+
relayFillStatus,
|
|
12
|
+
fillStatusArray,
|
|
13
|
+
} from "../../arch/svm";
|
|
14
|
+
import { FillStatus, RelayData, SortableEvent } from "../../interfaces";
|
|
15
|
+
import {
|
|
16
|
+
BigNumber,
|
|
17
|
+
DepositSearchResult,
|
|
18
|
+
EventSearchConfig,
|
|
19
|
+
InvalidFill,
|
|
20
|
+
isZeroAddress,
|
|
21
|
+
MakeOptional,
|
|
22
|
+
sortEventsAscendingInPlace,
|
|
23
|
+
} from "../../utils";
|
|
24
|
+
import { isUpdateFailureReason } from "../BaseAbstractClient";
|
|
25
|
+
import { HubPoolClient } from "../HubPoolClient";
|
|
26
|
+
import { knownEventNames, SpokePoolClient, SpokePoolUpdate } from "./SpokePoolClient";
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* SvmSpokePoolClient is a client for the SVM SpokePool program. It extends the base SpokePoolClient
|
|
30
|
+
* and implements the abstract methods required for interacting with an SVM Spoke Pool.
|
|
31
|
+
*/
|
|
32
|
+
export class SvmSpokePoolClient extends SpokePoolClient {
|
|
33
|
+
/**
|
|
34
|
+
* Protected constructor. Use the async create() method to instantiate.
|
|
35
|
+
*/
|
|
36
|
+
protected constructor(
|
|
37
|
+
logger: winston.Logger,
|
|
38
|
+
hubPoolClient: HubPoolClient | null,
|
|
39
|
+
chainId: number,
|
|
40
|
+
deploymentSlot: bigint, // Using slot instead of block number for SVM
|
|
41
|
+
eventSearchConfig: MakeOptional<EventSearchConfig, "to">,
|
|
42
|
+
public svmEventsClient: SvmCpiEventsClient,
|
|
43
|
+
protected programId: Address,
|
|
44
|
+
protected statePda: Address
|
|
45
|
+
) {
|
|
46
|
+
// Convert deploymentSlot to number for base class, might need refinement
|
|
47
|
+
super(logger, hubPoolClient, chainId, Number(deploymentSlot), eventSearchConfig);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Factory method to asynchronously create an instance of SvmSpokePoolClient.
|
|
52
|
+
*/
|
|
53
|
+
public static async create(
|
|
54
|
+
logger: winston.Logger,
|
|
55
|
+
hubPoolClient: HubPoolClient | null,
|
|
56
|
+
chainId: number,
|
|
57
|
+
deploymentSlot: bigint,
|
|
58
|
+
eventSearchConfig: MakeOptional<EventSearchConfig, "to"> = { from: 0, maxLookBack: 0 }, // Provide default
|
|
59
|
+
rpc: Rpc<SolanaRpcApiFromTransport<RpcTransport>>
|
|
60
|
+
): Promise<SvmSpokePoolClient> {
|
|
61
|
+
const svmEventsClient = await SvmCpiEventsClient.create(rpc);
|
|
62
|
+
const programId = svmEventsClient.getProgramAddress();
|
|
63
|
+
const statePda = await getStatePda(programId);
|
|
64
|
+
return new SvmSpokePoolClient(
|
|
65
|
+
logger,
|
|
66
|
+
hubPoolClient,
|
|
67
|
+
chainId,
|
|
68
|
+
deploymentSlot,
|
|
69
|
+
eventSearchConfig,
|
|
70
|
+
svmEventsClient,
|
|
71
|
+
programId,
|
|
72
|
+
statePda
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Factory method to asynchronously create an instance of SvmSpokePoolClient with an existing event client.
|
|
78
|
+
*/
|
|
79
|
+
public static async createWithExistingEventClient(
|
|
80
|
+
logger: winston.Logger,
|
|
81
|
+
hubPoolClient: HubPoolClient | null,
|
|
82
|
+
chainId: number,
|
|
83
|
+
deploymentSlot: bigint,
|
|
84
|
+
eventSearchConfig: MakeOptional<EventSearchConfig, "to"> = { from: 0, maxLookBack: 0 }, // Provide default
|
|
85
|
+
eventClient: SvmCpiEventsClient
|
|
86
|
+
) {
|
|
87
|
+
const programId = eventClient.getProgramAddress();
|
|
88
|
+
const statePda = await getStatePda(programId);
|
|
89
|
+
return new SvmSpokePoolClient(
|
|
90
|
+
logger,
|
|
91
|
+
hubPoolClient,
|
|
92
|
+
chainId,
|
|
93
|
+
deploymentSlot,
|
|
94
|
+
eventSearchConfig,
|
|
95
|
+
eventClient,
|
|
96
|
+
programId,
|
|
97
|
+
statePda
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
public _queryableEventNames(): string[] {
|
|
102
|
+
// We want to take the internal event names relevant to
|
|
103
|
+
// the SVM SpokePoolClient and filter them against the
|
|
104
|
+
// knownEventNames list that we reference in practice
|
|
105
|
+
const internalEventNames = Object.values(SVMEventNames);
|
|
106
|
+
return internalEventNames.filter((e) => knownEventNames.includes(e));
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Performs an update to refresh the state of this client by querying SVM events.
|
|
111
|
+
*/
|
|
112
|
+
protected async _update(eventsToQuery: string[]): Promise<SpokePoolUpdate> {
|
|
113
|
+
const searchConfig = await this.updateSearchConfig(this.svmEventsClient.getRpc());
|
|
114
|
+
if (isUpdateFailureReason(searchConfig)) {
|
|
115
|
+
const reason = searchConfig;
|
|
116
|
+
return { success: false, reason };
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const deploymentSlot = BigInt(this.deploymentBlock);
|
|
120
|
+
|
|
121
|
+
const eventSearchConfigs = eventsToQuery.map((eventName) => {
|
|
122
|
+
if (!this._queryableEventNames().includes(eventName)) {
|
|
123
|
+
throw new Error(`SpokePoolClient: Cannot query unrecognised SpokePool event name: ${eventName}`);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
const _searchConfig = { ...searchConfig }; // shallow copy
|
|
127
|
+
|
|
128
|
+
// By default, an event's query range is controlled by the `eventSearchConfig` passed in during instantiation.
|
|
129
|
+
// However, certain events have special overriding requirements to their search ranges:
|
|
130
|
+
// - EnabledDepositRoute: The full history is always required, so override the requested fromBlock.
|
|
131
|
+
if (eventName === "EnabledDepositRoute" && !this.isUpdated) {
|
|
132
|
+
_searchConfig.from = Number(deploymentSlot);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
return _searchConfig as EventSearchConfig;
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
const spokePoolAddress = this.svmEventsClient.getProgramAddress();
|
|
139
|
+
|
|
140
|
+
this.log("debug", `Updating SpokePool client for chain ${this.chainId}`, {
|
|
141
|
+
eventsToQuery,
|
|
142
|
+
searchConfig,
|
|
143
|
+
spokePool: spokePoolAddress,
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
const timerStart = Date.now();
|
|
147
|
+
|
|
148
|
+
const [currentTime, ...eventsQueried] = await Promise.all([
|
|
149
|
+
this.svmEventsClient.getRpc().getBlockTime(BigInt(searchConfig.to)).send(),
|
|
150
|
+
...eventsToQuery.map(async (eventName, idx) => {
|
|
151
|
+
const config = eventSearchConfigs[idx];
|
|
152
|
+
const events = await this.svmEventsClient.queryEvents(
|
|
153
|
+
eventName as SVMEventNames,
|
|
154
|
+
BigInt(config.from),
|
|
155
|
+
BigInt(config.to),
|
|
156
|
+
{
|
|
157
|
+
limit: config.maxLookBack,
|
|
158
|
+
}
|
|
159
|
+
);
|
|
160
|
+
return events.map(
|
|
161
|
+
(event): SortableEvent => ({
|
|
162
|
+
txnRef: event.signature,
|
|
163
|
+
blockNumber: Number(event.slot),
|
|
164
|
+
txnIndex: 0,
|
|
165
|
+
logIndex: 0,
|
|
166
|
+
...(unwrapEventData(event.data) as Record<string, unknown>),
|
|
167
|
+
})
|
|
168
|
+
);
|
|
169
|
+
}),
|
|
170
|
+
]);
|
|
171
|
+
this.log("debug", `Time to query new events from RPC for ${this.chainId}: ${Date.now() - timerStart} ms`);
|
|
172
|
+
if (currentTime < this.currentTime) {
|
|
173
|
+
const errMsg = `currentTime: ${currentTime} < ${this.currentTime}`;
|
|
174
|
+
throw new Error(`SvmSpokePoolClient::update: ${errMsg}`);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
// Sort all events to ensure they are stored in a consistent order.
|
|
178
|
+
eventsQueried.forEach((events) => sortEventsAscendingInPlace(events));
|
|
179
|
+
|
|
180
|
+
return {
|
|
181
|
+
success: true,
|
|
182
|
+
currentTime: Number(currentTime), // uint32
|
|
183
|
+
searchEndBlock: searchConfig.to,
|
|
184
|
+
events: eventsQueried,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Retrieves the fill deadline buffer fetched from the State PDA.
|
|
190
|
+
* @note This function assumes that fill deadline buffer is a constant value in svm environments.
|
|
191
|
+
*/
|
|
192
|
+
public override getMaxFillDeadlineInRange(_startSlot: number, _endSlot: number): Promise<number> {
|
|
193
|
+
return getFillDeadline(this.svmEventsClient.getRpc(), this.statePda);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Retrieves the timestamp for a given SVM slot number.
|
|
198
|
+
*/
|
|
199
|
+
public override getTimestampForBlock(slot: number): Promise<number> {
|
|
200
|
+
return getTimestampForSlot(this.svmEventsClient.getRpc(), slot);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Retrieves the timestamp for a given SVM slot number.
|
|
205
|
+
* @note This function uses the same underlying function as getTimestampForBlock.
|
|
206
|
+
* It is kept for consistency with the EVM SpokePoolClient.
|
|
207
|
+
*/
|
|
208
|
+
public getTimeAt(slot: number): Promise<number> {
|
|
209
|
+
return getTimestampForSlot(this.svmEventsClient.getRpc(), slot);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Finds a deposit based on its deposit ID on the SVM chain.
|
|
214
|
+
*/
|
|
215
|
+
public async findDeposit(depositId: BigNumber): Promise<DepositSearchResult> {
|
|
216
|
+
const deposit = await findDeposit(this.svmEventsClient, depositId);
|
|
217
|
+
if (!deposit) {
|
|
218
|
+
return {
|
|
219
|
+
found: false,
|
|
220
|
+
code: InvalidFill.DepositIdNotFound,
|
|
221
|
+
reason: `Deposit with ID ${depositId} not found`,
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
// Because we have additional context about this deposit, we can enrich it
|
|
225
|
+
// with additional information.
|
|
226
|
+
return {
|
|
227
|
+
found: true,
|
|
228
|
+
deposit: {
|
|
229
|
+
...deposit,
|
|
230
|
+
quoteBlockNumber: await this.getBlockNumber(Number(deposit.quoteTimestamp)),
|
|
231
|
+
originChainId: this.chainId,
|
|
232
|
+
fromLiteChain: this.isOriginLiteChain(deposit),
|
|
233
|
+
toLiteChain: this.isDestinationLiteChain(deposit),
|
|
234
|
+
outputToken: isZeroAddress(deposit.outputToken)
|
|
235
|
+
? this.getDestinationTokenForDeposit(deposit)
|
|
236
|
+
: deposit.outputToken,
|
|
237
|
+
},
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Retrieves the fill status for a given relay data from the SVM chain.
|
|
243
|
+
*/
|
|
244
|
+
public override relayFillStatus(
|
|
245
|
+
relayData: RelayData,
|
|
246
|
+
atHeight?: number,
|
|
247
|
+
destinationChainId?: number
|
|
248
|
+
): Promise<FillStatus> {
|
|
249
|
+
destinationChainId ??= this.chainId;
|
|
250
|
+
return relayFillStatus(this.programId, relayData, destinationChainId, this.svmEventsClient, atHeight);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/**
|
|
254
|
+
* Retrieves the fill status for an array of given relay data.
|
|
255
|
+
* @param relayData The array relay data to retrieve the fill status for.
|
|
256
|
+
* @param atHeight The slot at which to query the fill status.
|
|
257
|
+
* @returns The fill status for each of the given relay data.
|
|
258
|
+
*/
|
|
259
|
+
public fillStatusArray(
|
|
260
|
+
relayData: RelayData[],
|
|
261
|
+
atHeight?: number,
|
|
262
|
+
destinationChainId?: number
|
|
263
|
+
): Promise<(FillStatus | undefined)[]> {
|
|
264
|
+
// @note: deploymentBlock actually refers to the deployment slot. Also, blockTag should be a slot number.
|
|
265
|
+
destinationChainId ??= this.chainId;
|
|
266
|
+
return fillStatusArray(this.programId, relayData, destinationChainId, this.svmEventsClient, atHeight, this.logger);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
@@ -18,25 +18,22 @@ import {
|
|
|
18
18
|
toAddress,
|
|
19
19
|
validateFillForDeposit,
|
|
20
20
|
chainIsEvm,
|
|
21
|
+
chainIsProd,
|
|
21
22
|
} from "../../utils";
|
|
22
|
-
import {
|
|
23
|
-
duplicateEvent,
|
|
24
|
-
sortEventsAscendingInPlace,
|
|
25
|
-
spreadEvent,
|
|
26
|
-
spreadEventWithBlockNumber,
|
|
27
|
-
} from "../../utils/EventUtils";
|
|
23
|
+
import { duplicateEvent, sortEventsAscendingInPlace } from "../../utils/EventUtils";
|
|
28
24
|
import { ZERO_ADDRESS } from "../../constants";
|
|
29
25
|
import {
|
|
30
26
|
Deposit,
|
|
31
27
|
DepositWithBlock,
|
|
28
|
+
EnabledDepositRouteWithBlock,
|
|
32
29
|
Fill,
|
|
33
30
|
FillStatus,
|
|
34
31
|
FillWithBlock,
|
|
35
|
-
Log,
|
|
36
32
|
RelayData,
|
|
37
33
|
RelayerRefundExecutionWithBlock,
|
|
38
34
|
RootBundleRelayWithBlock,
|
|
39
35
|
SlowFillRequestWithBlock,
|
|
36
|
+
SortableEvent,
|
|
40
37
|
SpeedUpWithBlock,
|
|
41
38
|
TokensBridged,
|
|
42
39
|
} from "../../interfaces";
|
|
@@ -48,7 +45,7 @@ import { HubPoolClient } from "../HubPoolClient";
|
|
|
48
45
|
export type SpokePoolUpdateSuccess = {
|
|
49
46
|
success: true;
|
|
50
47
|
currentTime: number;
|
|
51
|
-
events:
|
|
48
|
+
events: SortableEvent[][];
|
|
52
49
|
searchEndBlock: number;
|
|
53
50
|
};
|
|
54
51
|
export type SpokePoolUpdateFailure = {
|
|
@@ -105,11 +102,11 @@ export abstract class SpokePoolClient extends BaseAbstractClient {
|
|
|
105
102
|
readonly hubPoolClient: HubPoolClient | null,
|
|
106
103
|
readonly chainId: number,
|
|
107
104
|
public deploymentBlock: number,
|
|
108
|
-
eventSearchConfig: MakeOptional<EventSearchConfig, "
|
|
105
|
+
eventSearchConfig: MakeOptional<EventSearchConfig, "to"> = { from: 0, maxLookBack: 0 }
|
|
109
106
|
) {
|
|
110
107
|
super(eventSearchConfig);
|
|
111
|
-
this.
|
|
112
|
-
this.
|
|
108
|
+
this.firstHeightToSearch = eventSearchConfig.from;
|
|
109
|
+
this.latestHeightSearched = 0;
|
|
113
110
|
this.configStoreClient = hubPoolClient?.configStoreClient;
|
|
114
111
|
}
|
|
115
112
|
|
|
@@ -353,7 +350,7 @@ export abstract class SpokePoolClient extends BaseAbstractClient {
|
|
|
353
350
|
fillCount: number;
|
|
354
351
|
invalidFills: FillWithBlock[];
|
|
355
352
|
} {
|
|
356
|
-
const { outputAmount } = deposit;
|
|
353
|
+
const { outputAmount, originChainId } = deposit;
|
|
357
354
|
const fillsForDeposit = this.depositHashesToFills[this.getDepositHash(deposit)];
|
|
358
355
|
// If no fills then the full amount is remaining.
|
|
359
356
|
if (fillsForDeposit === undefined || fillsForDeposit.length === 0) {
|
|
@@ -373,7 +370,7 @@ export abstract class SpokePoolClient extends BaseAbstractClient {
|
|
|
373
370
|
const { chainToSendRefundTo: repaymentChainId } = getRefundInformationFromFill(
|
|
374
371
|
fillRepaymentData,
|
|
375
372
|
this.hubPoolClient!,
|
|
376
|
-
this.hubPoolClient!.
|
|
373
|
+
this.hubPoolClient!.latestHeightSearched
|
|
377
374
|
);
|
|
378
375
|
// In order to keep this function sync, we can't call verifyFillRepayment so we'll log any fills where
|
|
379
376
|
// the filler-specified repayment chain and repayment address is not a valid repayment upon
|
|
@@ -409,8 +406,10 @@ export abstract class SpokePoolClient extends BaseAbstractClient {
|
|
|
409
406
|
}
|
|
410
407
|
return newInvalidFill;
|
|
411
408
|
});
|
|
409
|
+
// Log invalid and unrepayable fills as warns if we are on a production network.
|
|
410
|
+
const logLevel = chainIsProd(originChainId) ? "warn" : "debug";
|
|
412
411
|
if (invalidFillsForDeposit.length > 0) {
|
|
413
|
-
this.logger
|
|
412
|
+
this.logger[logLevel]({
|
|
414
413
|
at: "SpokePoolClient",
|
|
415
414
|
chainId: this.chainId,
|
|
416
415
|
message: "Invalid fills found matching deposit ID",
|
|
@@ -421,7 +420,7 @@ export abstract class SpokePoolClient extends BaseAbstractClient {
|
|
|
421
420
|
}
|
|
422
421
|
const unrepayableFillsForDeposit = unrepayableFills.filter((x) => x.depositId.eq(deposit.depositId));
|
|
423
422
|
if (unrepayableFillsForDeposit.length > 0) {
|
|
424
|
-
this.logger
|
|
423
|
+
this.logger[logLevel]({
|
|
425
424
|
at: "SpokePoolClient",
|
|
426
425
|
chainId: this.chainId,
|
|
427
426
|
message: "Unrepayable fills found where we need to switch repayment address and or chain",
|
|
@@ -486,7 +485,7 @@ export abstract class SpokePoolClient extends BaseAbstractClient {
|
|
|
486
485
|
* @see _update
|
|
487
486
|
*/
|
|
488
487
|
public async update(eventsToQuery = this._queryableEventNames()): Promise<void> {
|
|
489
|
-
const duplicateEvents:
|
|
488
|
+
const duplicateEvents: SortableEvent[] = [];
|
|
490
489
|
if (this.hubPoolClient !== null && !this.hubPoolClient.isUpdated) {
|
|
491
490
|
throw new Error("HubPoolClient not updated");
|
|
492
491
|
}
|
|
@@ -498,14 +497,14 @@ export abstract class SpokePoolClient extends BaseAbstractClient {
|
|
|
498
497
|
const { events: queryResults, currentTime, searchEndBlock } = update;
|
|
499
498
|
|
|
500
499
|
if (eventsToQuery.includes("TokensBridged")) {
|
|
501
|
-
for (const event of queryResults[eventsToQuery.indexOf("TokensBridged")]) {
|
|
502
|
-
this.tokensBridged.push(
|
|
500
|
+
for (const event of queryResults[eventsToQuery.indexOf("TokensBridged")] as TokensBridged[]) {
|
|
501
|
+
this.tokensBridged.push(event);
|
|
503
502
|
}
|
|
504
503
|
}
|
|
505
504
|
|
|
506
505
|
// Performs the indexing of a deposit-like spoke pool event.
|
|
507
506
|
const queryDepositEvents = async (eventName: string) => {
|
|
508
|
-
const depositEvents = queryResults[eventsToQuery.indexOf(eventName)] ?? [];
|
|
507
|
+
const depositEvents = (queryResults[eventsToQuery.indexOf(eventName)] ?? []) as DepositWithBlock[];
|
|
509
508
|
if (depositEvents.length > 0) {
|
|
510
509
|
this.log(
|
|
511
510
|
"debug",
|
|
@@ -518,22 +517,20 @@ export abstract class SpokePoolClient extends BaseAbstractClient {
|
|
|
518
517
|
|
|
519
518
|
// For each deposit, resolve its quoteTimestamp to a block number on the HubPool.
|
|
520
519
|
// Don't bother filtering for uniqueness; the HubPoolClient handles this efficienctly.
|
|
521
|
-
const quoteBlockNumbers = await this.getBlockNumbers(
|
|
522
|
-
depositEvents.map(({ args }) => Number(args["quoteTimestamp"]))
|
|
523
|
-
);
|
|
520
|
+
const quoteBlockNumbers = await this.getBlockNumbers(depositEvents.map((e) => e.quoteTimestamp));
|
|
524
521
|
for (const event of depositEvents) {
|
|
525
|
-
const quoteBlockNumber = quoteBlockNumbers[Number(event.
|
|
522
|
+
const quoteBlockNumber = quoteBlockNumbers[Number(event.quoteTimestamp)];
|
|
526
523
|
|
|
527
524
|
// Derive and append the common properties that are not part of the onchain event.
|
|
528
525
|
const deposit = {
|
|
529
|
-
...
|
|
530
|
-
messageHash: getMessageHash(event.
|
|
526
|
+
...event,
|
|
527
|
+
messageHash: getMessageHash(event.message),
|
|
531
528
|
quoteBlockNumber,
|
|
532
529
|
originChainId: this.chainId,
|
|
533
530
|
// The following properties are placeholders to be updated immediately.
|
|
534
531
|
fromLiteChain: true,
|
|
535
532
|
toLiteChain: true,
|
|
536
|
-
}
|
|
533
|
+
};
|
|
537
534
|
|
|
538
535
|
deposit.fromLiteChain = this.isOriginLiteChain(deposit);
|
|
539
536
|
deposit.toLiteChain = this.isDestinationLiteChain(deposit);
|
|
@@ -564,10 +561,10 @@ export abstract class SpokePoolClient extends BaseAbstractClient {
|
|
|
564
561
|
|
|
565
562
|
// Performs indexing of a "speed up deposit"-like event.
|
|
566
563
|
const querySpeedUpDepositEvents = (eventName: string) => {
|
|
567
|
-
const speedUpEvents = queryResults[eventsToQuery.indexOf(eventName)] ?? [];
|
|
564
|
+
const speedUpEvents = (queryResults[eventsToQuery.indexOf(eventName)] ?? []) as SpeedUpWithBlock[];
|
|
568
565
|
|
|
569
566
|
for (const event of speedUpEvents) {
|
|
570
|
-
const speedUp = { ...
|
|
567
|
+
const speedUp = { ...event, originChainId: this.chainId };
|
|
571
568
|
assign(this.speedUps, [speedUp.depositor, speedUp.depositId.toString()], [speedUp]);
|
|
572
569
|
|
|
573
570
|
// Find deposit hash matching this speed up event and update the deposit data associated with the hash,
|
|
@@ -592,12 +589,12 @@ export abstract class SpokePoolClient extends BaseAbstractClient {
|
|
|
592
589
|
|
|
593
590
|
// Performs indexing of "requested slow fill"-like events.
|
|
594
591
|
const queryRequestedSlowFillEvents = (eventName: string) => {
|
|
595
|
-
const slowFillRequests = queryResults[eventsToQuery.indexOf(eventName)];
|
|
592
|
+
const slowFillRequests = (queryResults[eventsToQuery.indexOf(eventName)] ?? []) as SlowFillRequestWithBlock[];
|
|
596
593
|
for (const event of slowFillRequests) {
|
|
597
594
|
const slowFillRequest = {
|
|
598
|
-
...
|
|
595
|
+
...event,
|
|
599
596
|
destinationChainId: this.chainId,
|
|
600
|
-
}
|
|
597
|
+
};
|
|
601
598
|
|
|
602
599
|
if (eventName === "RequestedV3SlowFill") {
|
|
603
600
|
slowFillRequest.messageHash = getMessageHash(slowFillRequest.message);
|
|
@@ -623,7 +620,7 @@ export abstract class SpokePoolClient extends BaseAbstractClient {
|
|
|
623
620
|
|
|
624
621
|
// Performs indexing of filled relay-like events.
|
|
625
622
|
const queryFilledRelayEvents = (eventName: string) => {
|
|
626
|
-
const fillEvents = queryResults[eventsToQuery.indexOf(eventName)] ?? [];
|
|
623
|
+
const fillEvents = (queryResults[eventsToQuery.indexOf(eventName)] ?? []) as FillWithBlock[];
|
|
627
624
|
|
|
628
625
|
if (fillEvents.length > 0) {
|
|
629
626
|
this.log("debug", `Using ${fillEvents.length} newly queried ${eventName} events for chain ${this.chainId}`, {
|
|
@@ -635,13 +632,13 @@ export abstract class SpokePoolClient extends BaseAbstractClient {
|
|
|
635
632
|
// test that the types are complete. A broader change in strategy for safely unpacking events will be introduced.
|
|
636
633
|
for (const event of fillEvents) {
|
|
637
634
|
const fill = {
|
|
638
|
-
...
|
|
635
|
+
...event,
|
|
639
636
|
destinationChainId: this.chainId,
|
|
640
|
-
}
|
|
637
|
+
};
|
|
641
638
|
|
|
642
639
|
if (eventName === "FilledV3Relay") {
|
|
643
|
-
fill.messageHash = getMessageHash(event.
|
|
644
|
-
fill.relayExecutionInfo.updatedMessageHash = getMessageHash(event.
|
|
640
|
+
fill.messageHash = getMessageHash((event as unknown as { message: string }).message);
|
|
641
|
+
fill.relayExecutionInfo.updatedMessageHash = getMessageHash(event.relayExecutionInfo.updatedMessage!);
|
|
645
642
|
}
|
|
646
643
|
|
|
647
644
|
// Sanity check that this event is not a duplicate.
|
|
@@ -664,30 +661,27 @@ export abstract class SpokePoolClient extends BaseAbstractClient {
|
|
|
664
661
|
});
|
|
665
662
|
|
|
666
663
|
if (eventsToQuery.includes("EnabledDepositRoute")) {
|
|
667
|
-
const enableDepositsEvents = queryResults[eventsToQuery.indexOf("EnabledDepositRoute")]
|
|
664
|
+
const enableDepositsEvents = (queryResults[eventsToQuery.indexOf("EnabledDepositRoute")] ??
|
|
665
|
+
[]) as EnabledDepositRouteWithBlock[];
|
|
668
666
|
|
|
669
667
|
for (const event of enableDepositsEvents) {
|
|
670
|
-
|
|
671
|
-
assign(
|
|
672
|
-
this.depositRoutes,
|
|
673
|
-
[enableDeposit.originToken, enableDeposit.destinationChainId],
|
|
674
|
-
enableDeposit.enabled
|
|
675
|
-
);
|
|
668
|
+
assign(this.depositRoutes, [event.originToken, event.destinationChainId], event.enabled);
|
|
676
669
|
}
|
|
677
670
|
}
|
|
678
671
|
|
|
679
672
|
if (eventsToQuery.includes("RelayedRootBundle")) {
|
|
680
|
-
const relayedRootBundleEvents = queryResults[eventsToQuery.indexOf("RelayedRootBundle")]
|
|
673
|
+
const relayedRootBundleEvents = (queryResults[eventsToQuery.indexOf("RelayedRootBundle")] ??
|
|
674
|
+
[]) as RootBundleRelayWithBlock[];
|
|
681
675
|
for (const event of relayedRootBundleEvents) {
|
|
682
|
-
this.rootBundleRelays.push(
|
|
676
|
+
this.rootBundleRelays.push(event);
|
|
683
677
|
}
|
|
684
678
|
}
|
|
685
679
|
|
|
686
680
|
if (eventsToQuery.includes("ExecutedRelayerRefundRoot")) {
|
|
687
|
-
const refundEvents = queryResults[eventsToQuery.indexOf("ExecutedRelayerRefundRoot")]
|
|
681
|
+
const refundEvents = (queryResults[eventsToQuery.indexOf("ExecutedRelayerRefundRoot")] ??
|
|
682
|
+
[]) as RelayerRefundExecutionWithBlock[];
|
|
688
683
|
for (const event of refundEvents) {
|
|
689
|
-
|
|
690
|
-
this.relayerRefundExecutions.push(executedRefund);
|
|
684
|
+
this.relayerRefundExecutions.push(event);
|
|
691
685
|
}
|
|
692
686
|
}
|
|
693
687
|
|
|
@@ -700,12 +694,12 @@ export abstract class SpokePoolClient extends BaseAbstractClient {
|
|
|
700
694
|
|
|
701
695
|
// Next iteration should start off from where this one ended.
|
|
702
696
|
this.currentTime = currentTime;
|
|
703
|
-
this.
|
|
704
|
-
this.
|
|
705
|
-
this.eventSearchConfig.
|
|
697
|
+
this.latestHeightSearched = searchEndBlock;
|
|
698
|
+
this.firstHeightToSearch = searchEndBlock + 1;
|
|
699
|
+
this.eventSearchConfig.to = undefined; // Caller can re-set on subsequent updates if necessary
|
|
706
700
|
this.isUpdated = true;
|
|
707
701
|
this.log("debug", `SpokePool client for chain ${this.chainId} updated!`, {
|
|
708
|
-
|
|
702
|
+
nextFirstHeightToSearch: this.firstHeightToSearch,
|
|
709
703
|
});
|
|
710
704
|
}
|
|
711
705
|
|
|
@@ -848,19 +842,16 @@ export abstract class SpokePoolClient extends BaseAbstractClient {
|
|
|
848
842
|
/**
|
|
849
843
|
* Retrieves the fill status for a given relay data.
|
|
850
844
|
* @param relayData The relay data to retrieve the fill status for.
|
|
851
|
-
* @param
|
|
845
|
+
* @param atHeight The height at which to query the fill status.
|
|
852
846
|
* @returns The fill status for the given relay data.
|
|
853
847
|
*/
|
|
854
|
-
public abstract relayFillStatus(relayData: RelayData,
|
|
848
|
+
public abstract relayFillStatus(relayData: RelayData, atHeight?: number): Promise<FillStatus>;
|
|
855
849
|
|
|
856
850
|
/**
|
|
857
851
|
* Retrieves the fill status for an array of given relay data.
|
|
858
852
|
* @param relayData The array relay data to retrieve the fill status for.
|
|
859
|
-
* @param
|
|
853
|
+
* @param atHeight The height at which to query the fill status.
|
|
860
854
|
* @returns The fill status for each of the given relay data.
|
|
861
855
|
*/
|
|
862
|
-
public abstract fillStatusArray(
|
|
863
|
-
relayData: RelayData[],
|
|
864
|
-
blockTag?: number | "latest"
|
|
865
|
-
): Promise<(FillStatus | undefined)[]>;
|
|
856
|
+
public abstract fillStatusArray(relayData: RelayData[], atHeight?: number): Promise<(FillStatus | undefined)[]>;
|
|
866
857
|
}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { EVMSpokePoolClient } from "./EVMSpokePoolClient";
|
|
2
|
+
import { SvmSpokePoolClient } from "./SVMSpokePoolClient";
|
|
2
3
|
import { SpokePoolClient } from "./SpokePoolClient";
|
|
3
4
|
|
|
4
5
|
export { EVMSpokePoolClient } from "./EVMSpokePoolClient";
|
|
5
6
|
export { SpokePoolClient, SpokePoolUpdate } from "./SpokePoolClient";
|
|
7
|
+
export { SvmSpokePoolClient } from "./SVMSpokePoolClient";
|
|
6
8
|
|
|
7
9
|
/**
|
|
8
10
|
* Checks if a SpokePoolClient is an EVMSpokePoolClient.
|
|
@@ -12,3 +14,12 @@ export { SpokePoolClient, SpokePoolUpdate } from "./SpokePoolClient";
|
|
|
12
14
|
export function isEVMSpokePoolClient(spokePoolClient: SpokePoolClient): spokePoolClient is EVMSpokePoolClient {
|
|
13
15
|
return spokePoolClient instanceof EVMSpokePoolClient;
|
|
14
16
|
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Checks if a SpokePoolClient is an SVMSpokePoolClient.
|
|
20
|
+
* @param spokePoolClient The SpokePoolClient to check.
|
|
21
|
+
* @returns True if the SpokePoolClient is an SVMSpokePoolClient, false otherwise.
|
|
22
|
+
*/
|
|
23
|
+
export function isSvmSpokePoolClient(spokePoolClient: SpokePoolClient): spokePoolClient is SvmSpokePoolClient {
|
|
24
|
+
return spokePoolClient instanceof SvmSpokePoolClient;
|
|
25
|
+
}
|
package/src/clients/index.ts
CHANGED
|
@@ -6,6 +6,6 @@ export {
|
|
|
6
6
|
} from "./AcrossConfigStoreClient";
|
|
7
7
|
export { UpdateFailureReason } from "./BaseAbstractClient";
|
|
8
8
|
export { HubPoolClient, LpFeeRequest } from "./HubPoolClient";
|
|
9
|
-
export { SpokePoolClient, SpokePoolUpdate, EVMSpokePoolClient } from "./SpokePoolClient";
|
|
9
|
+
export { SpokePoolClient, SpokePoolUpdate, EVMSpokePoolClient, SvmSpokePoolClient } from "./SpokePoolClient";
|
|
10
10
|
export * as BundleDataClient from "./BundleDataClient";
|
|
11
11
|
export * as mocks from "./mocks";
|
|
@@ -33,7 +33,7 @@ export class MockConfigStoreClient extends AcrossConfigStoreClient {
|
|
|
33
33
|
constructor(
|
|
34
34
|
logger: winston.Logger,
|
|
35
35
|
configStore: Contract,
|
|
36
|
-
eventSearchConfig: MakeOptional<EventSearchConfig, "
|
|
36
|
+
eventSearchConfig: MakeOptional<EventSearchConfig, "to"> = { from: 0, maxLookBack: 0 },
|
|
37
37
|
configStoreVersion: number,
|
|
38
38
|
chainId = 1,
|
|
39
39
|
mockUpdate = false,
|
|
@@ -97,7 +97,7 @@ export class MockConfigStoreClient extends AcrossConfigStoreClient {
|
|
|
97
97
|
return Promise.resolve({
|
|
98
98
|
success: true,
|
|
99
99
|
chainId: this.chainId as number,
|
|
100
|
-
searchEndBlock: this.eventSearchConfig.
|
|
100
|
+
searchEndBlock: this.eventSearchConfig.to || latestBlockSearched,
|
|
101
101
|
events: {
|
|
102
102
|
updatedGlobalConfigEvents: events["UpdatedGlobalConfig"].map(spreadEventWithBlockNumber),
|
|
103
103
|
globalConfigUpdateTimes,
|
|
@@ -79,7 +79,7 @@ export class MockHubPoolClient extends HubPoolClient {
|
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
setLatestBlockNumber(blockNumber: number) {
|
|
82
|
-
this.
|
|
82
|
+
this.latestHeightSearched = blockNumber;
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
addL1Token(l1Token: L1Token) {
|
|
@@ -158,7 +158,7 @@ export class MockHubPoolClient extends HubPoolClient {
|
|
|
158
158
|
latestBlockSearched,
|
|
159
159
|
pendingRootBundleProposal: this.rootBundleProposal,
|
|
160
160
|
events,
|
|
161
|
-
searchEndBlock: this.eventSearchConfig.
|
|
161
|
+
searchEndBlock: this.eventSearchConfig.to || latestBlockSearched,
|
|
162
162
|
});
|
|
163
163
|
}
|
|
164
164
|
|
|
@@ -27,6 +27,7 @@ import {
|
|
|
27
27
|
bnOne,
|
|
28
28
|
toAddress,
|
|
29
29
|
toBytes32,
|
|
30
|
+
spreadEventWithBlockNumber,
|
|
30
31
|
} from "../../utils";
|
|
31
32
|
import { EVMSpokePoolClient, SpokePoolUpdate } from "../SpokePoolClient";
|
|
32
33
|
import { HubPoolClient } from "../HubPoolClient";
|
|
@@ -50,7 +51,7 @@ export class MockSpokePoolClient extends EVMSpokePoolClient {
|
|
|
50
51
|
opts: { hubPoolClient: HubPoolClient | null } = { hubPoolClient: null }
|
|
51
52
|
) {
|
|
52
53
|
super(logger, spokePool, opts.hubPoolClient, chainId, deploymentBlock);
|
|
53
|
-
this.
|
|
54
|
+
this.latestHeightSearched = deploymentBlock;
|
|
54
55
|
this.eventManager = getEventManager(chainId, this.eventSignatures, deploymentBlock);
|
|
55
56
|
}
|
|
56
57
|
|
|
@@ -67,7 +68,7 @@ export class MockSpokePoolClient extends EVMSpokePoolClient {
|
|
|
67
68
|
}
|
|
68
69
|
|
|
69
70
|
setLatestBlockNumber(blockNumber: number): void {
|
|
70
|
-
this.
|
|
71
|
+
this.latestHeightSearched = blockNumber;
|
|
71
72
|
}
|
|
72
73
|
|
|
73
74
|
setDepositIds(_depositIds: BigNumber[]): void {
|
|
@@ -106,12 +107,16 @@ export class MockSpokePoolClient extends EVMSpokePoolClient {
|
|
|
106
107
|
}
|
|
107
108
|
});
|
|
108
109
|
|
|
110
|
+
const eventsWithBlockNumber = events.map((eventList) =>
|
|
111
|
+
eventList.map((event) => spreadEventWithBlockNumber(event))
|
|
112
|
+
);
|
|
113
|
+
|
|
109
114
|
return Promise.resolve({
|
|
110
115
|
success: true,
|
|
111
116
|
firstDepositId: bnZero,
|
|
112
117
|
currentTime,
|
|
113
|
-
events,
|
|
114
|
-
searchEndBlock: this.eventSearchConfig.
|
|
118
|
+
events: eventsWithBlockNumber,
|
|
119
|
+
searchEndBlock: this.eventSearchConfig.to || latestBlockSearched,
|
|
115
120
|
});
|
|
116
121
|
}
|
|
117
122
|
|