@across-protocol/sdk 4.3.44-alpha.0 → 4.3.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/addressAggregator/adapters/abstract.js +4 -4
- package/dist/cjs/addressAggregator/adapters/abstract.js.map +1 -1
- package/dist/cjs/addressAggregator/adapters/bybit.js.map +1 -1
- package/dist/cjs/addressAggregator/adapters/env.js.map +1 -1
- package/dist/cjs/addressAggregator/adapters/file.js.map +1 -1
- package/dist/cjs/addressAggregator/adapters/risklabs.js.map +1 -1
- package/dist/cjs/addressAggregator/index.js +1 -1
- package/dist/cjs/addressAggregator/index.js.map +1 -1
- package/dist/cjs/apiClient/index.js +5 -3
- package/dist/cjs/apiClient/index.js.map +1 -1
- package/dist/cjs/apiClient/mockedClient.js.map +1 -1
- package/dist/cjs/apiClient/productionClient.js.map +1 -1
- package/dist/cjs/arch/evm/BlockUtils.js +17 -17
- package/dist/cjs/arch/evm/BlockUtils.js.map +1 -1
- package/dist/cjs/arch/evm/SpokeUtils.js +17 -16
- package/dist/cjs/arch/evm/SpokeUtils.js.map +1 -1
- package/dist/cjs/arch/evm/utils/wait.js +2 -2
- package/dist/cjs/arch/evm/utils/wait.js.map +1 -1
- package/dist/cjs/arch/svm/BlockUtils.js +14 -14
- package/dist/cjs/arch/svm/BlockUtils.js.map +1 -1
- package/dist/cjs/arch/svm/SpokeUtils.d.ts +7 -5
- package/dist/cjs/arch/svm/SpokeUtils.js +47 -51
- package/dist/cjs/arch/svm/SpokeUtils.js.map +1 -1
- package/dist/cjs/arch/svm/eventsClient.js +18 -18
- package/dist/cjs/arch/svm/eventsClient.js.map +1 -1
- package/dist/cjs/arch/svm/utils.d.ts +5 -4
- package/dist/cjs/arch/svm/utils.js +34 -32
- package/dist/cjs/arch/svm/utils.js.map +1 -1
- package/dist/cjs/caching/Arweave/ArweaveClient.js +13 -13
- package/dist/cjs/caching/Arweave/ArweaveClient.js.map +1 -1
- package/dist/cjs/caching/IPFS/PinataIPFSClient.js.map +1 -1
- package/dist/cjs/caching/Memory/MemoryCacheClient.js.map +1 -1
- package/dist/cjs/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js +14 -14
- package/dist/cjs/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js.map +1 -1
- package/dist/cjs/clients/BaseAbstractClient.js +2 -2
- package/dist/cjs/clients/BaseAbstractClient.js.map +1 -1
- package/dist/cjs/clients/BundleDataClient/BundleDataClient.js +4 -4
- package/dist/cjs/clients/BundleDataClient/BundleDataClient.js.map +1 -1
- package/dist/cjs/clients/BundleDataClient/utils/DataworkerUtils.js +11 -8
- package/dist/cjs/clients/BundleDataClient/utils/DataworkerUtils.js.map +1 -1
- package/dist/cjs/clients/BundleDataClient/utils/FillUtils.js +8 -2
- package/dist/cjs/clients/BundleDataClient/utils/FillUtils.js.map +1 -1
- package/dist/cjs/clients/BundleDataClient/utils/MerkleTreeUtils.js +2 -1
- package/dist/cjs/clients/BundleDataClient/utils/MerkleTreeUtils.js.map +1 -1
- package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js +14 -12
- package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
- package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.d.ts +10 -10
- package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.js.map +1 -1
- package/dist/cjs/clients/HubPoolClient.d.ts +3 -9
- package/dist/cjs/clients/HubPoolClient.js +70 -95
- package/dist/cjs/clients/HubPoolClient.js.map +1 -1
- package/dist/cjs/clients/SpokePoolClient/EVMSpokePoolClient.js.map +1 -1
- package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.d.ts +3 -3
- package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.js +6 -6
- package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.js.map +1 -1
- package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js +27 -26
- package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
- package/dist/cjs/clients/SpokePoolClient/index.js +3 -3
- package/dist/cjs/clients/SpokePoolClient/index.js.map +1 -1
- package/dist/cjs/clients/mocks/MockConfigStoreClient.js.map +1 -1
- package/dist/cjs/clients/mocks/MockEvents.js +2 -2
- package/dist/cjs/clients/mocks/MockEvents.js.map +1 -1
- package/dist/cjs/clients/mocks/MockHubPoolClient.d.ts +2 -2
- package/dist/cjs/clients/mocks/MockHubPoolClient.js +1 -1
- package/dist/cjs/clients/mocks/MockHubPoolClient.js.map +1 -1
- package/dist/cjs/clients/mocks/MockSpokePoolClient.js.map +1 -1
- package/dist/cjs/clients/mocks/MockSvmCpiEventsClient.js.map +1 -1
- package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.js +1 -1
- package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.js.map +1 -1
- package/dist/cjs/coingecko/Coingecko.js +22 -22
- package/dist/cjs/coingecko/Coingecko.js.map +1 -1
- package/dist/cjs/constants.d.ts +1 -7
- package/dist/cjs/contracts/acrossConfigStore.js +6 -6
- package/dist/cjs/contracts/acrossConfigStore.js.map +1 -1
- package/dist/cjs/contracts/hubPool.js +4 -4
- package/dist/cjs/contracts/hubPool.js.map +1 -1
- package/dist/cjs/contracts/utils.js +2 -1
- package/dist/cjs/contracts/utils.js.map +1 -1
- package/dist/cjs/gasPriceOracle/adapters/arbitrum.js +2 -1
- package/dist/cjs/gasPriceOracle/adapters/arbitrum.js.map +1 -1
- package/dist/cjs/gasPriceOracle/adapters/ethereum.js +4 -3
- package/dist/cjs/gasPriceOracle/adapters/ethereum.js.map +1 -1
- package/dist/cjs/gasPriceOracle/adapters/linea-viem.js +9 -8
- package/dist/cjs/gasPriceOracle/adapters/linea-viem.js.map +1 -1
- package/dist/cjs/gasPriceOracle/adapters/polygon.js +6 -6
- package/dist/cjs/gasPriceOracle/adapters/polygon.js.map +1 -1
- package/dist/cjs/gasPriceOracle/adapters/solana.js +2 -1
- package/dist/cjs/gasPriceOracle/adapters/solana.js.map +1 -1
- package/dist/cjs/gasPriceOracle/oracle.js +15 -14
- package/dist/cjs/gasPriceOracle/oracle.js.map +1 -1
- package/dist/cjs/gasPriceOracle/types.js +3 -2
- package/dist/cjs/gasPriceOracle/types.js.map +1 -1
- package/dist/cjs/gasPriceOracle/util.js +3 -2
- package/dist/cjs/gasPriceOracle/util.js.map +1 -1
- package/dist/cjs/interfaces/SpokePool.d.ts +3 -0
- package/dist/cjs/lpFeeCalculator/lpFeeCalculator.js +5 -5
- package/dist/cjs/lpFeeCalculator/lpFeeCalculator.js.map +1 -1
- package/dist/cjs/lpFeeCalculator/rateModel.js.map +1 -1
- package/dist/cjs/pool/poolClient.d.ts +4 -4
- package/dist/cjs/pool/poolClient.js +23 -23
- package/dist/cjs/pool/poolClient.js.map +1 -1
- package/dist/cjs/priceClient/adapters/acrossApi.js +3 -3
- package/dist/cjs/priceClient/adapters/acrossApi.js.map +1 -1
- package/dist/cjs/priceClient/adapters/baseAdapter.js +1 -1
- package/dist/cjs/priceClient/adapters/coingecko.js +6 -6
- package/dist/cjs/priceClient/adapters/coingecko.js.map +1 -1
- package/dist/cjs/priceClient/adapters/default.js.map +1 -1
- package/dist/cjs/priceClient/adapters/defiLlama.js +6 -6
- package/dist/cjs/priceClient/adapters/defiLlama.js.map +1 -1
- package/dist/cjs/priceClient/priceClient.js +8 -8
- package/dist/cjs/priceClient/priceClient.js.map +1 -1
- package/dist/cjs/providers/alchemy.js +2 -1
- package/dist/cjs/providers/alchemy.js.map +1 -1
- package/dist/cjs/providers/cachedProvider.d.ts +1 -1
- package/dist/cjs/providers/cachedProvider.js +10 -10
- package/dist/cjs/providers/cachedProvider.js.map +1 -1
- package/dist/cjs/providers/drpc.js +2 -1
- package/dist/cjs/providers/drpc.js.map +1 -1
- package/dist/cjs/providers/infura.js +2 -1
- package/dist/cjs/providers/infura.js.map +1 -1
- package/dist/cjs/providers/mocks/MockCachedSolanaRpcFactory.js.map +1 -1
- package/dist/cjs/providers/mocks/MockRateLimitedSolanaRpcFactory.js.map +1 -1
- package/dist/cjs/providers/mocks/MockRetrySolanaRpcFactory.js.map +1 -1
- package/dist/cjs/providers/mocks/MockSolanaRpcFactory.js +26 -24
- package/dist/cjs/providers/mocks/MockSolanaRpcFactory.js.map +1 -1
- package/dist/cjs/providers/mocks/mockEthersProvider.js.map +1 -1
- package/dist/cjs/providers/quicknode.js +2 -1
- package/dist/cjs/providers/quicknode.js.map +1 -1
- package/dist/cjs/providers/rateLimitedProvider.js +14 -12
- package/dist/cjs/providers/rateLimitedProvider.js.map +1 -1
- package/dist/cjs/providers/retryProvider.js +5 -5
- package/dist/cjs/providers/retryProvider.js.map +1 -1
- package/dist/cjs/providers/solana/baseRpcFactories.js.map +1 -1
- package/dist/cjs/providers/solana/cachedRpcFactory.js +6 -6
- package/dist/cjs/providers/solana/cachedRpcFactory.js.map +1 -1
- package/dist/cjs/providers/solana/defaultRpcFactory.js.map +1 -1
- package/dist/cjs/providers/solana/quorumFallbackRpcFactory.js.map +1 -1
- package/dist/cjs/providers/solana/rateLimitedRpcFactory.d.ts +5 -2
- package/dist/cjs/providers/solana/rateLimitedRpcFactory.js +14 -12
- package/dist/cjs/providers/solana/rateLimitedRpcFactory.js.map +1 -1
- package/dist/cjs/providers/solana/retryRpcFactory.js +1 -1
- package/dist/cjs/providers/solana/retryRpcFactory.js.map +1 -1
- package/dist/cjs/providers/speedProvider.js.map +1 -1
- package/dist/cjs/providers/utils.d.ts +1 -1
- package/dist/cjs/providers/utils.js +9 -9
- package/dist/cjs/providers/utils.js.map +1 -1
- package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.js +13 -13
- package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.js.map +1 -1
- package/dist/cjs/relayFeeCalculator/chain-queries/customGasToken.js.map +1 -1
- package/dist/cjs/relayFeeCalculator/chain-queries/factory.js.map +1 -1
- package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.d.ts +7 -1
- package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.js +7 -7
- package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -1
- package/dist/cjs/relayFeeCalculator/relayFeeCalculator.js +11 -11
- package/dist/cjs/relayFeeCalculator/relayFeeCalculator.js.map +1 -1
- package/dist/cjs/utils/AddressUtils.js +8 -8
- package/dist/cjs/utils/AddressUtils.js.map +1 -1
- package/dist/cjs/utils/ArrayUtils.js +14 -13
- package/dist/cjs/utils/ArrayUtils.js.map +1 -1
- package/dist/cjs/utils/BigNumberUtils.js +3 -3
- package/dist/cjs/utils/BigNumberUtils.js.map +1 -1
- package/dist/cjs/utils/BlockExplorerUtils.js +29 -18
- package/dist/cjs/utils/BlockExplorerUtils.js.map +1 -1
- package/dist/cjs/utils/BlockUtils.js +2 -1
- package/dist/cjs/utils/BlockUtils.js.map +1 -1
- package/dist/cjs/utils/BundleUtils.js +4 -3
- package/dist/cjs/utils/BundleUtils.js.map +1 -1
- package/dist/cjs/utils/CachingUtils.js +9 -8
- package/dist/cjs/utils/CachingUtils.js.map +1 -1
- package/dist/cjs/utils/ContractUtils.js +2 -1
- package/dist/cjs/utils/ContractUtils.js.map +1 -1
- package/dist/cjs/utils/DepositUtils.js +16 -16
- package/dist/cjs/utils/DepositUtils.js.map +1 -1
- package/dist/cjs/utils/EventUtils.js +16 -16
- package/dist/cjs/utils/EventUtils.js.map +1 -1
- package/dist/cjs/utils/FormattingUtils.d.ts +2 -2
- package/dist/cjs/utils/FormattingUtils.js +12 -12
- package/dist/cjs/utils/FormattingUtils.js.map +1 -1
- package/dist/cjs/utils/IPFSUtils.js +4 -3
- package/dist/cjs/utils/IPFSUtils.js.map +1 -1
- package/dist/cjs/utils/JSONUtils.js +7 -6
- package/dist/cjs/utils/JSONUtils.js.map +1 -1
- package/dist/cjs/utils/LogUtils.js +2 -2
- package/dist/cjs/utils/LogUtils.js.map +1 -1
- package/dist/cjs/utils/Multicall.js +7 -6
- package/dist/cjs/utils/Multicall.js.map +1 -1
- package/dist/cjs/utils/NetworkUtils.js +18 -18
- package/dist/cjs/utils/NetworkUtils.js.map +1 -1
- package/dist/cjs/utils/NumberUtils.js +4 -3
- package/dist/cjs/utils/NumberUtils.js.map +1 -1
- package/dist/cjs/utils/ObjectUtils.js +9 -8
- package/dist/cjs/utils/ObjectUtils.js.map +1 -1
- package/dist/cjs/utils/Profiler.js.map +1 -1
- package/dist/cjs/utils/ReviverUtils.js +3 -2
- package/dist/cjs/utils/ReviverUtils.js.map +1 -1
- package/dist/cjs/utils/SpokeUtils.js +9 -7
- package/dist/cjs/utils/SpokeUtils.js.map +1 -1
- package/dist/cjs/utils/TimeUtils.js +2 -1
- package/dist/cjs/utils/TimeUtils.js.map +1 -1
- package/dist/cjs/utils/TokenUtils.js +10 -10
- package/dist/cjs/utils/TokenUtils.js.map +1 -1
- package/dist/cjs/utils/TypeGuards.js +5 -4
- package/dist/cjs/utils/TypeGuards.js.map +1 -1
- package/dist/cjs/utils/ValidatorUtils.js +2 -1
- package/dist/cjs/utils/ValidatorUtils.js.map +1 -1
- package/dist/cjs/utils/abi/contracts/index.js +4 -2
- package/dist/cjs/utils/abi/contracts/index.js.map +1 -1
- package/dist/cjs/utils/abi/index.js +3 -2
- package/dist/cjs/utils/abi/index.js.map +1 -1
- package/dist/cjs/utils/common.js +9 -9
- package/dist/cjs/utils/common.js.map +1 -1
- package/dist/esm/addressAggregator/adapters/abstract.js +4 -4
- package/dist/esm/addressAggregator/adapters/abstract.js.map +1 -1
- package/dist/esm/addressAggregator/adapters/bybit.js.map +1 -1
- package/dist/esm/addressAggregator/adapters/env.js.map +1 -1
- package/dist/esm/addressAggregator/adapters/file.js.map +1 -1
- package/dist/esm/addressAggregator/adapters/risklabs.js.map +1 -1
- package/dist/esm/addressAggregator/index.js +1 -1
- package/dist/esm/addressAggregator/index.js.map +1 -1
- package/dist/esm/apiClient/mockedClient.js.map +1 -1
- package/dist/esm/apiClient/productionClient.js.map +1 -1
- package/dist/esm/arch/evm/BlockUtils.js +15 -15
- package/dist/esm/arch/evm/BlockUtils.js.map +1 -1
- package/dist/esm/arch/evm/SpokeUtils.js +6 -6
- package/dist/esm/arch/evm/SpokeUtils.js.map +1 -1
- package/dist/esm/arch/evm/utils/wait.js.map +1 -1
- package/dist/esm/arch/svm/BlockUtils.js +12 -12
- package/dist/esm/arch/svm/BlockUtils.js.map +1 -1
- package/dist/esm/arch/svm/SpokeUtils.d.ts +7 -5
- package/dist/esm/arch/svm/SpokeUtils.js +31 -33
- package/dist/esm/arch/svm/SpokeUtils.js.map +1 -1
- package/dist/esm/arch/svm/eventsClient.js +18 -18
- package/dist/esm/arch/svm/eventsClient.js.map +1 -1
- package/dist/esm/arch/svm/utils.d.ts +5 -4
- package/dist/esm/arch/svm/utils.js +16 -14
- package/dist/esm/arch/svm/utils.js.map +1 -1
- package/dist/esm/caching/Arweave/ArweaveClient.js +13 -13
- package/dist/esm/caching/Arweave/ArweaveClient.js.map +1 -1
- package/dist/esm/caching/IPFS/PinataIPFSClient.js.map +1 -1
- package/dist/esm/caching/Memory/MemoryCacheClient.js.map +1 -1
- package/dist/esm/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js +14 -14
- package/dist/esm/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js.map +1 -1
- package/dist/esm/clients/BaseAbstractClient.js.map +1 -1
- package/dist/esm/clients/BundleDataClient/BundleDataClient.js +4 -4
- package/dist/esm/clients/BundleDataClient/BundleDataClient.js.map +1 -1
- package/dist/esm/clients/BundleDataClient/utils/DataworkerUtils.js +7 -5
- package/dist/esm/clients/BundleDataClient/utils/DataworkerUtils.js.map +1 -1
- package/dist/esm/clients/BundleDataClient/utils/FillUtils.js +6 -1
- package/dist/esm/clients/BundleDataClient/utils/FillUtils.js.map +1 -1
- package/dist/esm/clients/BundleDataClient/utils/MerkleTreeUtils.js.map +1 -1
- package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js +4 -3
- package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
- package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.d.ts +10 -10
- package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.js.map +1 -1
- package/dist/esm/clients/HubPoolClient.d.ts +3 -9
- package/dist/esm/clients/HubPoolClient.js +74 -101
- package/dist/esm/clients/HubPoolClient.js.map +1 -1
- package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.js +1 -1
- package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.js.map +1 -1
- package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.d.ts +3 -3
- package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.js +11 -10
- package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.js.map +1 -1
- package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js +27 -26
- package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
- package/dist/esm/clients/mocks/MockConfigStoreClient.js.map +1 -1
- package/dist/esm/clients/mocks/MockEvents.js.map +1 -1
- package/dist/esm/clients/mocks/MockHubPoolClient.d.ts +2 -2
- package/dist/esm/clients/mocks/MockHubPoolClient.js +1 -1
- package/dist/esm/clients/mocks/MockHubPoolClient.js.map +1 -1
- package/dist/esm/clients/mocks/MockSpokePoolClient.js.map +1 -1
- package/dist/esm/clients/mocks/MockSvmCpiEventsClient.js.map +1 -1
- package/dist/esm/clients/mocks/MockSvmSpokePoolClient.js +1 -1
- package/dist/esm/clients/mocks/MockSvmSpokePoolClient.js.map +1 -1
- package/dist/esm/coingecko/Coingecko.js +20 -20
- package/dist/esm/coingecko/Coingecko.js.map +1 -1
- package/dist/esm/constants.d.ts +1 -7
- package/dist/esm/contracts/acrossConfigStore.js +9 -9
- package/dist/esm/contracts/acrossConfigStore.js.map +1 -1
- package/dist/esm/contracts/hubPool.js.map +1 -1
- package/dist/esm/gasPriceOracle/adapters/linea-viem.js +7 -7
- package/dist/esm/gasPriceOracle/adapters/polygon.js +4 -4
- package/dist/esm/gasPriceOracle/adapters/polygon.js.map +1 -1
- package/dist/esm/gasPriceOracle/oracle.js +12 -12
- package/dist/esm/gasPriceOracle/oracle.js.map +1 -1
- package/dist/esm/interfaces/SpokePool.d.ts +3 -0
- package/dist/esm/lpFeeCalculator/rateModel.js.map +1 -1
- package/dist/esm/pool/poolClient.d.ts +4 -4
- package/dist/esm/pool/poolClient.js +19 -19
- package/dist/esm/pool/poolClient.js.map +1 -1
- package/dist/esm/priceClient/adapters/acrossApi.js +3 -3
- package/dist/esm/priceClient/adapters/acrossApi.js.map +1 -1
- package/dist/esm/priceClient/adapters/baseAdapter.js +1 -1
- package/dist/esm/priceClient/adapters/coingecko.js +6 -6
- package/dist/esm/priceClient/adapters/coingecko.js.map +1 -1
- package/dist/esm/priceClient/adapters/default.js.map +1 -1
- package/dist/esm/priceClient/adapters/defiLlama.js +6 -6
- package/dist/esm/priceClient/adapters/defiLlama.js.map +1 -1
- package/dist/esm/priceClient/priceClient.js +6 -6
- package/dist/esm/priceClient/priceClient.js.map +1 -1
- package/dist/esm/providers/alchemy.js.map +1 -1
- package/dist/esm/providers/cachedProvider.d.ts +1 -1
- package/dist/esm/providers/cachedProvider.js +10 -10
- package/dist/esm/providers/cachedProvider.js.map +1 -1
- package/dist/esm/providers/drpc.js.map +1 -1
- package/dist/esm/providers/infura.js.map +1 -1
- package/dist/esm/providers/mocks/MockCachedSolanaRpcFactory.js.map +1 -1
- package/dist/esm/providers/mocks/MockRateLimitedSolanaRpcFactory.js.map +1 -1
- package/dist/esm/providers/mocks/MockRetrySolanaRpcFactory.js.map +1 -1
- package/dist/esm/providers/mocks/MockSolanaRpcFactory.js +26 -24
- package/dist/esm/providers/mocks/MockSolanaRpcFactory.js.map +1 -1
- package/dist/esm/providers/mocks/mockEthersProvider.js.map +1 -1
- package/dist/esm/providers/quicknode.js.map +1 -1
- package/dist/esm/providers/rateLimitedProvider.js +16 -14
- package/dist/esm/providers/rateLimitedProvider.js.map +1 -1
- package/dist/esm/providers/retryProvider.js +7 -6
- package/dist/esm/providers/retryProvider.js.map +1 -1
- package/dist/esm/providers/solana/baseRpcFactories.js.map +1 -1
- package/dist/esm/providers/solana/cachedRpcFactory.js +7 -7
- package/dist/esm/providers/solana/cachedRpcFactory.js.map +1 -1
- package/dist/esm/providers/solana/defaultRpcFactory.js.map +1 -1
- package/dist/esm/providers/solana/quorumFallbackRpcFactory.js.map +1 -1
- package/dist/esm/providers/solana/rateLimitedRpcFactory.d.ts +5 -2
- package/dist/esm/providers/solana/rateLimitedRpcFactory.js +16 -14
- package/dist/esm/providers/solana/rateLimitedRpcFactory.js.map +1 -1
- package/dist/esm/providers/solana/retryRpcFactory.js +1 -1
- package/dist/esm/providers/solana/retryRpcFactory.js.map +1 -1
- package/dist/esm/providers/speedProvider.js +2 -1
- package/dist/esm/providers/speedProvider.js.map +1 -1
- package/dist/esm/providers/utils.d.ts +4 -4
- package/dist/esm/providers/utils.js +8 -8
- package/dist/esm/providers/utils.js.map +1 -1
- package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.js +16 -16
- package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.js.map +1 -1
- package/dist/esm/relayFeeCalculator/chain-queries/customGasToken.js.map +1 -1
- package/dist/esm/relayFeeCalculator/chain-queries/factory.js.map +1 -1
- package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.d.ts +7 -1
- package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js +7 -7
- package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -1
- package/dist/esm/relayFeeCalculator/relayFeeCalculator.d.ts +10 -0
- package/dist/esm/relayFeeCalculator/relayFeeCalculator.js +9 -9
- package/dist/esm/relayFeeCalculator/relayFeeCalculator.js.map +1 -1
- package/dist/esm/utils/AddressUtils.js.map +1 -1
- package/dist/esm/utils/ArrayUtils.js.map +1 -1
- package/dist/esm/utils/BigNumberUtils.js.map +1 -1
- package/dist/esm/utils/BlockExplorerUtils.js +27 -19
- package/dist/esm/utils/BlockExplorerUtils.js.map +1 -1
- package/dist/esm/utils/BlockUtils.js.map +1 -1
- package/dist/esm/utils/BundleUtils.js.map +1 -1
- package/dist/esm/utils/CachingUtils.js +4 -4
- package/dist/esm/utils/CachingUtils.js.map +1 -1
- package/dist/esm/utils/DepositUtils.d.ts +3 -3
- package/dist/esm/utils/DepositUtils.js +1 -1
- package/dist/esm/utils/DepositUtils.js.map +1 -1
- package/dist/esm/utils/EventUtils.js +3 -3
- package/dist/esm/utils/EventUtils.js.map +1 -1
- package/dist/esm/utils/FormattingUtils.d.ts +4 -4
- package/dist/esm/utils/FormattingUtils.js +4 -4
- package/dist/esm/utils/FormattingUtils.js.map +1 -1
- package/dist/esm/utils/JSONUtils.js.map +1 -1
- package/dist/esm/utils/LogUtils.js.map +1 -1
- package/dist/esm/utils/Multicall.js +1 -1
- package/dist/esm/utils/Multicall.js.map +1 -1
- package/dist/esm/utils/NetworkUtils.js.map +1 -1
- package/dist/esm/utils/ObjectUtils.js.map +1 -1
- package/dist/esm/utils/Profiler.js.map +1 -1
- package/dist/esm/utils/ReviverUtils.js.map +1 -1
- package/dist/esm/utils/SpokeUtils.js +2 -1
- package/dist/esm/utils/SpokeUtils.js.map +1 -1
- package/dist/esm/utils/TokenUtils.js.map +1 -1
- package/dist/esm/utils/common.js.map +1 -1
- package/dist/types/addressAggregator/index.d.ts.map +1 -1
- package/dist/types/arch/svm/BlockUtils.d.ts.map +1 -1
- package/dist/types/arch/svm/SpokeUtils.d.ts +7 -5
- package/dist/types/arch/svm/SpokeUtils.d.ts.map +1 -1
- package/dist/types/arch/svm/eventsClient.d.ts.map +1 -1
- package/dist/types/arch/svm/utils.d.ts +5 -4
- package/dist/types/arch/svm/utils.d.ts.map +1 -1
- package/dist/types/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.d.ts.map +1 -1
- package/dist/types/clients/BaseAbstractClient.d.ts.map +1 -1
- package/dist/types/clients/BundleDataClient/utils/DataworkerUtils.d.ts.map +1 -1
- package/dist/types/clients/BundleDataClient/utils/FillUtils.d.ts.map +1 -1
- package/dist/types/clients/BundleDataClient/utils/PoolRebalanceUtils.d.ts.map +1 -1
- package/dist/types/clients/BundleDataClient/utils/SuperstructUtils.d.ts +10 -10
- package/dist/types/clients/HubPoolClient.d.ts +3 -9
- package/dist/types/clients/HubPoolClient.d.ts.map +1 -1
- package/dist/types/clients/SpokePoolClient/SVMSpokePoolClient.d.ts +3 -3
- package/dist/types/clients/SpokePoolClient/SVMSpokePoolClient.d.ts.map +1 -1
- package/dist/types/clients/SpokePoolClient/SpokePoolClient.d.ts.map +1 -1
- package/dist/types/clients/mocks/MockConfigStoreClient.d.ts.map +1 -1
- package/dist/types/clients/mocks/MockHubPoolClient.d.ts +2 -2
- package/dist/types/clients/mocks/MockHubPoolClient.d.ts.map +1 -1
- package/dist/types/clients/mocks/MockSvmCpiEventsClient.d.ts.map +1 -1
- package/dist/types/coingecko/Coingecko.d.ts.map +1 -1
- package/dist/types/constants.d.ts +1 -7
- package/dist/types/constants.d.ts.map +1 -1
- package/dist/types/interfaces/SpokePool.d.ts +3 -0
- package/dist/types/interfaces/SpokePool.d.ts.map +1 -1
- package/dist/types/lpFeeCalculator/rateModel.d.ts.map +1 -1
- package/dist/types/pool/TransactionManager.d.ts.map +1 -1
- package/dist/types/pool/poolClient.d.ts +4 -4
- package/dist/types/pool/poolClient.d.ts.map +1 -1
- package/dist/types/providers/cachedProvider.d.ts +1 -1
- package/dist/types/providers/cachedProvider.d.ts.map +1 -1
- package/dist/types/providers/retryProvider.d.ts.map +1 -1
- package/dist/types/providers/solana/cachedRpcFactory.d.ts.map +1 -1
- package/dist/types/providers/solana/rateLimitedRpcFactory.d.ts +5 -2
- package/dist/types/providers/solana/rateLimitedRpcFactory.d.ts.map +1 -1
- package/dist/types/providers/utils.d.ts +4 -4
- package/dist/types/providers/utils.d.ts.map +1 -1
- package/dist/types/relayFeeCalculator/chain-queries/baseQuery.d.ts.map +1 -1
- package/dist/types/relayFeeCalculator/chain-queries/svmQuery.d.ts +7 -1
- package/dist/types/relayFeeCalculator/chain-queries/svmQuery.d.ts.map +1 -1
- package/dist/types/relayFeeCalculator/relayFeeCalculator.d.ts +10 -0
- package/dist/types/relayFeeCalculator/relayFeeCalculator.d.ts.map +1 -1
- package/dist/types/typeguards/error.d.ts.map +1 -1
- package/dist/types/utils/BigNumberUtils.d.ts.map +1 -1
- package/dist/types/utils/BlockExplorerUtils.d.ts.map +1 -1
- package/dist/types/utils/DepositUtils.d.ts +3 -3
- package/dist/types/utils/DepositUtils.d.ts.map +1 -1
- package/dist/types/utils/EventUtils.d.ts.map +1 -1
- package/dist/types/utils/FormattingUtils.d.ts +4 -4
- package/dist/types/utils/FormattingUtils.d.ts.map +1 -1
- package/dist/types/utils/SpokeUtils.d.ts.map +1 -1
- package/dist/types/utils/TokenUtils.d.ts.map +1 -1
- package/dist/types/utils/common.d.ts.map +1 -1
- package/package.json +3 -4
- package/src/arch/svm/SpokeUtils.ts +26 -11
- package/src/arch/svm/utils.ts +6 -5
- package/src/clients/BundleDataClient/utils/DataworkerUtils.ts +14 -20
- package/src/clients/BundleDataClient/utils/FillUtils.ts +7 -1
- package/src/clients/BundleDataClient/utils/PoolRebalanceUtils.ts +2 -0
- package/src/clients/HubPoolClient.ts +50 -79
- package/src/clients/SpokePoolClient/SVMSpokePoolClient.ts +3 -3
- package/src/clients/SpokePoolClient/SpokePoolClient.ts +15 -11
- package/src/clients/mocks/MockHubPoolClient.ts +3 -3
- package/src/interfaces/SpokePool.ts +4 -0
- package/src/utils/BlockExplorerUtils.ts +25 -18
- package/src/utils/FormattingUtils.ts +4 -4
- package/src/utils/SpokeUtils.ts +2 -1
|
@@ -8,9 +8,9 @@ export declare const formatFeePct: (relayerFeePct: BN) => string;
|
|
|
8
8
|
* @param maxLength The maximum length of the shortened string. Defaults to 8.
|
|
9
9
|
* @param delimiter The delimiter to use in the middle of the shortened string. Defaults to "...".
|
|
10
10
|
* @returns The shortened hexadecimal string.
|
|
11
|
-
* @example
|
|
11
|
+
* @example createShortenedString("0x772871a444c6e4e9903d8533a5a13101b74037158123e6709470f0afbf6e7d94") -> "0x7787...7d94"
|
|
12
12
|
*/
|
|
13
|
-
export declare function
|
|
13
|
+
export declare function createShortenedString(hex: string, maxLength?: number, delimiter?: string): string;
|
|
14
14
|
/**
|
|
15
15
|
* Converts a utf8 string to a hex string.
|
|
16
16
|
* @param input The utf8 string to convert.
|
|
@@ -42,11 +42,11 @@ export declare function formatGwei(weiVal: string): string;
|
|
|
42
42
|
* Shortens a list of addresses to a shorter version with only the first 10 characters.
|
|
43
43
|
* @param addresses A list of addresses to shorten.
|
|
44
44
|
* @returns A list of shortened addresses.
|
|
45
|
-
* @see
|
|
45
|
+
* @see createShortenedString
|
|
46
46
|
*/
|
|
47
47
|
export declare function shortenHexStrings(addresses: string[]): string[];
|
|
48
48
|
export declare const formatWei: (num: string | BN) => string;
|
|
49
|
-
export declare const ConvertDecimals: (fromDecimals: number, toDecimals: number) => (
|
|
49
|
+
export declare const ConvertDecimals: (fromDecimals: number, toDecimals: number) => (amountIn: string | number | BN) => BN;
|
|
50
50
|
/**
|
|
51
51
|
* Converts a numeric decimal-inclusive string to winston, the base unit of Arweave
|
|
52
52
|
* @param numericString The numeric string to convert
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormattingUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/FormattingUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,SAAS,IAAI,eAAe,EAAE,EAAE,EAAoB,MAAM,kBAAkB,CAAC;AAOnG,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"FormattingUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/FormattingUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,SAAS,IAAI,eAAe,EAAE,EAAE,EAAoB,MAAM,kBAAkB,CAAC;AAOnG,eAAO,MAAM,qBAAqB,QAC3B,MAAM,GAAG,MAAM,iBACL,MAAM,gBACP,MAAM,WACX,OAAO,YACN,OAAO,KAChB,MAsBF,CAAC;AAEF,eAAO,MAAM,oBAAoB,yBACT,MAAM,yBACL,MAAM,uDAIX,MAAM,GAAG,EAAE,KAAG,MAQjC,CAAC;AACF,eAAO,MAAM,YAAY,kBAAmB,EAAE,KAAG,MAGhD,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,SAAI,EAAE,SAAS,SAAO,GAAG,MAAM,CAqB1F;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,EAAE,GAAG,MAAM,CAEzC;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGvE;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE/D;AAGD,eAAO,MAAM,SAAS,QAAS,MAAM,GAAG,EAAE,KAAG,MAK5C,CAAC;AAUF,eAAO,MAAM,eAAe,iBAAkB,MAAM,cAAc,MAAM,gBAAe,MAAM,GAAG,MAAM,GAAG,EAAE,KAAK,EAa/G,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,eAAe,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,YAAY,EAAE,eAAe,GAAG,MAAM,CAEnE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpokeUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/SpokeUtils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAY,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAK7C,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAE9C;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,CAGrE;AACD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"SpokeUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/SpokeUtils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAY,SAAS,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAK7C,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAE9C;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,CAGrE;AACD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,GAAG,MAAM,CAmCzF;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,SAAS,GAAG;IAAE,kBAAkB,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAE3F;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAQ/D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/TokenUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EAAY,SAAS,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAiB,MAAM,gBAAgB,CAAC;AAGpE,KAAK,gBAAgB,GAAG,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC;AAEpD,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,CAI9G;AAED,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"TokenUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/TokenUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EAAY,SAAS,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAiB,MAAM,gBAAgB,CAAC;AAGpE,KAAK,gBAAgB,GAAG,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC;AAEpD,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,CAI9G;AAED,eAAO,MAAM,mBAAmB,mBACd,MAAM;;aAMvB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAa/E;AAED;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,WAC5B,MAAM,WACL,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAEd,MAAM,GAAG,SAIX,CAAC;AAEF,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAGrF;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,GAAE,QAAmB,GAC5B,OAAO,CAAC,SAAS,CAAC,CAGpB;AAED,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAI1D;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAIzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAoB,GAAG,SAAS,CAe3G;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMnF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,CAetF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/utils/common.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,EAAiC,MAAM,kBAAkB,CAAC;AAG9F,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AACnD,eAAO,MAAM,WAAW,+CAA+B,CAAC;AACxD,eAAO,MAAM,WAAW,kBAAqD,CAAC;AAE9E,eAAO,MAAQ,SAAS,+BAAiB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/utils/common.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,EAAiC,MAAM,kBAAkB,CAAC;AAG9F,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AACnD,eAAO,MAAM,WAAW,+CAA+B,CAAC;AACxD,eAAO,MAAM,WAAW,kBAAqD,CAAC;AAE9E,eAAO,MAAQ,SAAS,+BAAiB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,QAAS,YAAY,aAAa,MAAM,KAAG,EAA0C,CAAC;AAE1G;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,QAAS,YAAY,aAAa,MAAM,KAAG,MAA+C,CAAC;AAE/G;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,EAAE,CAIxD;AACD;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,EAAE,CAIxD;AAED,eAAO,MAAM,oBAAoB,kBAAe,CAAC;AAEjD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,YAAY,EACxB,KAAK,GAAE,MAAM,GAAG,MAAU,EAC1B,UAAU,SAAK,EACf,cAAc,SAAK,GAClB,MAAM,CAIR;AAED;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,QAAS,YAAY,YAAY,YAAY,KAAG,SAEnE,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,YAAY,EACtB,KAAK,GAAE,MAAM,GAAG,MAAU,EAC1B,QAAQ,SAAK,GACZ,MAAM,CAGR;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,GAAG,EAAE,CAE9E;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,8BAA8B,gBAC5B,UAAU,aACZ,UAAU,kBACL,UAAU,kBACV,UAAU,KACzB,MAGF,CAAC;AACF;;;;;;;;GAQG;AACH,eAAO,MAAM,4BAA4B,gBAC1B,UAAU,aACZ,UAAU,kBACL,UAAU,kBACV,UAAU,KACzB,MAaF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,gBACL,UAAU,aACZ,UAAU,kBACL,UAAU,kBACV,UAAU,KACzB,MAEF,CAAC;AACF;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,QAAS,MAAM,OAAO,MAAM,QAAQ,MAAM,eAYvE,CAAC;AAEF;;;GAGG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,oBAEpC;AAED;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAQ1F;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,aAAa,EAAE,SAAS,CAAC;IACzB,YAAY,EAAE,SAAS,CAAC;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,gBAAgB,CAAC,EAAE,SAAS,CAAC;CAC9B,CAAC;AAEF,wBAAgB,aAAa,WAE5B"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@across-protocol/sdk",
|
|
3
3
|
"author": "UMA Team",
|
|
4
|
-
"version": "4.3.
|
|
4
|
+
"version": "4.3.45",
|
|
5
5
|
"license": "AGPL-3.0",
|
|
6
6
|
"homepage": "https://docs.across.to/reference/sdk",
|
|
7
7
|
"files": [
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"src"
|
|
11
11
|
],
|
|
12
12
|
"engines": {
|
|
13
|
-
"node": ">=
|
|
13
|
+
"node": ">=20.19.2"
|
|
14
14
|
},
|
|
15
15
|
"scripts": {
|
|
16
16
|
"build-bigint-buffer": "node scripts/build-bigint-buffer.js",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"bump-version:minor": "yarn version --minor --no-git-tag-version --no-commit-hooks && git commit -m 'chore: bump version' ./package.json --no-verify",
|
|
35
35
|
"bump-version:patch": "yarn version --patch --no-git-tag-version --no-commit-hooks && git commit -m 'chore: bump version' ./package.json --no-verify",
|
|
36
36
|
"typechain": "typechain --target ethers-v5 --out-dir src/utils/abi/typechain 'src/utils/abi/contracts/*.json' && eslint --fix src/utils/abi/typechain && yarn prettier --write \"src/utils/abi/typechain/**/*.ts\"",
|
|
37
|
-
"yalc:watch": "nodemon --watch src --ext ts,tsx,json,js,jsx --exec 'yalc push'"
|
|
37
|
+
"yalc:watch": "nodemon --watch src --ext ts,tsx,json,js,jsx --ignore src/utils/abi/ --exec 'yalc publish --push --changed'"
|
|
38
38
|
},
|
|
39
39
|
"lint-staged": {
|
|
40
40
|
"*.ts": "yarn lint"
|
|
@@ -117,7 +117,6 @@
|
|
|
117
117
|
"@solana/kit": "^2.1.0",
|
|
118
118
|
"@solana/web3.js": "^1.31.0",
|
|
119
119
|
"@types/mocha": "^10.0.1",
|
|
120
|
-
"@types/node": "^24.2.1",
|
|
121
120
|
"@uma/sdk": "^0.34.10",
|
|
122
121
|
"arweave": "^1.14.4",
|
|
123
122
|
"async": "^3.2.5",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MessageTransmitterClient, SvmSpokeClient, TokenMessengerMinterClient } from "@across-protocol/contracts";
|
|
2
2
|
import { decodeFillStatusAccount, fetchState } from "@across-protocol/contracts/dist/src/svm/clients/SvmSpoke";
|
|
3
|
-
import { decodeMessageHeader
|
|
3
|
+
import { decodeMessageHeader } from "@across-protocol/contracts/dist/src/svm/web3-v1";
|
|
4
4
|
import { SYSTEM_PROGRAM_ADDRESS } from "@solana-program/system";
|
|
5
5
|
import {
|
|
6
6
|
ASSOCIATED_TOKEN_PROGRAM_ADDRESS,
|
|
@@ -37,7 +37,14 @@ import assert from "assert";
|
|
|
37
37
|
import winston from "winston";
|
|
38
38
|
import { arrayify } from "ethers/lib/utils";
|
|
39
39
|
import { CHAIN_IDs, TOKEN_SYMBOLS_MAP } from "../../constants";
|
|
40
|
-
import {
|
|
40
|
+
import {
|
|
41
|
+
DepositWithBlock,
|
|
42
|
+
FillStatus,
|
|
43
|
+
FillWithBlock,
|
|
44
|
+
RelayData,
|
|
45
|
+
RelayDataWithMessageHash,
|
|
46
|
+
RelayExecutionEventInfo,
|
|
47
|
+
} from "../../interfaces";
|
|
41
48
|
import {
|
|
42
49
|
BigNumber,
|
|
43
50
|
EvmAddress,
|
|
@@ -48,6 +55,7 @@ import {
|
|
|
48
55
|
chainIsSvm,
|
|
49
56
|
chunk,
|
|
50
57
|
delay,
|
|
58
|
+
getMessageHash,
|
|
51
59
|
isUnsafeDepositId,
|
|
52
60
|
keccak256,
|
|
53
61
|
mapAsync,
|
|
@@ -309,7 +317,7 @@ export async function findDeposit(
|
|
|
309
317
|
*/
|
|
310
318
|
export async function relayFillStatus(
|
|
311
319
|
programId: Address,
|
|
312
|
-
relayData:
|
|
320
|
+
relayData: RelayDataWithMessageHash,
|
|
313
321
|
destinationChainId: number,
|
|
314
322
|
svmEventsClient: SvmCpiEventsClient,
|
|
315
323
|
logger: winston.Logger,
|
|
@@ -360,7 +368,7 @@ export async function relayFillStatus(
|
|
|
360
368
|
*/
|
|
361
369
|
export async function fillStatusArray(
|
|
362
370
|
programId: Address,
|
|
363
|
-
relayData:
|
|
371
|
+
relayData: RelayDataWithMessageHash[],
|
|
364
372
|
destinationChainId: number,
|
|
365
373
|
svmEventsClient: SvmCpiEventsClient,
|
|
366
374
|
logger: winston.Logger,
|
|
@@ -444,7 +452,7 @@ export async function fillStatusArray(
|
|
|
444
452
|
* @returns The fill event with block info, or `undefined` if not found.
|
|
445
453
|
*/
|
|
446
454
|
export async function findFillEvent(
|
|
447
|
-
relayData:
|
|
455
|
+
relayData: RelayDataWithMessageHash,
|
|
448
456
|
destinationChainId: number,
|
|
449
457
|
svmEventsClient: SvmCpiEventsClient,
|
|
450
458
|
fromSlot: number,
|
|
@@ -526,7 +534,8 @@ export async function fillRelayInstruction(
|
|
|
526
534
|
`Invalid repayment address for chain ${repaymentChainId}: ${repaymentAddress.toNative()}.`
|
|
527
535
|
);
|
|
528
536
|
|
|
529
|
-
const
|
|
537
|
+
const messageHash = getMessageHash(relayData.message);
|
|
538
|
+
const _relayDataHash = getRelayDataHash({ ...relayData, messageHash }, relayData.destinationChainId);
|
|
530
539
|
const relayDataHash = new Uint8Array(Buffer.from(_relayDataHash.slice(2), "hex"));
|
|
531
540
|
|
|
532
541
|
const relayer = SvmAddress.from(signer.address);
|
|
@@ -602,7 +611,8 @@ export async function getFillRelayTx(
|
|
|
602
611
|
);
|
|
603
612
|
|
|
604
613
|
const program = toAddress(spokePoolAddr);
|
|
605
|
-
const
|
|
614
|
+
const messageHash = getMessageHash(relayData.message);
|
|
615
|
+
const _relayDataHash = getRelayDataHash({ ...relayData, messageHash }, relayData.destinationChainId);
|
|
606
616
|
const relayDataHash = new Uint8Array(Buffer.from(_relayDataHash.slice(2), "hex"));
|
|
607
617
|
|
|
608
618
|
const [state, delegate, mintInfo, fillStatus, eventAuthority] = await Promise.all([
|
|
@@ -780,7 +790,8 @@ export async function getSlowFillRequestTx(
|
|
|
780
790
|
signer: TransactionSigner
|
|
781
791
|
) {
|
|
782
792
|
const program = toAddress(spokePoolAddr);
|
|
783
|
-
const
|
|
793
|
+
const messageHash = getMessageHash(relayData.message);
|
|
794
|
+
const relayDataHash = getRelayDataHash({ ...relayData, messageHash }, relayData.destinationChainId);
|
|
784
795
|
|
|
785
796
|
const [state, fillStatus, eventAuthority] = await Promise.all([
|
|
786
797
|
getStatePda(program),
|
|
@@ -851,21 +862,25 @@ export async function getAssociatedTokenAddress(
|
|
|
851
862
|
return associatedToken;
|
|
852
863
|
}
|
|
853
864
|
|
|
854
|
-
export function getRelayDataHash(relayData: RelayData, destinationChainId: number): string {
|
|
855
|
-
assert(relayData.
|
|
865
|
+
export function getRelayDataHash(relayData: RelayData & { messageHash: string }, destinationChainId: number): string {
|
|
866
|
+
assert(relayData.messageHash.startsWith("0x"), "Message hash must be a hex string");
|
|
867
|
+
|
|
856
868
|
const uint64Encoder = getU64Encoder();
|
|
857
869
|
|
|
858
870
|
const svmRelayData = toSvmRelayData(relayData);
|
|
859
871
|
const relayDataEncoder = SvmSpokeClient.getRelayDataEncoder();
|
|
860
872
|
const encodedRelayData = relayDataEncoder.encode(svmRelayData);
|
|
861
873
|
const encodedMessage = Buffer.from(relayData.message.slice(2), "hex");
|
|
874
|
+
const encodedMessageHash = Uint8Array.from(Buffer.from(relayData.messageHash.slice(2), "hex"));
|
|
862
875
|
|
|
863
876
|
// Reformat the encoded relay data the same way it is done in the SvmSpoke:
|
|
864
877
|
// https://github.com/across-protocol/contracts/blob/3310f8dc716407a5f97ef5fd2eae63df83251f2f/programs/svm-spoke/src/utils/merkle_proof_utils.rs#L5
|
|
878
|
+
// We want to use messageHash always so we can construct the relayDataHash just from the Fill.
|
|
879
|
+
// If we don't have a message, we can just pass an empty message here.
|
|
865
880
|
const messageOffset = encodedRelayData.length - 4 - encodedMessage.length;
|
|
866
881
|
const contentToHash = Buffer.concat([
|
|
867
882
|
encodedRelayData.slice(0, messageOffset),
|
|
868
|
-
|
|
883
|
+
encodedMessageHash,
|
|
869
884
|
Uint8Array.from(uint64Encoder.encode(BigInt(destinationChainId))),
|
|
870
885
|
]);
|
|
871
886
|
|
package/src/arch/svm/utils.ts
CHANGED
|
@@ -23,9 +23,9 @@ import {
|
|
|
23
23
|
import assert from "assert";
|
|
24
24
|
import bs58 from "bs58";
|
|
25
25
|
import { ethers } from "ethers";
|
|
26
|
-
import { FillType, RelayData } from "../../interfaces";
|
|
27
|
-
import { BigNumber, Address as SdkAddress, biMin,
|
|
28
|
-
import { getTimestampForSlot, getSlot } from "./SpokeUtils";
|
|
26
|
+
import { FillType, RelayData, RelayDataWithMessageHash } from "../../interfaces";
|
|
27
|
+
import { BigNumber, Address as SdkAddress, biMin, getMessageHash, isDefined, isUint8Array } from "../../utils";
|
|
28
|
+
import { getTimestampForSlot, getSlot, getRelayDataHash } from "./SpokeUtils";
|
|
29
29
|
import { AttestedCCTPMessage, EventName, SVMEventNames, SVMProvider } from "./types";
|
|
30
30
|
import winston from "winston";
|
|
31
31
|
|
|
@@ -268,10 +268,11 @@ export async function getStatePda(programId: Address): Promise<Address> {
|
|
|
268
268
|
*/
|
|
269
269
|
export async function getFillStatusPda(
|
|
270
270
|
programId: Address,
|
|
271
|
-
relayData:
|
|
271
|
+
relayData: RelayDataWithMessageHash,
|
|
272
272
|
destinationChainId: number
|
|
273
273
|
): Promise<Address> {
|
|
274
|
-
const
|
|
274
|
+
const messageHash = relayData.messageHash ?? getMessageHash(relayData.message);
|
|
275
|
+
const relayDataHash = getRelayDataHash({ ...relayData, messageHash }, destinationChainId);
|
|
275
276
|
const uint8RelayDataHash = new Uint8Array(Buffer.from(relayDataHash.slice(2), "hex"));
|
|
276
277
|
const [fillStatusPda] = await getProgramDerivedAddress({
|
|
277
278
|
programAddress: programId,
|
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
count2DDictionaryValues,
|
|
19
19
|
count3DDictionaryValues,
|
|
20
20
|
toAddressType,
|
|
21
|
+
isDefined,
|
|
21
22
|
} from "../../../utils";
|
|
22
23
|
import {
|
|
23
24
|
addLastRunningBalance,
|
|
@@ -153,21 +154,15 @@ export function _buildPoolRebalanceRoot(
|
|
|
153
154
|
([l2TokenAddress, { realizedLpFees: totalRealizedLpFee, totalRefundAmount }]) => {
|
|
154
155
|
// If the repayment token and repayment chain ID do not map to a PoolRebalanceRoute graph, then
|
|
155
156
|
// there are no relevant L1 running balances.
|
|
156
|
-
if (
|
|
157
|
-
!clients.hubPoolClient.l2TokenHasPoolRebalanceRoute(
|
|
158
|
-
toAddressType(l2TokenAddress, repaymentChainId),
|
|
159
|
-
repaymentChainId,
|
|
160
|
-
mainnetBundleEndBlock
|
|
161
|
-
)
|
|
162
|
-
) {
|
|
163
|
-
chainWithRefundsOnly.add(repaymentChainId);
|
|
164
|
-
return;
|
|
165
|
-
}
|
|
166
157
|
const l1Token = clients.hubPoolClient.getL1TokenForL2TokenAtBlock(
|
|
167
158
|
toAddressType(l2TokenAddress, repaymentChainId),
|
|
168
159
|
repaymentChainId,
|
|
169
160
|
mainnetBundleEndBlock
|
|
170
161
|
);
|
|
162
|
+
if (!l1Token) {
|
|
163
|
+
chainWithRefundsOnly.add(repaymentChainId);
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
171
166
|
const l1TokenAddr = l1Token.toNative();
|
|
172
167
|
assert(l1Token.isEVM(), `Expected an EVM address: ${l1TokenAddr}`);
|
|
173
168
|
|
|
@@ -193,6 +188,9 @@ export function _buildPoolRebalanceRoot(
|
|
|
193
188
|
destinationChainId,
|
|
194
189
|
mainnetBundleEndBlock
|
|
195
190
|
);
|
|
191
|
+
|
|
192
|
+
assert(isDefined(l1TokenCounterpart), "getRefundInformationFromFill: l1TokenCounterpart is undefined");
|
|
193
|
+
|
|
196
194
|
const lpFee = deposit.lpFeePct.mul(deposit.inputAmount).div(fixedPointAdjustment);
|
|
197
195
|
updateRunningBalance(
|
|
198
196
|
runningBalances,
|
|
@@ -222,6 +220,8 @@ export function _buildPoolRebalanceRoot(
|
|
|
222
220
|
destinationChainId,
|
|
223
221
|
mainnetBundleEndBlock
|
|
224
222
|
);
|
|
223
|
+
assert(isDefined(l1TokenCounterpart), "getRefundInformationFromFill: l1TokenCounterpart is undefined");
|
|
224
|
+
|
|
225
225
|
const lpFee = deposit.lpFeePct.mul(deposit.inputAmount).div(fixedPointAdjustment);
|
|
226
226
|
updateRunningBalance(
|
|
227
227
|
runningBalances,
|
|
@@ -277,21 +277,15 @@ export function _buildPoolRebalanceRoot(
|
|
|
277
277
|
deposits.forEach((deposit) => {
|
|
278
278
|
// If the repayment token and repayment chain ID do not map to a PoolRebalanceRoute graph, then
|
|
279
279
|
// there are no relevant L1 running balances.
|
|
280
|
-
if (
|
|
281
|
-
!clients.hubPoolClient.l2TokenHasPoolRebalanceRoute(
|
|
282
|
-
deposit.inputToken,
|
|
283
|
-
deposit.originChainId,
|
|
284
|
-
mainnetBundleEndBlock
|
|
285
|
-
)
|
|
286
|
-
) {
|
|
287
|
-
chainWithRefundsOnly.add(deposit.originChainId);
|
|
288
|
-
return;
|
|
289
|
-
}
|
|
290
280
|
const l1TokenCounterpart = clients.hubPoolClient.getL1TokenForL2TokenAtBlock(
|
|
291
281
|
toAddressType(inputToken, originChainId),
|
|
292
282
|
originChainId,
|
|
293
283
|
mainnetBundleEndBlock
|
|
294
284
|
);
|
|
285
|
+
if (!l1TokenCounterpart) {
|
|
286
|
+
chainWithRefundsOnly.add(deposit.originChainId);
|
|
287
|
+
return;
|
|
288
|
+
}
|
|
295
289
|
updateRunningBalance(runningBalances, originChainId, l1TokenCounterpart.toEvmAddress(), deposit.inputAmount);
|
|
296
290
|
});
|
|
297
291
|
});
|
|
@@ -37,18 +37,21 @@ export function getRefundInformationFromFill(
|
|
|
37
37
|
|
|
38
38
|
// Now figure out the equivalent L2 token for the repayment token. If the inputToken doesn't have a
|
|
39
39
|
// PoolRebalanceRoute, then the repayment chain would have been the originChainId after the getRepaymentChainId()
|
|
40
|
-
// call and we would have returned already, so the following call should always
|
|
40
|
+
// call and we would have returned already, so the following call should always return a valid L1 token.
|
|
41
41
|
const l1TokenCounterpart = hubPoolClient.getL1TokenForL2TokenAtBlock(
|
|
42
42
|
relayData.inputToken,
|
|
43
43
|
relayData.originChainId,
|
|
44
44
|
bundleEndBlockForMainnet
|
|
45
45
|
);
|
|
46
46
|
|
|
47
|
+
assert(isDefined(l1TokenCounterpart), "getRefundInformationFromFill: l1TokenCounterpart is undefined");
|
|
48
|
+
|
|
47
49
|
const repaymentToken = hubPoolClient.getL2TokenForL1TokenAtBlock(
|
|
48
50
|
l1TokenCounterpart,
|
|
49
51
|
chainToSendRefundTo,
|
|
50
52
|
bundleEndBlockForMainnet
|
|
51
53
|
);
|
|
54
|
+
assert(isDefined(repaymentToken), "getRefundInformationFromFill: repaymentToken is undefined");
|
|
52
55
|
|
|
53
56
|
return {
|
|
54
57
|
chainToSendRefundTo,
|
|
@@ -183,6 +186,9 @@ function _repaymentChainTokenIsValid(
|
|
|
183
186
|
relayData.originChainId,
|
|
184
187
|
bundleEndBlockForMainnet
|
|
185
188
|
);
|
|
189
|
+
if (!l1TokenCounterpart) {
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
186
192
|
if (
|
|
187
193
|
!hubPoolClient.l2TokenEnabledForL1TokenAtBlock(
|
|
188
194
|
l1TokenCounterpart,
|
|
@@ -202,6 +202,8 @@ export function updateRunningBalanceForDeposit(
|
|
|
202
202
|
deposit.originChainId,
|
|
203
203
|
mainnetBundleEndBlock
|
|
204
204
|
);
|
|
205
|
+
assert(isDefined(l1TokenCounterpart), "updateRunningBalanceForDeposit: l1TokenCounterpart is undefined");
|
|
206
|
+
|
|
205
207
|
updateRunningBalance(runningBalances, deposit.originChainId, l1TokenCounterpart.toEvmAddress(), updateAmount);
|
|
206
208
|
}
|
|
207
209
|
|
|
@@ -34,7 +34,6 @@ import {
|
|
|
34
34
|
fetchTokenInfo,
|
|
35
35
|
getCachedBlockForTimestamp,
|
|
36
36
|
getCurrentTime,
|
|
37
|
-
getNetworkName,
|
|
38
37
|
isDefined,
|
|
39
38
|
mapAsync,
|
|
40
39
|
paginatedEventQuery,
|
|
@@ -75,17 +74,11 @@ type HubPoolEvent =
|
|
|
75
74
|
| "RootBundleExecuted"
|
|
76
75
|
| "CrossChainContractsSet";
|
|
77
76
|
|
|
78
|
-
type L1TokensToDestinationTokens = {
|
|
79
|
-
[l1Token: string]: { [destinationChainId: number]: Address };
|
|
80
|
-
};
|
|
81
|
-
|
|
82
77
|
export type LpFeeRequest = Pick<Deposit, "originChainId" | "inputToken" | "inputAmount" | "quoteTimestamp"> & {
|
|
83
78
|
paymentChainId?: number;
|
|
84
79
|
};
|
|
85
80
|
|
|
86
81
|
export class HubPoolClient extends BaseAbstractClient {
|
|
87
|
-
// L1Token -> destinationChainId -> destinationToken
|
|
88
|
-
protected l1TokensToDestinationTokens: L1TokensToDestinationTokens = {};
|
|
89
82
|
protected l1Tokens: L1TokenInfo[] = []; // L1Tokens and their associated info.
|
|
90
83
|
// @dev `token` here is a 20-byte hex sting
|
|
91
84
|
protected lpTokens: { [token: string]: LpToken } = {};
|
|
@@ -192,24 +185,16 @@ export class HubPoolClient extends BaseAbstractClient {
|
|
|
192
185
|
l1Token: EvmAddress,
|
|
193
186
|
destinationChainId: number,
|
|
194
187
|
latestHubBlock = Number.MAX_SAFE_INTEGER
|
|
195
|
-
): Address {
|
|
188
|
+
): Address | undefined {
|
|
196
189
|
if (!this.l1TokensToDestinationTokensWithBlock?.[l1Token.toEvmAddress()]?.[destinationChainId]) {
|
|
197
|
-
|
|
198
|
-
const { symbol } = this.l1Tokens.find(({ address }) => address.eq(l1Token)) ?? { symbol: l1Token.toString() };
|
|
199
|
-
throw new Error(`Could not find SpokePool mapping for ${symbol} on ${chain} and L1 token ${l1Token}`);
|
|
190
|
+
return undefined;
|
|
200
191
|
}
|
|
201
192
|
// Find the last mapping published before the target block.
|
|
202
|
-
const l2Token: DestinationTokenWithBlock | undefined =
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
const { symbol } = this.l1Tokens.find(({ address }) => address.eq(l1Token)) ?? { symbol: l1Token.toString() };
|
|
208
|
-
throw new Error(
|
|
209
|
-
`Could not find SpokePool mapping for ${symbol} on ${chain} at or before HubPool block ${latestHubBlock}!`
|
|
210
|
-
);
|
|
211
|
-
}
|
|
212
|
-
return l2Token.l2Token;
|
|
193
|
+
const l2Token: DestinationTokenWithBlock | undefined = this.l1TokensToDestinationTokensWithBlock[
|
|
194
|
+
l1Token.toEvmAddress()
|
|
195
|
+
][destinationChainId].find((mapping: DestinationTokenWithBlock) => mapping.blockNumber <= latestHubBlock);
|
|
196
|
+
|
|
197
|
+
return !l2Token || l2Token.l2Token.isZeroAddress() ? undefined : l2Token.l2Token;
|
|
213
198
|
}
|
|
214
199
|
|
|
215
200
|
// Returns the latest L1 token to use for an L2 token as of the input hub block.
|
|
@@ -217,32 +202,27 @@ export class HubPoolClient extends BaseAbstractClient {
|
|
|
217
202
|
l2Token: Address,
|
|
218
203
|
destinationChainId: number,
|
|
219
204
|
latestHubBlock = Number.MAX_SAFE_INTEGER
|
|
220
|
-
): EvmAddress {
|
|
221
|
-
const l2Tokens = Object.keys(this.l1TokensToDestinationTokensWithBlock)
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
dstTokenWithBlock.l2Token.truncateToBytes20() === l2Token.truncateToBytes20() &&
|
|
229
|
-
dstTokenWithBlock.blockNumber <= latestHubBlock
|
|
230
|
-
);
|
|
231
|
-
})
|
|
232
|
-
.flat();
|
|
233
|
-
if (l2Tokens.length === 0) {
|
|
234
|
-
const chain = getNetworkName(destinationChainId);
|
|
235
|
-
throw new Error(
|
|
236
|
-
`Could not find HubPool mapping for ${l2Token} on ${chain} at or before HubPool block ${latestHubBlock}!`
|
|
205
|
+
): EvmAddress | undefined {
|
|
206
|
+
const l2Tokens = Object.keys(this.l1TokensToDestinationTokensWithBlock).flatMap((l1Token) => {
|
|
207
|
+
// Get the latest L2 token mapping for the given L1 token.
|
|
208
|
+
// @dev Since tokens on L2s (like Solana) can have 32 byte addresses, filter on the lower 20 bytes of the token only.
|
|
209
|
+
const sortedL2Tokens = sortEventsDescending(
|
|
210
|
+
(this.l1TokensToDestinationTokensWithBlock[l1Token][destinationChainId] ?? []).filter(
|
|
211
|
+
(dstTokenWithBlock) => dstTokenWithBlock.blockNumber <= latestHubBlock
|
|
212
|
+
)
|
|
237
213
|
);
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
214
|
+
// If the latest L2 token mapping is equal to the target L2 token, return it.
|
|
215
|
+
return sortedL2Tokens.length > 0 && sortedL2Tokens[0].l2Token.truncateToBytes20() === l2Token.truncateToBytes20()
|
|
216
|
+
? sortedL2Tokens[0]
|
|
217
|
+
: [];
|
|
218
|
+
});
|
|
219
|
+
|
|
220
|
+
return l2Tokens.length === 0 ? undefined : sortEventsDescending(l2Tokens)[0].l1Token;
|
|
241
221
|
}
|
|
242
222
|
|
|
243
223
|
protected getL1TokenForDeposit(
|
|
244
224
|
deposit: Pick<DepositWithBlock, "originChainId" | "inputToken" | "quoteBlockNumber">
|
|
245
|
-
): EvmAddress {
|
|
225
|
+
): EvmAddress | undefined {
|
|
246
226
|
// L1-->L2 token mappings are set via PoolRebalanceRoutes which occur on mainnet,
|
|
247
227
|
// so we use the latest token mapping. This way if a very old deposit is filled, the relayer can use the
|
|
248
228
|
// latest L2 token mapping to find the L1 token counterpart.
|
|
@@ -250,7 +230,7 @@ export class HubPoolClient extends BaseAbstractClient {
|
|
|
250
230
|
}
|
|
251
231
|
|
|
252
232
|
l2TokenEnabledForL1Token(l1Token: EvmAddress, destinationChainId: number): boolean {
|
|
253
|
-
return this.
|
|
233
|
+
return this.l2TokenEnabledForL1TokenAtBlock(l1Token, destinationChainId, Number.MAX_SAFE_INTEGER);
|
|
254
234
|
}
|
|
255
235
|
|
|
256
236
|
l2TokenEnabledForL1TokenAtBlock(l1Token: EvmAddress, destinationChainId: number, hubBlockNumber: number): boolean {
|
|
@@ -258,21 +238,12 @@ export class HubPoolClient extends BaseAbstractClient {
|
|
|
258
238
|
const l2Token: DestinationTokenWithBlock | undefined = sortEventsDescending(
|
|
259
239
|
this.l1TokensToDestinationTokensWithBlock?.[l1Token.toEvmAddress()]?.[destinationChainId] ?? []
|
|
260
240
|
).find((mapping: DestinationTokenWithBlock) => mapping.blockNumber <= hubBlockNumber);
|
|
261
|
-
return l2Token !== undefined;
|
|
241
|
+
return l2Token !== undefined && !l2Token.l2Token.isZeroAddress();
|
|
262
242
|
}
|
|
263
243
|
|
|
264
244
|
l2TokenHasPoolRebalanceRoute(l2Token: Address, l2ChainId: number, hubPoolBlock = this.latestHeightSearched): boolean {
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
return setPoolRebalanceRouteEvents.some((e) => {
|
|
268
|
-
return (
|
|
269
|
-
e.blockNumber <= hubPoolBlock &&
|
|
270
|
-
e.l2Token.truncateToBytes20() === l2Token.truncateToBytes20() &&
|
|
271
|
-
Number(_l2ChainId) === l2ChainId
|
|
272
|
-
);
|
|
273
|
-
});
|
|
274
|
-
});
|
|
275
|
-
});
|
|
245
|
+
const l1Token = this.getL1TokenForL2TokenAtBlock(l2Token, l2ChainId, hubPoolBlock);
|
|
246
|
+
return l1Token !== undefined;
|
|
276
247
|
}
|
|
277
248
|
|
|
278
249
|
/**
|
|
@@ -407,9 +378,11 @@ export class HubPoolClient extends BaseAbstractClient {
|
|
|
407
378
|
const hubPoolTokens: { [k: string]: EvmAddress } = {};
|
|
408
379
|
const getHubPoolToken = (deposit: LpFeeRequest, quoteBlockNumber: number): EvmAddress | undefined => {
|
|
409
380
|
const tokenKey = `${deposit.originChainId}-${deposit.inputToken}`;
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
381
|
+
const l1Token = this.getL1TokenForDeposit({ ...deposit, quoteBlockNumber });
|
|
382
|
+
if (!l1Token) {
|
|
383
|
+
return undefined;
|
|
384
|
+
}
|
|
385
|
+
return (hubPoolTokens[tokenKey] ??= l1Token);
|
|
413
386
|
};
|
|
414
387
|
const getHubPoolTokens = (): EvmAddress[] => dedupArray(Object.values(hubPoolTokens).filter(isDefined));
|
|
415
388
|
|
|
@@ -548,14 +521,14 @@ export class HubPoolClient extends BaseAbstractClient {
|
|
|
548
521
|
// Resolve both SpokePool tokens back to their respective HubPool tokens and verify that they match.
|
|
549
522
|
const l1TokenA = this.getL1TokenForL2TokenAtBlock(tokenA, chainIdA, hubPoolBlock);
|
|
550
523
|
const l1TokenB = this.getL1TokenForL2TokenAtBlock(tokenB, chainIdB, hubPoolBlock);
|
|
551
|
-
if (!l1TokenA.eq(l1TokenB)) {
|
|
524
|
+
if (!l1TokenA || !l1TokenB || !l1TokenA.eq(l1TokenB)) {
|
|
552
525
|
return false;
|
|
553
526
|
}
|
|
554
527
|
|
|
555
528
|
// Resolve both HubPool tokens back to a current SpokePool token and verify that they match.
|
|
556
529
|
const _tokenA = this.getL2TokenForL1TokenAtBlock(l1TokenA, chainIdA, hubPoolBlock);
|
|
557
530
|
const _tokenB = this.getL2TokenForL1TokenAtBlock(l1TokenB, chainIdB, hubPoolBlock);
|
|
558
|
-
return tokenA.eq(_tokenA) && tokenB.eq(_tokenB);
|
|
531
|
+
return _tokenA !== undefined && _tokenB !== undefined && tokenA.eq(_tokenA) && tokenB.eq(_tokenB);
|
|
559
532
|
}
|
|
560
533
|
|
|
561
534
|
getSpokeActivationBlockForChain(chainId: number): number {
|
|
@@ -995,24 +968,22 @@ export class HubPoolClient extends BaseAbstractClient {
|
|
|
995
968
|
destinationToken = svmUsdc;
|
|
996
969
|
}
|
|
997
970
|
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
]
|
|
1015
|
-
);
|
|
971
|
+
const newRoute: DestinationTokenWithBlock = {
|
|
972
|
+
l1Token: EvmAddress.from(args.l1Token),
|
|
973
|
+
l2Token: destinationToken,
|
|
974
|
+
blockNumber: args.blockNumber,
|
|
975
|
+
txnIndex: args.txnIndex,
|
|
976
|
+
logIndex: args.logIndex,
|
|
977
|
+
txnRef: args.txnRef,
|
|
978
|
+
};
|
|
979
|
+
if (this.l1TokensToDestinationTokensWithBlock[args.l1Token]?.[args.destinationChainId]) {
|
|
980
|
+
// Events are most likely coming in descending orders already but just in case we sort them again.
|
|
981
|
+
this.l1TokensToDestinationTokensWithBlock[args.l1Token][args.destinationChainId] = sortEventsDescending([
|
|
982
|
+
...this.l1TokensToDestinationTokensWithBlock[args.l1Token][args.destinationChainId],
|
|
983
|
+
newRoute,
|
|
984
|
+
]);
|
|
985
|
+
} else {
|
|
986
|
+
assign(this.l1TokensToDestinationTokensWithBlock, [args.l1Token, args.destinationChainId], [newRoute]);
|
|
1016
987
|
}
|
|
1017
988
|
}
|
|
1018
989
|
}
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
relayFillStatus,
|
|
12
12
|
fillStatusArray,
|
|
13
13
|
} from "../../arch/svm";
|
|
14
|
-
import { FillStatus,
|
|
14
|
+
import { FillStatus, RelayDataWithMessageHash, SortableEvent } from "../../interfaces";
|
|
15
15
|
import {
|
|
16
16
|
BigNumber,
|
|
17
17
|
DepositSearchResult,
|
|
@@ -244,7 +244,7 @@ export class SVMSpokePoolClient extends SpokePoolClient {
|
|
|
244
244
|
/**
|
|
245
245
|
* Retrieves the fill status for a given relay data from the SVM chain.
|
|
246
246
|
*/
|
|
247
|
-
public override relayFillStatus(relayData:
|
|
247
|
+
public override relayFillStatus(relayData: RelayDataWithMessageHash, atHeight?: number): Promise<FillStatus> {
|
|
248
248
|
return relayFillStatus(this.programId, relayData, this.chainId, this.svmEventsClient, this.logger, atHeight);
|
|
249
249
|
}
|
|
250
250
|
|
|
@@ -255,7 +255,7 @@ export class SVMSpokePoolClient extends SpokePoolClient {
|
|
|
255
255
|
* @returns The fill status for each of the given relay data.
|
|
256
256
|
*/
|
|
257
257
|
public fillStatusArray(
|
|
258
|
-
relayData:
|
|
258
|
+
relayData: RelayDataWithMessageHash[],
|
|
259
259
|
atHeight?: number,
|
|
260
260
|
destinationChainId?: number
|
|
261
261
|
): Promise<(FillStatus | undefined)[]> {
|
|
@@ -472,18 +472,22 @@ export abstract class SpokePoolClient extends BaseAbstractClient {
|
|
|
472
472
|
)
|
|
473
473
|
) {
|
|
474
474
|
return false;
|
|
475
|
-
} else {
|
|
476
|
-
const l1Token = this.hubPoolClient?.getL1TokenForL2TokenAtBlock(
|
|
477
|
-
deposit.inputToken,
|
|
478
|
-
deposit.originChainId,
|
|
479
|
-
deposit.quoteBlockNumber
|
|
480
|
-
);
|
|
481
|
-
return this.hubPoolClient.l2TokenEnabledForL1TokenAtBlock(
|
|
482
|
-
l1Token,
|
|
483
|
-
deposit.destinationChainId,
|
|
484
|
-
deposit.quoteBlockNumber
|
|
485
|
-
);
|
|
486
475
|
}
|
|
476
|
+
|
|
477
|
+
const l1Token = this.hubPoolClient?.getL1TokenForL2TokenAtBlock(
|
|
478
|
+
deposit.inputToken,
|
|
479
|
+
deposit.originChainId,
|
|
480
|
+
deposit.quoteBlockNumber
|
|
481
|
+
);
|
|
482
|
+
if (!l1Token) {
|
|
483
|
+
return false;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
return this.hubPoolClient.l2TokenEnabledForL1TokenAtBlock(
|
|
487
|
+
l1Token,
|
|
488
|
+
deposit.destinationChainId,
|
|
489
|
+
deposit.quoteBlockNumber
|
|
490
|
+
);
|
|
487
491
|
}
|
|
488
492
|
|
|
489
493
|
/**
|