@across-protocol/sdk 4.3.111-alpha.0 → 4.3.111-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/addressAggregator/adapters/abstract.js +50 -64
- package/dist/cjs/addressAggregator/adapters/abstract.js.map +1 -1
- package/dist/cjs/addressAggregator/adapters/bybit.js +16 -29
- package/dist/cjs/addressAggregator/adapters/bybit.js.map +1 -1
- package/dist/cjs/addressAggregator/adapters/env.js +11 -15
- package/dist/cjs/addressAggregator/adapters/env.js.map +1 -1
- package/dist/cjs/addressAggregator/adapters/file.js +32 -45
- package/dist/cjs/addressAggregator/adapters/file.js.map +1 -1
- package/dist/cjs/addressAggregator/adapters/index.js +1 -1
- package/dist/cjs/addressAggregator/adapters/risklabs.js +22 -36
- package/dist/cjs/addressAggregator/adapters/risklabs.js.map +1 -1
- package/dist/cjs/addressAggregator/index.js +57 -87
- package/dist/cjs/addressAggregator/index.js.map +1 -1
- package/dist/cjs/apiClient/abstractClient.js +9 -8
- package/dist/cjs/apiClient/abstractClient.js.map +1 -1
- package/dist/cjs/apiClient/index.js +1 -1
- package/dist/cjs/apiClient/mockedClient.js +23 -29
- package/dist/cjs/apiClient/mockedClient.js.map +1 -1
- package/dist/cjs/apiClient/productionClient.js +65 -103
- package/dist/cjs/apiClient/productionClient.js.map +1 -1
- package/dist/cjs/arch/evm/BlockUtils.js +122 -208
- package/dist/cjs/arch/evm/BlockUtils.js.map +1 -1
- package/dist/cjs/arch/evm/MessageUtils.js +1 -1
- package/dist/cjs/arch/evm/MessageUtils.js.map +1 -1
- package/dist/cjs/arch/evm/SpokeUtils.js +134 -288
- package/dist/cjs/arch/evm/SpokeUtils.js.map +1 -1
- package/dist/cjs/arch/evm/index.js +1 -1
- package/dist/cjs/arch/evm/utils/index.js +1 -1
- package/dist/cjs/arch/evm/utils/wait.js +38 -49
- package/dist/cjs/arch/evm/utils/wait.js.map +1 -1
- package/dist/cjs/arch/index.js +1 -1
- package/dist/cjs/arch/svm/BlockUtils.js +102 -158
- package/dist/cjs/arch/svm/BlockUtils.js.map +1 -1
- package/dist/cjs/arch/svm/MessageUtils.js +2 -2
- package/dist/cjs/arch/svm/MessageUtils.js.map +1 -1
- package/dist/cjs/arch/svm/SpokeUtils.js +708 -1147
- package/dist/cjs/arch/svm/SpokeUtils.js.map +1 -1
- package/dist/cjs/arch/svm/encoders.js +1 -1
- package/dist/cjs/arch/svm/encoders.js.map +1 -1
- package/dist/cjs/arch/svm/eventsClient.js +174 -236
- package/dist/cjs/arch/svm/eventsClient.js.map +1 -1
- package/dist/cjs/arch/svm/index.js +1 -1
- package/dist/cjs/arch/svm/provider.js +3 -3
- package/dist/cjs/arch/svm/provider.js.map +1 -1
- package/dist/cjs/arch/svm/utils.js +166 -355
- package/dist/cjs/arch/svm/utils.js.map +1 -1
- package/dist/cjs/caching/Arweave/ArweaveClient.js +168 -246
- package/dist/cjs/caching/Arweave/ArweaveClient.js.map +1 -1
- package/dist/cjs/caching/Arweave/index.js +1 -1
- package/dist/cjs/caching/IPFS/PinataIPFSClient.js +40 -49
- package/dist/cjs/caching/IPFS/PinataIPFSClient.js.map +1 -1
- package/dist/cjs/caching/IPFS/index.js +1 -1
- package/dist/cjs/caching/Memory/MemoryCacheClient.js +13 -18
- package/dist/cjs/caching/Memory/MemoryCacheClient.js.map +1 -1
- package/dist/cjs/caching/Memory/index.js +1 -1
- package/dist/cjs/caching/index.js +1 -1
- package/dist/cjs/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js +302 -381
- package/dist/cjs/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js.map +1 -1
- package/dist/cjs/clients/AcrossConfigStoreClient/index.js +1 -1
- package/dist/cjs/clients/BaseAbstractClient.js +58 -83
- package/dist/cjs/clients/BaseAbstractClient.js.map +1 -1
- package/dist/cjs/clients/BundleDataClient/BundleDataClient.js +709 -900
- package/dist/cjs/clients/BundleDataClient/BundleDataClient.js.map +1 -1
- package/dist/cjs/clients/BundleDataClient/index.js +1 -1
- package/dist/cjs/clients/BundleDataClient/utils/DataworkerUtils.js +95 -128
- package/dist/cjs/clients/BundleDataClient/utils/DataworkerUtils.js.map +1 -1
- package/dist/cjs/clients/BundleDataClient/utils/FillUtils.js +48 -53
- package/dist/cjs/clients/BundleDataClient/utils/FillUtils.js.map +1 -1
- package/dist/cjs/clients/BundleDataClient/utils/MerkleTreeUtils.js +10 -8
- package/dist/cjs/clients/BundleDataClient/utils/MerkleTreeUtils.js.map +1 -1
- package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js +67 -90
- package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
- package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.js +46 -24
- package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.js.map +1 -1
- package/dist/cjs/clients/BundleDataClient/utils/index.js +1 -1
- package/dist/cjs/clients/HubPoolClient.js +526 -708
- package/dist/cjs/clients/HubPoolClient.js.map +1 -1
- package/dist/cjs/clients/SpokePoolClient/EVMSpokePoolClient.js +133 -179
- package/dist/cjs/clients/SpokePoolClient/EVMSpokePoolClient.js.map +1 -1
- package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.js +124 -183
- package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.js.map +1 -1
- package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js +357 -389
- package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
- package/dist/cjs/clients/SpokePoolClient/SpokePoolClientManager.js +9 -8
- package/dist/cjs/clients/SpokePoolClient/SpokePoolClientManager.js.map +1 -1
- package/dist/cjs/clients/SpokePoolClient/index.js +3 -3
- package/dist/cjs/clients/SpokePoolClient/index.js.map +1 -1
- package/dist/cjs/clients/index.js +1 -1
- package/dist/cjs/clients/mocks/MockConfigStoreClient.js +58 -67
- package/dist/cjs/clients/mocks/MockConfigStoreClient.js.map +1 -1
- package/dist/cjs/clients/mocks/MockEvents.js +47 -52
- package/dist/cjs/clients/mocks/MockEvents.js.map +1 -1
- package/dist/cjs/clients/mocks/MockHubPoolClient.js +142 -185
- package/dist/cjs/clients/mocks/MockHubPoolClient.js.map +1 -1
- package/dist/cjs/clients/mocks/MockSpokePoolClient.js +208 -192
- package/dist/cjs/clients/mocks/MockSpokePoolClient.js.map +1 -1
- package/dist/cjs/clients/mocks/MockSvmCpiEventsClient.js +140 -143
- package/dist/cjs/clients/mocks/MockSvmCpiEventsClient.js.map +1 -1
- package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.js +57 -73
- package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.js.map +1 -1
- package/dist/cjs/clients/mocks/index.js +1 -1
- package/dist/cjs/coingecko/Coingecko.js +285 -437
- package/dist/cjs/coingecko/Coingecko.js.map +1 -1
- package/dist/cjs/coingecko/index.js +1 -1
- package/dist/cjs/constants.js +23 -30
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/contracts/acrossConfigStore.js +27 -48
- package/dist/cjs/contracts/acrossConfigStore.js.map +1 -1
- package/dist/cjs/contracts/hubPool.js +36 -20
- package/dist/cjs/contracts/hubPool.js.map +1 -1
- package/dist/cjs/contracts/index.js +1 -1
- package/dist/cjs/contracts/utils.js +6 -8
- package/dist/cjs/contracts/utils.js.map +1 -1
- package/dist/cjs/gasPriceOracle/adapters/arbitrum.js +7 -16
- package/dist/cjs/gasPriceOracle/adapters/arbitrum.js.map +1 -1
- package/dist/cjs/gasPriceOracle/adapters/ethereum.js +26 -45
- package/dist/cjs/gasPriceOracle/adapters/ethereum.js.map +1 -1
- package/dist/cjs/gasPriceOracle/adapters/linea-viem.js +16 -28
- package/dist/cjs/gasPriceOracle/adapters/linea-viem.js.map +1 -1
- package/dist/cjs/gasPriceOracle/adapters/polygon.js +73 -112
- package/dist/cjs/gasPriceOracle/adapters/polygon.js.map +1 -1
- package/dist/cjs/gasPriceOracle/adapters/solana.js +20 -33
- package/dist/cjs/gasPriceOracle/adapters/solana.js.map +1 -1
- package/dist/cjs/gasPriceOracle/oracle.js +77 -104
- package/dist/cjs/gasPriceOracle/oracle.js.map +1 -1
- package/dist/cjs/gasPriceOracle/types.js +3 -3
- package/dist/cjs/gasPriceOracle/types.js.map +1 -1
- package/dist/cjs/gasPriceOracle/util.js +8 -8
- package/dist/cjs/gasPriceOracle/util.js.map +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/interfaces/index.js +1 -1
- package/dist/cjs/lpFeeCalculator/index.js +1 -1
- package/dist/cjs/lpFeeCalculator/lpFeeCalculator.js +33 -35
- package/dist/cjs/lpFeeCalculator/lpFeeCalculator.js.map +1 -1
- package/dist/cjs/lpFeeCalculator/rateModel.js +7 -9
- package/dist/cjs/lpFeeCalculator/rateModel.js.map +1 -1
- package/dist/cjs/merkleDistributor/MerkleDistributor.js +20 -18
- package/dist/cjs/merkleDistributor/MerkleDistributor.js.map +1 -1
- package/dist/cjs/merkleDistributor/index.js +1 -1
- package/dist/cjs/merkleDistributor/model/index.js +1 -1
- package/dist/cjs/pool/TransactionManager.js +45 -100
- package/dist/cjs/pool/TransactionManager.js.map +1 -1
- package/dist/cjs/pool/index.js +1 -1
- package/dist/cjs/pool/poolClient.js +464 -731
- package/dist/cjs/pool/poolClient.js.map +1 -1
- package/dist/cjs/pool/uma/across/index.js +1 -1
- package/dist/cjs/pool/uma/across/transactionManager.js +45 -100
- package/dist/cjs/pool/uma/across/transactionManager.js.map +1 -1
- package/dist/cjs/pool/uma/clients/erc20/client.js +18 -16
- package/dist/cjs/pool/uma/clients/erc20/client.js.map +1 -1
- package/dist/cjs/pool/uma/clients/erc20/index.js +1 -1
- package/dist/cjs/pool/uma/clients/index.js +1 -1
- package/dist/cjs/pool/uma/index.js +1 -1
- package/dist/cjs/pool/uma/oracle/index.js +1 -1
- package/dist/cjs/pool/uma/oracle/utils.js +4 -5
- package/dist/cjs/pool/uma/oracle/utils.js.map +1 -1
- package/dist/cjs/pool/uma/utils.js +11 -30
- package/dist/cjs/pool/uma/utils.js.map +1 -1
- package/dist/cjs/priceClient/adapters/acrossApi.js +22 -39
- package/dist/cjs/priceClient/adapters/acrossApi.js.map +1 -1
- package/dist/cjs/priceClient/adapters/baseAdapter.js +49 -73
- package/dist/cjs/priceClient/adapters/baseAdapter.js.map +1 -1
- package/dist/cjs/priceClient/adapters/coingecko.js +34 -61
- package/dist/cjs/priceClient/adapters/coingecko.js.map +1 -1
- package/dist/cjs/priceClient/adapters/default.js +16 -31
- package/dist/cjs/priceClient/adapters/default.js.map +1 -1
- package/dist/cjs/priceClient/adapters/defiLlama.js +40 -74
- package/dist/cjs/priceClient/adapters/defiLlama.js.map +1 -1
- package/dist/cjs/priceClient/adapters/index.js +1 -1
- package/dist/cjs/priceClient/index.js +1 -1
- package/dist/cjs/priceClient/priceClient.js +110 -159
- package/dist/cjs/priceClient/priceClient.js.map +1 -1
- package/dist/cjs/providers/alchemy.js +17 -19
- package/dist/cjs/providers/alchemy.js.map +1 -1
- package/dist/cjs/providers/cachedProvider.js +88 -129
- package/dist/cjs/providers/cachedProvider.js.map +1 -1
- package/dist/cjs/providers/drpc.js +9 -11
- package/dist/cjs/providers/drpc.js.map +1 -1
- package/dist/cjs/providers/index.js +1 -1
- package/dist/cjs/providers/infura.js +10 -12
- package/dist/cjs/providers/infura.js.map +1 -1
- package/dist/cjs/providers/mocks/MockCachedSolanaRpcFactory.js +7 -15
- package/dist/cjs/providers/mocks/MockCachedSolanaRpcFactory.js.map +1 -1
- package/dist/cjs/providers/mocks/MockRateLimitedSolanaRpcFactory.js +6 -14
- package/dist/cjs/providers/mocks/MockRateLimitedSolanaRpcFactory.js.map +1 -1
- package/dist/cjs/providers/mocks/MockRetrySolanaRpcFactory.js +7 -15
- package/dist/cjs/providers/mocks/MockRetrySolanaRpcFactory.js.map +1 -1
- package/dist/cjs/providers/mocks/MockSolanaRpcFactory.js +42 -66
- package/dist/cjs/providers/mocks/MockSolanaRpcFactory.js.map +1 -1
- package/dist/cjs/providers/mocks/index.js +1 -1
- package/dist/cjs/providers/mocks/mockEthersProvider.js +29 -31
- package/dist/cjs/providers/mocks/mockEthersProvider.js.map +1 -1
- package/dist/cjs/providers/quicknode.js +19 -21
- package/dist/cjs/providers/quicknode.js.map +1 -1
- package/dist/cjs/providers/rateLimitedProvider.js +64 -79
- package/dist/cjs/providers/rateLimitedProvider.js.map +1 -1
- package/dist/cjs/providers/retryProvider.js +163 -246
- package/dist/cjs/providers/retryProvider.js.map +1 -1
- package/dist/cjs/providers/solana/baseRpcFactories.js +14 -18
- package/dist/cjs/providers/solana/baseRpcFactories.js.map +1 -1
- package/dist/cjs/providers/solana/cachedRpcFactory.js +70 -112
- package/dist/cjs/providers/solana/cachedRpcFactory.js.map +1 -1
- package/dist/cjs/providers/solana/defaultRpcFactory.js +8 -15
- package/dist/cjs/providers/solana/defaultRpcFactory.js.map +1 -1
- package/dist/cjs/providers/solana/index.js +1 -1
- package/dist/cjs/providers/solana/quorumFallbackRpcFactory.js +135 -191
- package/dist/cjs/providers/solana/quorumFallbackRpcFactory.js.map +1 -1
- package/dist/cjs/providers/solana/rateLimitedRpcFactory.js +67 -90
- package/dist/cjs/providers/solana/rateLimitedRpcFactory.js.map +1 -1
- package/dist/cjs/providers/solana/retryRpcFactory.js +52 -79
- package/dist/cjs/providers/solana/retryRpcFactory.js.map +1 -1
- package/dist/cjs/providers/solana/utils.js +2 -2
- package/dist/cjs/providers/solana/utils.js.map +1 -1
- package/dist/cjs/providers/speedProvider.js +31 -53
- package/dist/cjs/providers/speedProvider.js.map +1 -1
- package/dist/cjs/providers/types.js +1 -1
- package/dist/cjs/providers/types.js.map +1 -1
- package/dist/cjs/providers/utils.js +26 -28
- package/dist/cjs/providers/utils.js.map +1 -1
- package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.js +108 -162
- package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.js.map +1 -1
- package/dist/cjs/relayFeeCalculator/chain-queries/customGasToken.js +14 -26
- package/dist/cjs/relayFeeCalculator/chain-queries/customGasToken.js.map +1 -1
- package/dist/cjs/relayFeeCalculator/chain-queries/factory.js +20 -29
- package/dist/cjs/relayFeeCalculator/chain-queries/factory.js.map +1 -1
- package/dist/cjs/relayFeeCalculator/chain-queries/index.js +1 -1
- package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.js +88 -137
- package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -1
- package/dist/cjs/relayFeeCalculator/index.js +1 -1
- package/dist/cjs/relayFeeCalculator/relayFeeCalculator.js +199 -297
- package/dist/cjs/relayFeeCalculator/relayFeeCalculator.js.map +1 -1
- package/dist/cjs/typeguards/error.js +5 -7
- package/dist/cjs/typeguards/error.js.map +1 -1
- package/dist/cjs/typeguards/index.js +1 -1
- package/dist/cjs/utils/AddressUtils.js +117 -144
- package/dist/cjs/utils/AddressUtils.js.map +1 -1
- package/dist/cjs/utils/ArrayUtils.js +21 -78
- package/dist/cjs/utils/ArrayUtils.js.map +1 -1
- package/dist/cjs/utils/BigNumberUtils.js +9 -10
- package/dist/cjs/utils/BigNumberUtils.js.map +1 -1
- package/dist/cjs/utils/BlockExplorerUtils.js +26 -30
- package/dist/cjs/utils/BlockExplorerUtils.js.map +1 -1
- package/dist/cjs/utils/BlockFinder.js +2 -5
- package/dist/cjs/utils/BlockFinder.js.map +1 -1
- package/dist/cjs/utils/BlockUtils.js +24 -41
- package/dist/cjs/utils/BlockUtils.js.map +1 -1
- package/dist/cjs/utils/BundleUtils.js +21 -24
- package/dist/cjs/utils/BundleUtils.js.map +1 -1
- package/dist/cjs/utils/CCTPUtils.js +62 -126
- package/dist/cjs/utils/CCTPUtils.js.map +1 -1
- package/dist/cjs/utils/CachingUtils.js +20 -42
- package/dist/cjs/utils/CachingUtils.js.map +1 -1
- package/dist/cjs/utils/ContractUtils.js +5 -5
- package/dist/cjs/utils/ContractUtils.js.map +1 -1
- package/dist/cjs/utils/DepositUtils.js +122 -99
- package/dist/cjs/utils/DepositUtils.js.map +1 -1
- package/dist/cjs/utils/EventUtils.js +49 -70
- package/dist/cjs/utils/EventUtils.js.map +1 -1
- package/dist/cjs/utils/FormattingUtils.js +26 -32
- package/dist/cjs/utils/FormattingUtils.js.map +1 -1
- package/dist/cjs/utils/HyperLiquidUtils.js +10 -23
- package/dist/cjs/utils/HyperLiquidUtils.js.map +1 -1
- package/dist/cjs/utils/IPFSUtils.js +16 -34
- package/dist/cjs/utils/IPFSUtils.js.map +1 -1
- package/dist/cjs/utils/JSONUtils.js +6 -6
- package/dist/cjs/utils/JSONUtils.js.map +1 -1
- package/dist/cjs/utils/LogUtils.js +10 -12
- package/dist/cjs/utils/LogUtils.js.map +1 -1
- package/dist/cjs/utils/Multicall.js +56 -115
- package/dist/cjs/utils/Multicall.js.map +1 -1
- package/dist/cjs/utils/NetworkUtils.js +12 -28
- package/dist/cjs/utils/NetworkUtils.js.map +1 -1
- package/dist/cjs/utils/NumberUtils.js +1 -3
- package/dist/cjs/utils/NumberUtils.js.map +1 -1
- package/dist/cjs/utils/ObjectUtils.js +27 -41
- package/dist/cjs/utils/ObjectUtils.js.map +1 -1
- package/dist/cjs/utils/Profiler.js +80 -83
- package/dist/cjs/utils/Profiler.js.map +1 -1
- package/dist/cjs/utils/ReviverUtils.js +5 -9
- package/dist/cjs/utils/ReviverUtils.js.map +1 -1
- package/dist/cjs/utils/SpokeUtils.js +84 -84
- package/dist/cjs/utils/SpokeUtils.js.map +1 -1
- package/dist/cjs/utils/TokenUtils.js +41 -64
- package/dist/cjs/utils/TokenUtils.js.map +1 -1
- package/dist/cjs/utils/TypeGuards.js +1 -1
- package/dist/cjs/utils/TypeGuards.js.map +1 -1
- package/dist/cjs/utils/ValidatorUtils.js +7 -7
- package/dist/cjs/utils/ValidatorUtils.js.map +1 -1
- package/dist/cjs/utils/abi/contracts/index.js +1 -1
- package/dist/cjs/utils/abi/index.js +12 -22
- package/dist/cjs/utils/abi/index.js.map +1 -1
- package/dist/cjs/utils/abi/typechain/factories/Multicall3__factory.js +9 -12
- package/dist/cjs/utils/abi/typechain/factories/Multicall3__factory.js.map +1 -1
- package/dist/cjs/utils/abi/typechain/index.js +1 -1
- package/dist/cjs/utils/common.js +40 -53
- package/dist/cjs/utils/common.js.map +1 -1
- package/dist/cjs/utils/index.js +1 -1
- package/dist/esm/addressAggregator/adapters/abstract.js +48 -64
- package/dist/esm/addressAggregator/adapters/abstract.js.map +1 -1
- package/dist/esm/addressAggregator/adapters/bybit.js +15 -29
- package/dist/esm/addressAggregator/adapters/bybit.js.map +1 -1
- package/dist/esm/addressAggregator/adapters/env.js +9 -14
- package/dist/esm/addressAggregator/adapters/env.js.map +1 -1
- package/dist/esm/addressAggregator/adapters/file.js +29 -43
- package/dist/esm/addressAggregator/adapters/file.js.map +1 -1
- package/dist/esm/addressAggregator/adapters/risklabs.js +20 -35
- package/dist/esm/addressAggregator/adapters/risklabs.js.map +1 -1
- package/dist/esm/addressAggregator/index.js +52 -83
- package/dist/esm/addressAggregator/index.js.map +1 -1
- package/dist/esm/addressAggregator/types.js +1 -1
- package/dist/esm/addressAggregator/types.js.map +1 -1
- package/dist/esm/apiClient/abstractClient.js +15 -9
- package/dist/esm/apiClient/abstractClient.js.map +1 -1
- package/dist/esm/apiClient/mockedClient.js +21 -26
- package/dist/esm/apiClient/mockedClient.js.map +1 -1
- package/dist/esm/apiClient/productionClient.js +61 -101
- package/dist/esm/apiClient/productionClient.js.map +1 -1
- package/dist/esm/arch/evm/BlockUtils.js +139 -217
- package/dist/esm/arch/evm/BlockUtils.js.map +1 -1
- package/dist/esm/arch/evm/SpokeUtils.js +146 -289
- package/dist/esm/arch/evm/SpokeUtils.js.map +1 -1
- package/dist/esm/arch/evm/utils/wait.js +34 -46
- package/dist/esm/arch/evm/utils/wait.js.map +1 -1
- package/dist/esm/arch/svm/BlockUtils.js +118 -166
- package/dist/esm/arch/svm/BlockUtils.js.map +1 -1
- package/dist/esm/arch/svm/SpokeUtils.js +738 -1150
- package/dist/esm/arch/svm/SpokeUtils.js.map +1 -1
- package/dist/esm/arch/svm/constants.js +1 -1
- package/dist/esm/arch/svm/constants.js.map +1 -1
- package/dist/esm/arch/svm/eventsClient.js +172 -232
- package/dist/esm/arch/svm/eventsClient.js.map +1 -1
- package/dist/esm/arch/svm/provider.js +1 -1
- package/dist/esm/arch/svm/provider.js.map +1 -1
- package/dist/esm/arch/svm/utils.js +155 -345
- package/dist/esm/arch/svm/utils.js.map +1 -1
- package/dist/esm/caching/Arweave/ArweaveClient.js +182 -256
- package/dist/esm/caching/Arweave/ArweaveClient.js.map +1 -1
- package/dist/esm/caching/IPFS/PinataIPFSClient.js +47 -48
- package/dist/esm/caching/IPFS/PinataIPFSClient.js.map +1 -1
- package/dist/esm/caching/Memory/MemoryCacheClient.js +13 -19
- package/dist/esm/caching/Memory/MemoryCacheClient.js.map +1 -1
- package/dist/esm/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js +333 -408
- package/dist/esm/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js.map +1 -1
- package/dist/esm/clients/BaseAbstractClient.js +66 -92
- package/dist/esm/clients/BaseAbstractClient.js.map +1 -1
- package/dist/esm/clients/BundleDataClient/BundleDataClient.js +927 -1054
- package/dist/esm/clients/BundleDataClient/BundleDataClient.js.map +1 -1
- package/dist/esm/clients/BundleDataClient/utils/DataworkerUtils.js +102 -131
- package/dist/esm/clients/BundleDataClient/utils/DataworkerUtils.js.map +1 -1
- package/dist/esm/clients/BundleDataClient/utils/FillUtils.js +57 -59
- package/dist/esm/clients/BundleDataClient/utils/FillUtils.js.map +1 -1
- package/dist/esm/clients/BundleDataClient/utils/MerkleTreeUtils.js +7 -5
- package/dist/esm/clients/BundleDataClient/utils/MerkleTreeUtils.js.map +1 -1
- package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js +75 -94
- package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
- package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.js +45 -23
- package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.js.map +1 -1
- package/dist/esm/clients/HubPoolClient.js +581 -740
- package/dist/esm/clients/HubPoolClient.js.map +1 -1
- package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.js +133 -178
- package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.js.map +1 -1
- package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.js +126 -183
- package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.js.map +1 -1
- package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js +372 -399
- package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
- package/dist/esm/clients/SpokePoolClient/SpokePoolClientManager.js +9 -9
- package/dist/esm/clients/SpokePoolClient/SpokePoolClientManager.js.map +1 -1
- package/dist/esm/clients/SpokePoolClient/index.js +2 -2
- package/dist/esm/clients/SpokePoolClient/index.js.map +1 -1
- package/dist/esm/clients/SpokePoolClient/types.js +2 -2
- package/dist/esm/clients/SpokePoolClient/types.js.map +1 -1
- package/dist/esm/clients/mocks/MockConfigStoreClient.js +53 -64
- package/dist/esm/clients/mocks/MockConfigStoreClient.js.map +1 -1
- package/dist/esm/clients/mocks/MockEvents.js +42 -49
- package/dist/esm/clients/mocks/MockEvents.js.map +1 -1
- package/dist/esm/clients/mocks/MockHubPoolClient.js +138 -182
- package/dist/esm/clients/mocks/MockHubPoolClient.js.map +1 -1
- package/dist/esm/clients/mocks/MockSpokePoolClient.js +202 -188
- package/dist/esm/clients/mocks/MockSpokePoolClient.js.map +1 -1
- package/dist/esm/clients/mocks/MockSvmCpiEventsClient.js +127 -132
- package/dist/esm/clients/mocks/MockSvmCpiEventsClient.js.map +1 -1
- package/dist/esm/clients/mocks/MockSvmSpokePoolClient.js +53 -69
- package/dist/esm/clients/mocks/MockSvmSpokePoolClient.js.map +1 -1
- package/dist/esm/coingecko/Coingecko.js +298 -443
- package/dist/esm/coingecko/Coingecko.js.map +1 -1
- package/dist/esm/constants.js +40 -47
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/contracts/acrossConfigStore.js +24 -46
- package/dist/esm/contracts/acrossConfigStore.js.map +1 -1
- package/dist/esm/contracts/hubPool.js +34 -18
- package/dist/esm/contracts/hubPool.js.map +1 -1
- package/dist/esm/contracts/utils.js +3 -5
- package/dist/esm/contracts/utils.js.map +1 -1
- package/dist/esm/gasPriceOracle/adapters/arbitrum.js +6 -14
- package/dist/esm/gasPriceOracle/adapters/arbitrum.js.map +1 -1
- package/dist/esm/gasPriceOracle/adapters/ethereum.js +22 -42
- package/dist/esm/gasPriceOracle/adapters/ethereum.js.map +1 -1
- package/dist/esm/gasPriceOracle/adapters/linea-viem.js +13 -25
- package/dist/esm/gasPriceOracle/adapters/linea-viem.js.map +1 -1
- package/dist/esm/gasPriceOracle/adapters/polygon.js +72 -108
- package/dist/esm/gasPriceOracle/adapters/polygon.js.map +1 -1
- package/dist/esm/gasPriceOracle/adapters/solana.js +22 -31
- package/dist/esm/gasPriceOracle/adapters/solana.js.map +1 -1
- package/dist/esm/gasPriceOracle/oracle.js +70 -96
- package/dist/esm/gasPriceOracle/oracle.js.map +1 -1
- package/dist/esm/gasPriceOracle/types.js +2 -2
- package/dist/esm/gasPriceOracle/types.js.map +1 -1
- package/dist/esm/gasPriceOracle/util.js +4 -4
- package/dist/esm/gasPriceOracle/util.js.map +1 -1
- package/dist/esm/lpFeeCalculator/lpFeeCalculator.js +30 -33
- package/dist/esm/lpFeeCalculator/lpFeeCalculator.js.map +1 -1
- package/dist/esm/lpFeeCalculator/rateModel.js +7 -9
- package/dist/esm/lpFeeCalculator/rateModel.js.map +1 -1
- package/dist/esm/merkleDistributor/MerkleDistributor.js +18 -17
- package/dist/esm/merkleDistributor/MerkleDistributor.js.map +1 -1
- package/dist/esm/pool/TransactionManager.js +45 -100
- package/dist/esm/pool/TransactionManager.js.map +1 -1
- package/dist/esm/pool/poolClient.js +479 -740
- package/dist/esm/pool/poolClient.js.map +1 -1
- package/dist/esm/pool/uma/across/constants.js +2 -2
- package/dist/esm/pool/uma/across/constants.js.map +1 -1
- package/dist/esm/pool/uma/across/transactionManager.js +45 -100
- package/dist/esm/pool/uma/across/transactionManager.js.map +1 -1
- package/dist/esm/pool/uma/clients/erc20/client.js +15 -13
- package/dist/esm/pool/uma/clients/erc20/client.js.map +1 -1
- package/dist/esm/pool/uma/oracle/utils.js +2 -3
- package/dist/esm/pool/uma/oracle/utils.js.map +1 -1
- package/dist/esm/pool/uma/utils.js +9 -28
- package/dist/esm/pool/uma/utils.js.map +1 -1
- package/dist/esm/priceClient/adapters/acrossApi.js +21 -40
- package/dist/esm/priceClient/adapters/acrossApi.js.map +1 -1
- package/dist/esm/priceClient/adapters/baseAdapter.js +46 -72
- package/dist/esm/priceClient/adapters/baseAdapter.js.map +1 -1
- package/dist/esm/priceClient/adapters/coingecko.js +33 -61
- package/dist/esm/priceClient/adapters/coingecko.js.map +1 -1
- package/dist/esm/priceClient/adapters/default.js +15 -31
- package/dist/esm/priceClient/adapters/default.js.map +1 -1
- package/dist/esm/priceClient/adapters/defiLlama.js +38 -73
- package/dist/esm/priceClient/adapters/defiLlama.js.map +1 -1
- package/dist/esm/priceClient/priceClient.js +109 -158
- package/dist/esm/priceClient/priceClient.js.map +1 -1
- package/dist/esm/providers/alchemy.js +16 -18
- package/dist/esm/providers/alchemy.js.map +1 -1
- package/dist/esm/providers/cachedProvider.js +99 -134
- package/dist/esm/providers/cachedProvider.js.map +1 -1
- package/dist/esm/providers/constants.js +3 -3
- package/dist/esm/providers/constants.js.map +1 -1
- package/dist/esm/providers/drpc.js +8 -10
- package/dist/esm/providers/drpc.js.map +1 -1
- package/dist/esm/providers/infura.js +9 -11
- package/dist/esm/providers/infura.js.map +1 -1
- package/dist/esm/providers/mocks/MockCachedSolanaRpcFactory.js +6 -15
- package/dist/esm/providers/mocks/MockCachedSolanaRpcFactory.js.map +1 -1
- package/dist/esm/providers/mocks/MockRateLimitedSolanaRpcFactory.js +5 -14
- package/dist/esm/providers/mocks/MockRateLimitedSolanaRpcFactory.js.map +1 -1
- package/dist/esm/providers/mocks/MockRetrySolanaRpcFactory.js +6 -15
- package/dist/esm/providers/mocks/MockRetrySolanaRpcFactory.js.map +1 -1
- package/dist/esm/providers/mocks/MockSolanaRpcFactory.js +41 -66
- package/dist/esm/providers/mocks/MockSolanaRpcFactory.js.map +1 -1
- package/dist/esm/providers/mocks/mockEthersProvider.js +27 -30
- package/dist/esm/providers/mocks/mockEthersProvider.js.map +1 -1
- package/dist/esm/providers/quicknode.js +18 -20
- package/dist/esm/providers/quicknode.js.map +1 -1
- package/dist/esm/providers/rateLimitedProvider.js +68 -80
- package/dist/esm/providers/rateLimitedProvider.js.map +1 -1
- package/dist/esm/providers/retryProvider.js +186 -259
- package/dist/esm/providers/retryProvider.js.map +1 -1
- package/dist/esm/providers/solana/baseRpcFactories.js +13 -19
- package/dist/esm/providers/solana/baseRpcFactories.js.map +1 -1
- package/dist/esm/providers/solana/cachedRpcFactory.js +75 -112
- package/dist/esm/providers/solana/cachedRpcFactory.js.map +1 -1
- package/dist/esm/providers/solana/defaultRpcFactory.js +6 -14
- package/dist/esm/providers/solana/defaultRpcFactory.js.map +1 -1
- package/dist/esm/providers/solana/quorumFallbackRpcFactory.js +149 -202
- package/dist/esm/providers/solana/quorumFallbackRpcFactory.js.map +1 -1
- package/dist/esm/providers/solana/rateLimitedRpcFactory.js +70 -90
- package/dist/esm/providers/solana/rateLimitedRpcFactory.js.map +1 -1
- package/dist/esm/providers/solana/retryRpcFactory.js +50 -74
- package/dist/esm/providers/solana/retryRpcFactory.js.map +1 -1
- package/dist/esm/providers/solana/utils.js +1 -1
- package/dist/esm/providers/solana/utils.js.map +1 -1
- package/dist/esm/providers/speedProvider.js +28 -51
- package/dist/esm/providers/speedProvider.js.map +1 -1
- package/dist/esm/providers/types.js +2 -2
- package/dist/esm/providers/types.js.map +1 -1
- package/dist/esm/providers/utils.js +17 -20
- package/dist/esm/providers/utils.js.map +1 -1
- package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.js +98 -152
- package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.js.map +1 -1
- package/dist/esm/relayFeeCalculator/chain-queries/customGasToken.js +13 -26
- package/dist/esm/relayFeeCalculator/chain-queries/customGasToken.js.map +1 -1
- package/dist/esm/relayFeeCalculator/chain-queries/factory.js +9 -19
- package/dist/esm/relayFeeCalculator/chain-queries/factory.js.map +1 -1
- package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js +83 -128
- package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -1
- package/dist/esm/relayFeeCalculator/relayFeeCalculator.js +211 -299
- package/dist/esm/relayFeeCalculator/relayFeeCalculator.js.map +1 -1
- package/dist/esm/typeguards/error.js +3 -5
- package/dist/esm/typeguards/error.js.map +1 -1
- package/dist/esm/utils/AddressUtils.js +115 -147
- package/dist/esm/utils/AddressUtils.js.map +1 -1
- package/dist/esm/utils/ArrayUtils.js +21 -78
- package/dist/esm/utils/ArrayUtils.js.map +1 -1
- package/dist/esm/utils/BigNumberUtils.js +11 -12
- package/dist/esm/utils/BigNumberUtils.js.map +1 -1
- package/dist/esm/utils/BlockExplorerUtils.js +19 -23
- package/dist/esm/utils/BlockExplorerUtils.js.map +1 -1
- package/dist/esm/utils/BlockFinder.js +2 -6
- package/dist/esm/utils/BlockFinder.js.map +1 -1
- package/dist/esm/utils/BlockUtils.js +31 -40
- package/dist/esm/utils/BlockUtils.js.map +1 -1
- package/dist/esm/utils/BundleUtils.js +21 -24
- package/dist/esm/utils/BundleUtils.js.map +1 -1
- package/dist/esm/utils/CCTPUtils.js +62 -123
- package/dist/esm/utils/CCTPUtils.js.map +1 -1
- package/dist/esm/utils/CachingUtils.js +17 -38
- package/dist/esm/utils/CachingUtils.js.map +1 -1
- package/dist/esm/utils/ContractUtils.js +3 -3
- package/dist/esm/utils/ContractUtils.js.map +1 -1
- package/dist/esm/utils/DepositUtils.js +121 -98
- package/dist/esm/utils/DepositUtils.js.map +1 -1
- package/dist/esm/utils/EventUtils.js +52 -69
- package/dist/esm/utils/EventUtils.js.map +1 -1
- package/dist/esm/utils/FormattingUtils.js +20 -26
- package/dist/esm/utils/FormattingUtils.js.map +1 -1
- package/dist/esm/utils/HyperLiquidUtils.js +8 -22
- package/dist/esm/utils/HyperLiquidUtils.js.map +1 -1
- package/dist/esm/utils/IPFSUtils.js +16 -35
- package/dist/esm/utils/IPFSUtils.js.map +1 -1
- package/dist/esm/utils/JSONUtils.js +4 -4
- package/dist/esm/utils/JSONUtils.js.map +1 -1
- package/dist/esm/utils/LogUtils.js +8 -12
- package/dist/esm/utils/LogUtils.js.map +1 -1
- package/dist/esm/utils/Multicall.js +50 -110
- package/dist/esm/utils/Multicall.js.map +1 -1
- package/dist/esm/utils/NetworkUtils.js +12 -28
- package/dist/esm/utils/NetworkUtils.js.map +1 -1
- package/dist/esm/utils/NumberUtils.js +1 -3
- package/dist/esm/utils/NumberUtils.js.map +1 -1
- package/dist/esm/utils/ObjectUtils.js +27 -41
- package/dist/esm/utils/ObjectUtils.js.map +1 -1
- package/dist/esm/utils/Profiler.js +77 -82
- package/dist/esm/utils/Profiler.js.map +1 -1
- package/dist/esm/utils/ReviverUtils.js +3 -7
- package/dist/esm/utils/ReviverUtils.js.map +1 -1
- package/dist/esm/utils/SpokeUtils.js +83 -78
- package/dist/esm/utils/SpokeUtils.js.map +1 -1
- package/dist/esm/utils/TokenUtils.js +33 -57
- package/dist/esm/utils/TokenUtils.js.map +1 -1
- package/dist/esm/utils/ValidatorUtils.js +4 -4
- package/dist/esm/utils/ValidatorUtils.js.map +1 -1
- package/dist/esm/utils/abi/index.js +10 -20
- package/dist/esm/utils/abi/index.js.map +1 -1
- package/dist/esm/utils/abi/typechain/factories/Multicall3__factory.js +8 -12
- package/dist/esm/utils/abi/typechain/factories/Multicall3__factory.js.map +1 -1
- package/dist/esm/utils/common.js +38 -52
- package/dist/esm/utils/common.js.map +1 -1
- package/dist/types/constants.d.ts.map +1 -1
- package/dist/types/gasPriceOracle/oracle.d.ts.map +1 -1
- package/dist/types/utils/Multicall.d.ts.map +1 -1
- package/dist/types/utils/NetworkUtils.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/constants.ts +0 -1
- package/src/gasPriceOracle/oracle.ts +0 -1
- package/src/utils/Multicall.ts +0 -1
- package/src/utils/NetworkUtils.ts +1 -8
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { __assign, __awaiter, __generator } from "tslib";
|
|
2
1
|
import { MessageTransmitterClient, SpokePool__factory, SvmSpokeClient } from "@across-protocol/contracts";
|
|
3
2
|
import { BN, BorshEventCoder } from "@coral-xyz/anchor";
|
|
4
3
|
import { address, appendTransactionMessageInstruction, createTransactionMessage, getAddressEncoder, getBase64EncodedWireTransaction, getProgramDerivedAddress, getU32Encoder, getU64Encoder, isAddress, pipe, setTransactionMessageFeePayerSigner, setTransactionMessageLifetimeUsingBlockhash, signTransactionMessageWithSigners, } from "@solana/kit";
|
|
@@ -12,34 +11,20 @@ import { SVMEventNames } from "./types";
|
|
|
12
11
|
/**
|
|
13
12
|
* Basic void TransactionSigner type
|
|
14
13
|
*/
|
|
15
|
-
export
|
|
14
|
+
export const SolanaVoidSigner = (simulationAddress) => {
|
|
16
15
|
return {
|
|
17
16
|
address: address(simulationAddress),
|
|
18
|
-
signAndSendTransactions:
|
|
19
|
-
return
|
|
20
|
-
|
|
21
|
-
case 0: return [4 /*yield*/, Promise.resolve([])];
|
|
22
|
-
case 1: return [2 /*return*/, _a.sent()];
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
}); },
|
|
17
|
+
signAndSendTransactions: async () => {
|
|
18
|
+
return await Promise.resolve([]);
|
|
19
|
+
},
|
|
26
20
|
};
|
|
27
21
|
};
|
|
28
22
|
/**
|
|
29
23
|
* Helper to determine if the current RPC network is devnet.
|
|
30
24
|
*/
|
|
31
|
-
export function isDevnet(rpc) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
return __generator(this, function (_a) {
|
|
35
|
-
switch (_a.label) {
|
|
36
|
-
case 0: return [4 /*yield*/, rpc.getGenesisHash().send()];
|
|
37
|
-
case 1:
|
|
38
|
-
genesisHash = _a.sent();
|
|
39
|
-
return [2 /*return*/, genesisHash === "EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG"];
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
});
|
|
25
|
+
export async function isDevnet(rpc) {
|
|
26
|
+
const genesisHash = await rpc.getGenesisHash().send();
|
|
27
|
+
return genesisHash === "EtWTRABZaYq6iMfeYKouRu166VU2xqa1wcaWoxPkrZBG";
|
|
43
28
|
}
|
|
44
29
|
/**
|
|
45
30
|
* Small utility to convert an Address to a Solana Kit branded type.
|
|
@@ -53,75 +38,36 @@ export function toAddress(address) {
|
|
|
53
38
|
* @param opts An object containing a specific slot number, or a Solana commitment, defaulting to "confirmed".
|
|
54
39
|
* @returns An object containing the slot number and the relevant timestamp for the block.
|
|
55
40
|
*/
|
|
56
|
-
export function getNearestSlotTime(
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
return [3 /*break*/, 3];
|
|
66
|
-
case 1: return [4 /*yield*/, getSlot(provider, opts.commitment, logger)];
|
|
67
|
-
case 2:
|
|
68
|
-
_a = _b.sent();
|
|
69
|
-
_b.label = 3;
|
|
70
|
-
case 3:
|
|
71
|
-
slot = _a;
|
|
72
|
-
maxRetries = undefined;
|
|
73
|
-
_b.label = 4;
|
|
74
|
-
case 4: return [4 /*yield*/, getTimestampForSlot(provider, slot, maxRetries, logger)];
|
|
75
|
-
case 5:
|
|
76
|
-
timestamp = _b.sent();
|
|
77
|
-
_b.label = 6;
|
|
78
|
-
case 6:
|
|
79
|
-
if (!isDefined(timestamp) && --slot) return [3 /*break*/, 4];
|
|
80
|
-
_b.label = 7;
|
|
81
|
-
case 7:
|
|
82
|
-
assert(isDefined(timestamp), "Unable to resolve block time for SVM slot ".concat(slot));
|
|
83
|
-
return [2 /*return*/, { slot: slot, timestamp: timestamp }];
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
});
|
|
41
|
+
export async function getNearestSlotTime(provider, opts = { commitment: "confirmed" }, logger) {
|
|
42
|
+
let timestamp;
|
|
43
|
+
let slot = "slot" in opts ? opts.slot : await getSlot(provider, opts.commitment, logger);
|
|
44
|
+
const maxRetries = undefined; // Inherit defaults
|
|
45
|
+
do {
|
|
46
|
+
timestamp = await getTimestampForSlot(provider, slot, maxRetries, logger);
|
|
47
|
+
} while (!isDefined(timestamp) && --slot);
|
|
48
|
+
assert(isDefined(timestamp), `Unable to resolve block time for SVM slot ${slot}`);
|
|
49
|
+
return { slot, timestamp };
|
|
87
50
|
}
|
|
88
51
|
/**
|
|
89
52
|
* Resolve the latest finalized slot, and then work backwards to find the nearest slot containing a block.
|
|
90
53
|
* In most cases the first-resolved slot should also have a block. Avoid making arbitrary decisions about
|
|
91
54
|
* how many slots to rotate through.
|
|
92
55
|
*/
|
|
93
|
-
export function getLatestFinalizedSlotWithBlock(
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
case 3:
|
|
109
|
-
block = _a.sent();
|
|
110
|
-
if (isDefined(block) && [block.blockHeight, block.blockTime].every(isDefined)) {
|
|
111
|
-
return [3 /*break*/, 5];
|
|
112
|
-
}
|
|
113
|
-
_a.label = 4;
|
|
114
|
-
case 4:
|
|
115
|
-
if (--maxLookback > 0 && --slot > 0) return [3 /*break*/, 2];
|
|
116
|
-
_a.label = 5;
|
|
117
|
-
case 5:
|
|
118
|
-
if (maxLookback === 0) {
|
|
119
|
-
throw new Error("Unable to find Solana block between slots [".concat(slot, ", ").concat(endSlot, "]"));
|
|
120
|
-
}
|
|
121
|
-
return [2 /*return*/, Number(slot)];
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
});
|
|
56
|
+
export async function getLatestFinalizedSlotWithBlock(provider, logger, maxSlot, maxLookback = 1000) {
|
|
57
|
+
const opts = { maxSupportedTransactionVersion: 0, transactionDetails: "none", rewards: false };
|
|
58
|
+
const { slot: finalizedSlot } = await getNearestSlotTime(provider, { commitment: "finalized" }, logger);
|
|
59
|
+
const endSlot = biMin(maxSlot, finalizedSlot);
|
|
60
|
+
let slot = endSlot;
|
|
61
|
+
do {
|
|
62
|
+
const block = await provider.getBlock(slot, opts).send();
|
|
63
|
+
if (isDefined(block) && [block.blockHeight, block.blockTime].every(isDefined)) {
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
} while (--maxLookback > 0 && --slot > 0);
|
|
67
|
+
if (maxLookback === 0) {
|
|
68
|
+
throw new Error(`Unable to find Solana block between slots [${slot}, ${endSlot}]`);
|
|
69
|
+
}
|
|
70
|
+
return Number(slot);
|
|
125
71
|
}
|
|
126
72
|
/**
|
|
127
73
|
* Parses event data from a transaction.
|
|
@@ -137,7 +83,7 @@ export function parseEventData(eventData) {
|
|
|
137
83
|
return new Uint8Array(eventData);
|
|
138
84
|
}
|
|
139
85
|
if (typeof eventData === "object") {
|
|
140
|
-
|
|
86
|
+
const stringTag = Object.prototype.toString.call(eventData);
|
|
141
87
|
if (stringTag.includes("PublicKey")) {
|
|
142
88
|
return address(eventData.toString());
|
|
143
89
|
}
|
|
@@ -145,10 +91,7 @@ export function parseEventData(eventData) {
|
|
|
145
91
|
return BigInt(eventData.toString());
|
|
146
92
|
}
|
|
147
93
|
// Convert each key from snake_case to camelCase and process the value recursively.
|
|
148
|
-
return Object.fromEntries(Object.entries(eventData).map(
|
|
149
|
-
var key = _a[0], value = _a[1];
|
|
150
|
-
return [snakeToCamel(key), parseEventData(value)];
|
|
151
|
-
}));
|
|
94
|
+
return Object.fromEntries(Object.entries(eventData).map(([key, value]) => [snakeToCamel(key), parseEventData(value)]));
|
|
152
95
|
}
|
|
153
96
|
return eventData;
|
|
154
97
|
}
|
|
@@ -156,9 +99,9 @@ export function parseEventData(eventData) {
|
|
|
156
99
|
* Decodes a raw event according to a supplied IDL.
|
|
157
100
|
*/
|
|
158
101
|
export function decodeEvent(idl, rawEvent) {
|
|
159
|
-
|
|
102
|
+
const event = new BorshEventCoder(idl).decode(rawEvent);
|
|
160
103
|
if (!event)
|
|
161
|
-
throw new Error(
|
|
104
|
+
throw new Error(`Malformed rawEvent for IDL ${idl.address}: ${rawEvent}`);
|
|
162
105
|
return {
|
|
163
106
|
name: event.name,
|
|
164
107
|
data: parseEventData(event.data),
|
|
@@ -168,29 +111,28 @@ export function decodeEvent(idl, rawEvent) {
|
|
|
168
111
|
* Converts a snake_case string to camelCase.
|
|
169
112
|
*/
|
|
170
113
|
function snakeToCamel(s) {
|
|
171
|
-
return s.replace(/(_\w)/g,
|
|
114
|
+
return s.replace(/(_\w)/g, (match) => match[1].toUpperCase());
|
|
172
115
|
}
|
|
173
116
|
/**
|
|
174
117
|
* Gets the event name from a raw name.
|
|
175
118
|
*/
|
|
176
119
|
export function getEventName(rawName) {
|
|
177
|
-
if (Object.values(SVMEventNames).some(
|
|
120
|
+
if (Object.values(SVMEventNames).some((name) => rawName.includes(name)))
|
|
178
121
|
return rawName;
|
|
179
|
-
throw new Error(
|
|
122
|
+
throw new Error(`Unknown event name: ${rawName}`);
|
|
180
123
|
}
|
|
181
124
|
/**
|
|
182
125
|
* Unwraps any data structure and converts Address types to strings and Uint8Array to hex or BigInt.
|
|
183
126
|
* Recursively processes nested objects and arrays.
|
|
184
127
|
*/
|
|
185
|
-
export function unwrapEventData(data, uint8ArrayKeysAsBigInt, currentKey) {
|
|
186
|
-
if (uint8ArrayKeysAsBigInt === void 0) { uint8ArrayKeysAsBigInt = ["depositId", "outputAmount", "inputAmount"]; }
|
|
128
|
+
export function unwrapEventData(data, uint8ArrayKeysAsBigInt = ["depositId", "outputAmount", "inputAmount"], currentKey) {
|
|
187
129
|
// Handle null/undefined
|
|
188
130
|
if (data == null) {
|
|
189
131
|
return data;
|
|
190
132
|
}
|
|
191
133
|
// Handle BigInt
|
|
192
134
|
if (typeof data === "bigint") {
|
|
193
|
-
|
|
135
|
+
const bigIntKeysAsNumber = ["originChainId", "destinationChainId", "repaymentChainId", "chainId"];
|
|
194
136
|
if (currentKey && bigIntKeysAsNumber.includes(currentKey)) {
|
|
195
137
|
return Number(data);
|
|
196
138
|
}
|
|
@@ -198,8 +140,8 @@ export function unwrapEventData(data, uint8ArrayKeysAsBigInt, currentKey) {
|
|
|
198
140
|
}
|
|
199
141
|
// Handle Uint8Array and byte arrays
|
|
200
142
|
if (data instanceof Uint8Array || isUint8Array(data)) {
|
|
201
|
-
|
|
202
|
-
|
|
143
|
+
const bytes = data instanceof Uint8Array ? data : new Uint8Array(data);
|
|
144
|
+
const hex = ethers.utils.hexlify(bytes);
|
|
203
145
|
if (currentKey && uint8ArrayKeysAsBigInt.includes(currentKey)) {
|
|
204
146
|
return BigNumber.from(hex);
|
|
205
147
|
}
|
|
@@ -207,7 +149,7 @@ export function unwrapEventData(data, uint8ArrayKeysAsBigInt, currentKey) {
|
|
|
207
149
|
}
|
|
208
150
|
// Handle regular arrays (non-byte arrays)
|
|
209
151
|
if (Array.isArray(data)) {
|
|
210
|
-
return data.map(
|
|
152
|
+
return data.map((item) => unwrapEventData(item, uint8ArrayKeysAsBigInt));
|
|
211
153
|
}
|
|
212
154
|
// Handle strings (potential addresses)
|
|
213
155
|
if (typeof data === "string" && isAddress(data)) {
|
|
@@ -218,7 +160,7 @@ export function unwrapEventData(data, uint8ArrayKeysAsBigInt, currentKey) {
|
|
|
218
160
|
// Special case: if an object is in the context of the fillType key, then
|
|
219
161
|
// parse out the fillType from the object
|
|
220
162
|
if (currentKey === "fillType") {
|
|
221
|
-
|
|
163
|
+
const fillType = Object.keys(data)[0];
|
|
222
164
|
switch (fillType) {
|
|
223
165
|
case "FastFill":
|
|
224
166
|
return FillType.FastFill;
|
|
@@ -227,20 +169,17 @@ export function unwrapEventData(data, uint8ArrayKeysAsBigInt, currentKey) {
|
|
|
227
169
|
case "SlowFill":
|
|
228
170
|
return FillType.SlowFill;
|
|
229
171
|
default:
|
|
230
|
-
throw new Error(
|
|
172
|
+
throw new Error(`Unknown fill type: ${fillType}`);
|
|
231
173
|
}
|
|
232
174
|
}
|
|
233
175
|
// Special case: if an object is empty, return 0x
|
|
234
176
|
if (Object.keys(data).length === 0) {
|
|
235
177
|
return "0x";
|
|
236
178
|
}
|
|
237
|
-
return Object.fromEntries(Object.entries(data).map(
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
unwrapEventData(value, uint8ArrayKeysAsBigInt, key),
|
|
242
|
-
];
|
|
243
|
-
}));
|
|
179
|
+
return Object.fromEntries(Object.entries(data).map(([key, value]) => [
|
|
180
|
+
key,
|
|
181
|
+
unwrapEventData(value, uint8ArrayKeysAsBigInt, key),
|
|
182
|
+
]));
|
|
244
183
|
}
|
|
245
184
|
// Return primitives as is
|
|
246
185
|
return data;
|
|
@@ -250,24 +189,14 @@ export function unwrapEventData(data, uint8ArrayKeysAsBigInt, currentKey) {
|
|
|
250
189
|
* @param programId The SpokePool program ID.
|
|
251
190
|
* @returns The PDA for the State account.
|
|
252
191
|
*/
|
|
253
|
-
export function getStatePda(programId) {
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
intEncoder = getU64Encoder();
|
|
260
|
-
seed = intEncoder.encode(0);
|
|
261
|
-
return [4 /*yield*/, getProgramDerivedAddress({
|
|
262
|
-
programAddress: programId,
|
|
263
|
-
seeds: ["state", seed],
|
|
264
|
-
})];
|
|
265
|
-
case 1:
|
|
266
|
-
statePda = (_a.sent())[0];
|
|
267
|
-
return [2 /*return*/, statePda];
|
|
268
|
-
}
|
|
269
|
-
});
|
|
192
|
+
export async function getStatePda(programId) {
|
|
193
|
+
const intEncoder = getU64Encoder();
|
|
194
|
+
const seed = intEncoder.encode(0);
|
|
195
|
+
const [statePda] = await getProgramDerivedAddress({
|
|
196
|
+
programAddress: programId,
|
|
197
|
+
seeds: ["state", seed],
|
|
270
198
|
});
|
|
199
|
+
return statePda;
|
|
271
200
|
}
|
|
272
201
|
/**
|
|
273
202
|
* Returns the fill status PDA for the given relay data.
|
|
@@ -276,26 +205,15 @@ export function getStatePda(programId) {
|
|
|
276
205
|
* @param destinationChainId The destination chain ID.
|
|
277
206
|
* @returns The PDA for the fill status.
|
|
278
207
|
*/
|
|
279
|
-
export function getFillStatusPda(programId, relayData, destinationChainId) {
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
messageHash = (_a = relayData.messageHash) !== null && _a !== void 0 ? _a : getMessageHash(relayData.message);
|
|
287
|
-
relayDataHash = getRelayDataHash(__assign(__assign({}, relayData), { messageHash: messageHash }), destinationChainId);
|
|
288
|
-
uint8RelayDataHash = new Uint8Array(Buffer.from(relayDataHash.slice(2), "hex"));
|
|
289
|
-
return [4 /*yield*/, getProgramDerivedAddress({
|
|
290
|
-
programAddress: programId,
|
|
291
|
-
seeds: ["fills", uint8RelayDataHash],
|
|
292
|
-
})];
|
|
293
|
-
case 1:
|
|
294
|
-
fillStatusPda = (_b.sent())[0];
|
|
295
|
-
return [2 /*return*/, fillStatusPda];
|
|
296
|
-
}
|
|
297
|
-
});
|
|
208
|
+
export async function getFillStatusPda(programId, relayData, destinationChainId) {
|
|
209
|
+
const messageHash = relayData.messageHash ?? getMessageHash(relayData.message);
|
|
210
|
+
const relayDataHash = getRelayDataHash({ ...relayData, messageHash }, destinationChainId);
|
|
211
|
+
const uint8RelayDataHash = new Uint8Array(Buffer.from(relayDataHash.slice(2), "hex"));
|
|
212
|
+
const [fillStatusPda] = await getProgramDerivedAddress({
|
|
213
|
+
programAddress: programId,
|
|
214
|
+
seeds: ["fills", uint8RelayDataHash],
|
|
298
215
|
});
|
|
216
|
+
return fillStatusPda;
|
|
299
217
|
}
|
|
300
218
|
/**
|
|
301
219
|
* Returns the PDA for a route account on SVM Spoke.
|
|
@@ -304,95 +222,55 @@ export function getFillStatusPda(programId, relayData, destinationChainId) {
|
|
|
304
222
|
* @param routeChainId The route chain ID.
|
|
305
223
|
* @returns The PDA for the route account.
|
|
306
224
|
*/
|
|
307
|
-
export function getRoutePda(originToken, seed, routeChainId) {
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
intEncoder = getU64Encoder();
|
|
314
|
-
addressEncoder = getAddressEncoder();
|
|
315
|
-
return [4 /*yield*/, getProgramDerivedAddress({
|
|
316
|
-
programAddress: address(SvmSpokeClient.SVM_SPOKE_PROGRAM_ADDRESS),
|
|
317
|
-
seeds: ["route", addressEncoder.encode(originToken), intEncoder.encode(seed), intEncoder.encode(routeChainId)],
|
|
318
|
-
})];
|
|
319
|
-
case 1:
|
|
320
|
-
pda = (_a.sent())[0];
|
|
321
|
-
return [2 /*return*/, pda];
|
|
322
|
-
}
|
|
323
|
-
});
|
|
225
|
+
export async function getRoutePda(originToken, seed, routeChainId) {
|
|
226
|
+
const intEncoder = getU64Encoder();
|
|
227
|
+
const addressEncoder = getAddressEncoder();
|
|
228
|
+
const [pda] = await getProgramDerivedAddress({
|
|
229
|
+
programAddress: address(SvmSpokeClient.SVM_SPOKE_PROGRAM_ADDRESS),
|
|
230
|
+
seeds: ["route", addressEncoder.encode(originToken), intEncoder.encode(seed), intEncoder.encode(routeChainId)],
|
|
324
231
|
});
|
|
232
|
+
return pda;
|
|
325
233
|
}
|
|
326
234
|
/**
|
|
327
235
|
* Returns the PDA for the SVM Spoke's transfer liability account.
|
|
328
236
|
* @param programId the address of the spoke pool.
|
|
329
237
|
* @param originToken the address of the corresponding token.
|
|
330
238
|
*/
|
|
331
|
-
export function getTransferLiabilityPda(programId, originToken) {
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
case 0:
|
|
337
|
-
addressEncoder = getAddressEncoder();
|
|
338
|
-
return [4 /*yield*/, getProgramDerivedAddress({
|
|
339
|
-
programAddress: programId,
|
|
340
|
-
seeds: ["transfer_liability", addressEncoder.encode(originToken)],
|
|
341
|
-
})];
|
|
342
|
-
case 1:
|
|
343
|
-
pda = (_a.sent())[0];
|
|
344
|
-
return [2 /*return*/, pda];
|
|
345
|
-
}
|
|
346
|
-
});
|
|
239
|
+
export async function getTransferLiabilityPda(programId, originToken) {
|
|
240
|
+
const addressEncoder = getAddressEncoder();
|
|
241
|
+
const [pda] = await getProgramDerivedAddress({
|
|
242
|
+
programAddress: programId,
|
|
243
|
+
seeds: ["transfer_liability", addressEncoder.encode(originToken)],
|
|
347
244
|
});
|
|
245
|
+
return pda;
|
|
348
246
|
}
|
|
349
247
|
/**
|
|
350
248
|
* Returns the PDA for the SVM Spoke's root bundle account.
|
|
351
249
|
* @param programId the address of the spoke pool.
|
|
352
250
|
* @param rootBundleId the associated root bundle ID.
|
|
353
251
|
*/
|
|
354
|
-
export function getRootBundlePda(programId, rootBundleId) {
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
seed = seedEncoder.encode(0);
|
|
362
|
-
intEncoder = getU32Encoder();
|
|
363
|
-
return [4 /*yield*/, getProgramDerivedAddress({
|
|
364
|
-
programAddress: programId,
|
|
365
|
-
seeds: ["root_bundle", seed, intEncoder.encode(rootBundleId)],
|
|
366
|
-
})];
|
|
367
|
-
case 1:
|
|
368
|
-
pda = (_a.sent())[0];
|
|
369
|
-
return [2 /*return*/, pda];
|
|
370
|
-
}
|
|
371
|
-
});
|
|
252
|
+
export async function getRootBundlePda(programId, rootBundleId) {
|
|
253
|
+
const seedEncoder = getU64Encoder();
|
|
254
|
+
const seed = seedEncoder.encode(0); // Default seed.
|
|
255
|
+
const intEncoder = getU32Encoder();
|
|
256
|
+
const [pda] = await getProgramDerivedAddress({
|
|
257
|
+
programAddress: programId,
|
|
258
|
+
seeds: ["root_bundle", seed, intEncoder.encode(rootBundleId)],
|
|
372
259
|
});
|
|
260
|
+
return pda;
|
|
373
261
|
}
|
|
374
262
|
/**
|
|
375
263
|
* Returns the PDA for the SVM Spoke's instruction params account.
|
|
376
264
|
* @param programId the address of the spoke pool.
|
|
377
265
|
* @param signer the signer of the authenticated call.
|
|
378
266
|
*/
|
|
379
|
-
export function getInstructionParamsPda(programId, signer) {
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
case 0:
|
|
385
|
-
addressEncoder = getAddressEncoder();
|
|
386
|
-
return [4 /*yield*/, getProgramDerivedAddress({
|
|
387
|
-
programAddress: programId,
|
|
388
|
-
seeds: ["instruction_params", addressEncoder.encode(signer)],
|
|
389
|
-
})];
|
|
390
|
-
case 1:
|
|
391
|
-
pda = (_a.sent())[0];
|
|
392
|
-
return [2 /*return*/, pda];
|
|
393
|
-
}
|
|
394
|
-
});
|
|
267
|
+
export async function getInstructionParamsPda(programId, signer) {
|
|
268
|
+
const addressEncoder = getAddressEncoder();
|
|
269
|
+
const [pda] = await getProgramDerivedAddress({
|
|
270
|
+
programAddress: programId,
|
|
271
|
+
seeds: ["instruction_params", addressEncoder.encode(signer)],
|
|
395
272
|
});
|
|
273
|
+
return pda;
|
|
396
274
|
}
|
|
397
275
|
/**
|
|
398
276
|
* Returns the PDA for an individual's claim account.
|
|
@@ -400,68 +278,42 @@ export function getInstructionParamsPda(programId, signer) {
|
|
|
400
278
|
* @param mint the address of the token.
|
|
401
279
|
* @param tokenOwner the address of the signer which owns the claim account.
|
|
402
280
|
*/
|
|
403
|
-
export function getClaimAccountPda(programId, mint, tokenOwner) {
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
case 0:
|
|
409
|
-
addressEncoder = getAddressEncoder();
|
|
410
|
-
return [4 /*yield*/, getProgramDerivedAddress({
|
|
411
|
-
programAddress: programId,
|
|
412
|
-
seeds: ["claim_account", addressEncoder.encode(mint), addressEncoder.encode(tokenOwner)],
|
|
413
|
-
})];
|
|
414
|
-
case 1:
|
|
415
|
-
pda = (_a.sent())[0];
|
|
416
|
-
return [2 /*return*/, pda];
|
|
417
|
-
}
|
|
418
|
-
});
|
|
281
|
+
export async function getClaimAccountPda(programId, mint, tokenOwner) {
|
|
282
|
+
const addressEncoder = getAddressEncoder();
|
|
283
|
+
const [pda] = await getProgramDerivedAddress({
|
|
284
|
+
programAddress: programId,
|
|
285
|
+
seeds: ["claim_account", addressEncoder.encode(mint), addressEncoder.encode(tokenOwner)],
|
|
419
286
|
});
|
|
287
|
+
return pda;
|
|
420
288
|
}
|
|
421
289
|
/**
|
|
422
290
|
* Returns the PDA for the Event Authority.
|
|
423
291
|
* @returns The PDA for the Event Authority.
|
|
424
292
|
*/
|
|
425
|
-
export function getEventAuthority(programId) {
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
switch (_a.label) {
|
|
430
|
-
case 0: return [4 /*yield*/, getProgramDerivedAddress({
|
|
431
|
-
programAddress: programId,
|
|
432
|
-
seeds: ["__event_authority"],
|
|
433
|
-
})];
|
|
434
|
-
case 1:
|
|
435
|
-
eventAuthority = (_a.sent())[0];
|
|
436
|
-
return [2 /*return*/, eventAuthority];
|
|
437
|
-
}
|
|
438
|
-
});
|
|
293
|
+
export async function getEventAuthority(programId) {
|
|
294
|
+
const [eventAuthority] = await getProgramDerivedAddress({
|
|
295
|
+
programAddress: programId,
|
|
296
|
+
seeds: ["__event_authority"],
|
|
439
297
|
});
|
|
298
|
+
return eventAuthority;
|
|
440
299
|
}
|
|
441
300
|
/**
|
|
442
301
|
* Returns the PDA for the Self Authority.
|
|
443
302
|
* @returns The PDA for the Self Authority.
|
|
444
303
|
*/
|
|
445
|
-
export
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
case 0: return [4 /*yield*/, getProgramDerivedAddress({
|
|
450
|
-
programAddress: address(SvmSpokeClient.SVM_SPOKE_PROGRAM_ADDRESS),
|
|
451
|
-
seeds: ["self_authority"],
|
|
452
|
-
})];
|
|
453
|
-
case 1:
|
|
454
|
-
selfAuthority = (_a.sent())[0];
|
|
455
|
-
return [2 /*return*/, selfAuthority];
|
|
456
|
-
}
|
|
304
|
+
export const getSelfAuthority = async () => {
|
|
305
|
+
const [selfAuthority] = await getProgramDerivedAddress({
|
|
306
|
+
programAddress: address(SvmSpokeClient.SVM_SPOKE_PROGRAM_ADDRESS),
|
|
307
|
+
seeds: ["self_authority"],
|
|
457
308
|
});
|
|
458
|
-
|
|
309
|
+
return selfAuthority;
|
|
310
|
+
};
|
|
459
311
|
/**
|
|
460
312
|
* Returns a random SVM address.
|
|
461
313
|
*/
|
|
462
314
|
export function getRandomSvmAddress() {
|
|
463
|
-
|
|
464
|
-
|
|
315
|
+
const bytes = ethers.utils.randomBytes(32);
|
|
316
|
+
const base58Address = bs58.encode(bytes);
|
|
465
317
|
return address(base58Address);
|
|
466
318
|
}
|
|
467
319
|
/**
|
|
@@ -470,24 +322,10 @@ export function getRandomSvmAddress() {
|
|
|
470
322
|
* @param signer - The signer of the transaction.
|
|
471
323
|
* @returns The default transaction.
|
|
472
324
|
*/
|
|
473
|
-
export
|
|
474
|
-
|
|
475
|
-
return
|
|
476
|
-
|
|
477
|
-
case 0:
|
|
478
|
-
if (!isDefined(latestBlockhash)) return [3 /*break*/, 1];
|
|
479
|
-
_a = latestBlockhash;
|
|
480
|
-
return [3 /*break*/, 3];
|
|
481
|
-
case 1: return [4 /*yield*/, rpcClient.getLatestBlockhash().send()];
|
|
482
|
-
case 2:
|
|
483
|
-
_a = (_b.sent()).value;
|
|
484
|
-
_b.label = 3;
|
|
485
|
-
case 3:
|
|
486
|
-
latestBlockhash = _a;
|
|
487
|
-
return [2 /*return*/, pipe(createTransactionMessage({ version: 0 }), function (tx) { return setTransactionMessageFeePayerSigner(signer, tx); }, function (tx) { return setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, tx); })];
|
|
488
|
-
}
|
|
489
|
-
});
|
|
490
|
-
}); };
|
|
325
|
+
export const createDefaultTransaction = async (rpcClient, signer, latestBlockhash) => {
|
|
326
|
+
latestBlockhash = isDefined(latestBlockhash) ? latestBlockhash : (await rpcClient.getLatestBlockhash().send()).value;
|
|
327
|
+
return pipe(createTransactionMessage({ version: 0 }), (tx) => setTransactionMessageFeePayerSigner(signer, tx), (tx) => setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, tx));
|
|
328
|
+
};
|
|
491
329
|
/**
|
|
492
330
|
* Simulates a transaction and decodes the result using a parser function.
|
|
493
331
|
* @param solanaClient - The Solana client.
|
|
@@ -496,34 +334,18 @@ export var createDefaultTransaction = function (rpcClient, signer, latestBlockha
|
|
|
496
334
|
* @param parser - The parser function to decode the result.
|
|
497
335
|
* @returns The decoded result.
|
|
498
336
|
*/
|
|
499
|
-
export
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
.simulateTransaction;
|
|
512
|
-
_e = getBase64EncodedWireTransaction;
|
|
513
|
-
return [4 /*yield*/, signTransactionMessageWithSigners(simulationTx)];
|
|
514
|
-
case 2: return [4 /*yield*/, _d.apply(_c, [_e.apply(void 0, [_g.sent()]), {
|
|
515
|
-
encoding: "base64",
|
|
516
|
-
}])
|
|
517
|
-
.send()];
|
|
518
|
-
case 3:
|
|
519
|
-
simulationResult = _g.sent();
|
|
520
|
-
if (!((_f = simulationResult.value.returnData) === null || _f === void 0 ? void 0 : _f.data[0])) {
|
|
521
|
-
throw new Error("svm::simulateAndDecode: simulateTransaction failed. No return data.");
|
|
522
|
-
}
|
|
523
|
-
return [2 /*return*/, parser(Buffer.from(simulationResult.value.returnData.data[0], "base64"))];
|
|
524
|
-
}
|
|
525
|
-
});
|
|
526
|
-
}); };
|
|
337
|
+
export const simulateAndDecode = async (solanaClient, ix, signer, parser, latestBlockhash) => {
|
|
338
|
+
const simulationTx = appendTransactionMessageInstruction(ix, await createDefaultTransaction(solanaClient, signer, latestBlockhash));
|
|
339
|
+
const simulationResult = await solanaClient
|
|
340
|
+
.simulateTransaction(getBase64EncodedWireTransaction(await signTransactionMessageWithSigners(simulationTx)), {
|
|
341
|
+
encoding: "base64",
|
|
342
|
+
})
|
|
343
|
+
.send();
|
|
344
|
+
if (!simulationResult.value.returnData?.data[0]) {
|
|
345
|
+
throw new Error("svm::simulateAndDecode: simulateTransaction failed. No return data.");
|
|
346
|
+
}
|
|
347
|
+
return parser(Buffer.from(simulationResult.value.returnData.data[0], "base64"));
|
|
348
|
+
};
|
|
527
349
|
/**
|
|
528
350
|
* Converts a common `RelayData` type to an SvmSpokeClient.RelayData` type. This is useful for when we need
|
|
529
351
|
* to interface directly with the SvmSpoke.
|
|
@@ -554,34 +376,24 @@ export function toSvmRelayData(relayData) {
|
|
|
554
376
|
* @param sourceDomain The source domain.
|
|
555
377
|
* @returns The PDA for the CCTP nonce.
|
|
556
378
|
*/
|
|
557
|
-
export
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
case 0: return [4 /*yield*/, getProgramDerivedAddress({
|
|
562
|
-
programAddress: MessageTransmitterClient.MESSAGE_TRANSMITTER_PROGRAM_ADDRESS,
|
|
563
|
-
seeds: ["message_transmitter"],
|
|
564
|
-
})];
|
|
565
|
-
case 1:
|
|
566
|
-
messageTransmitterPda = (_a.sent())[0];
|
|
567
|
-
return [4 /*yield*/, MessageTransmitterClient.getGetNoncePdaInstruction({
|
|
568
|
-
messageTransmitter: messageTransmitterPda,
|
|
569
|
-
nonce: nonce,
|
|
570
|
-
sourceDomain: sourceDomain,
|
|
571
|
-
})];
|
|
572
|
-
case 2:
|
|
573
|
-
getNonceIx = _a.sent();
|
|
574
|
-
parserFunction = function (buf) {
|
|
575
|
-
if (buf.length === 32) {
|
|
576
|
-
return address(bs58.encode(buf));
|
|
577
|
-
}
|
|
578
|
-
throw new Error("Invalid buffer");
|
|
579
|
-
};
|
|
580
|
-
return [4 /*yield*/, simulateAndDecode(solanaClient, getNonceIx, signer, parserFunction, latestBlockhash)];
|
|
581
|
-
case 3: return [2 /*return*/, _a.sent()];
|
|
582
|
-
}
|
|
379
|
+
export const getCCTPNoncePda = async (solanaClient, signer, nonce, sourceDomain, latestBlockhash) => {
|
|
380
|
+
const [messageTransmitterPda] = await getProgramDerivedAddress({
|
|
381
|
+
programAddress: MessageTransmitterClient.MESSAGE_TRANSMITTER_PROGRAM_ADDRESS,
|
|
382
|
+
seeds: ["message_transmitter"],
|
|
583
383
|
});
|
|
584
|
-
|
|
384
|
+
const getNonceIx = await MessageTransmitterClient.getGetNoncePdaInstruction({
|
|
385
|
+
messageTransmitter: messageTransmitterPda,
|
|
386
|
+
nonce,
|
|
387
|
+
sourceDomain: sourceDomain,
|
|
388
|
+
});
|
|
389
|
+
const parserFunction = (buf) => {
|
|
390
|
+
if (buf.length === 32) {
|
|
391
|
+
return address(bs58.encode(buf));
|
|
392
|
+
}
|
|
393
|
+
throw new Error("Invalid buffer");
|
|
394
|
+
};
|
|
395
|
+
return await simulateAndDecode(solanaClient, getNonceIx, signer, parserFunction, latestBlockhash);
|
|
396
|
+
};
|
|
585
397
|
/**
|
|
586
398
|
* Checks if a CCTP message is a deposit for burn event.
|
|
587
399
|
* @param event The CCTP message event.
|
|
@@ -593,21 +405,21 @@ export function isDepositForBurnEvent(event) {
|
|
|
593
405
|
/**
|
|
594
406
|
* True if `body` encodes a `relayRootBundle(bytes32,bytes32)` call.
|
|
595
407
|
*/
|
|
596
|
-
export
|
|
408
|
+
export const isRelayRootBundleMessageBody = (body) => {
|
|
597
409
|
if (body.length < 4)
|
|
598
410
|
return false;
|
|
599
|
-
|
|
600
|
-
|
|
411
|
+
const spokePoolInterface = new ethers.utils.Interface(SpokePool__factory.abi);
|
|
412
|
+
const relayRootBundleSelector = spokePoolInterface.getSighash("relayRootBundle");
|
|
601
413
|
return body.slice(0, 4).equals(Buffer.from(relayRootBundleSelector.slice(2), "hex"));
|
|
602
414
|
};
|
|
603
415
|
/**
|
|
604
416
|
* True if `body` encodes a `emergencyDeleteRootBundle(uint32)` call.
|
|
605
417
|
*/
|
|
606
|
-
export
|
|
418
|
+
export const isEmergencyDeleteRootBundleMessageBody = (body) => {
|
|
607
419
|
if (body.length < 4)
|
|
608
420
|
return false;
|
|
609
|
-
|
|
610
|
-
|
|
421
|
+
const spokePoolInterface = new ethers.utils.Interface(SpokePool__factory.abi);
|
|
422
|
+
const emergencyDeleteRootBundleSelector = spokePoolInterface.getSighash("emergencyDeleteRootBundle");
|
|
611
423
|
return body.slice(0, 4).equals(Buffer.from(emergencyDeleteRootBundleSelector.slice(2), "hex"));
|
|
612
424
|
};
|
|
613
425
|
/**
|
|
@@ -615,9 +427,9 @@ export var isEmergencyDeleteRootBundleMessageBody = function (body) {
|
|
|
615
427
|
* @param body The message body.
|
|
616
428
|
* @returns The root bundle ID.
|
|
617
429
|
*/
|
|
618
|
-
export
|
|
619
|
-
|
|
620
|
-
|
|
430
|
+
export const getEmergencyDeleteRootBundleRootBundleId = (body) => {
|
|
431
|
+
const spokePoolInterface = new ethers.utils.Interface(SpokePool__factory.abi);
|
|
432
|
+
const result = spokePoolInterface.decodeFunctionData("emergencyDeleteRootBundle", body);
|
|
621
433
|
return result.rootBundleId.toNumber();
|
|
622
434
|
};
|
|
623
435
|
/**
|
|
@@ -629,11 +441,9 @@ export function bigintToU8a32(n) {
|
|
|
629
441
|
if (n < BigInt(0) || n > ethers.constants.MaxUint256.toBigInt()) {
|
|
630
442
|
throw new RangeError("Value must fit in 256 bits");
|
|
631
443
|
}
|
|
632
|
-
|
|
444
|
+
const hexPadded = ethers.utils.hexZeroPad("0x" + n.toString(16), 32);
|
|
633
445
|
return ethers.utils.arrayify(hexPadded);
|
|
634
446
|
}
|
|
635
|
-
export
|
|
636
|
-
|
|
637
|
-
};
|
|
638
|
-
export var numberToU8a32 = function (n) { return bigintToU8a32(BigInt(n)); };
|
|
447
|
+
export const bigToU8a32 = (bn) => bigintToU8a32(typeof bn === "bigint" ? bn : BigInt(bn.toString()));
|
|
448
|
+
export const numberToU8a32 = (n) => bigintToU8a32(BigInt(n));
|
|
639
449
|
//# sourceMappingURL=utils.js.map
|