@across-protocol/sdk 4.1.63 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/arch/evm/BlockUtils.d.ts +15 -0
- package/dist/cjs/arch/evm/BlockUtils.js +218 -0
- package/dist/cjs/arch/evm/BlockUtils.js.map +1 -0
- package/dist/cjs/arch/evm/SpokeUtils.d.ts +1 -1
- package/dist/cjs/arch/evm/SpokeUtils.js +6 -5
- package/dist/cjs/arch/evm/SpokeUtils.js.map +1 -1
- package/dist/cjs/arch/evm/index.d.ts +1 -0
- package/dist/cjs/arch/evm/index.js +1 -0
- package/dist/cjs/arch/evm/index.js.map +1 -1
- package/dist/cjs/arch/svm/SpokeUtils.d.ts +20 -0
- package/dist/cjs/arch/svm/SpokeUtils.js +449 -0
- package/dist/cjs/arch/svm/SpokeUtils.js.map +1 -0
- package/dist/cjs/arch/svm/constants.d.ts +2 -0
- package/dist/cjs/arch/svm/constants.js +7 -0
- package/dist/cjs/arch/svm/constants.js.map +1 -0
- package/dist/cjs/arch/svm/eventsClient.d.ts +26 -0
- package/dist/cjs/arch/svm/eventsClient.js +253 -0
- package/dist/cjs/arch/svm/eventsClient.js.map +1 -0
- package/dist/cjs/arch/svm/index.d.ts +5 -1
- package/dist/cjs/arch/svm/index.js +6 -2
- package/dist/cjs/arch/svm/index.js.map +1 -1
- package/dist/cjs/{svm → arch/svm}/types.d.ts +9 -4
- package/dist/cjs/arch/svm/types.js.map +1 -0
- package/dist/cjs/arch/svm/utils.d.ts +18 -0
- package/dist/cjs/arch/svm/utils.js +212 -0
- package/dist/cjs/arch/svm/utils.js.map +1 -0
- package/dist/cjs/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.d.ts +1 -1
- package/dist/cjs/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js +7 -7
- package/dist/cjs/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js.map +1 -1
- package/dist/cjs/clients/BaseAbstractClient.d.ts +6 -5
- package/dist/cjs/clients/BaseAbstractClient.js +30 -19
- package/dist/cjs/clients/BaseAbstractClient.js.map +1 -1
- package/dist/cjs/clients/BundleDataClient/BundleDataClient.js +15 -11
- package/dist/cjs/clients/BundleDataClient/BundleDataClient.js.map +1 -1
- package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js +1 -1
- package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
- package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.d.ts +114 -114
- package/dist/cjs/clients/HubPoolClient.d.ts +4 -3
- package/dist/cjs/clients/HubPoolClient.js +18 -17
- package/dist/cjs/clients/HubPoolClient.js.map +1 -1
- package/dist/cjs/clients/SpokePoolClient/EVMSpokePoolClient.d.ts +3 -3
- package/dist/cjs/clients/SpokePoolClient/EVMSpokePoolClient.js +23 -20
- package/dist/cjs/clients/SpokePoolClient/EVMSpokePoolClient.js.map +1 -1
- package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.d.ts +23 -0
- package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.js +172 -0
- package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.js.map +1 -0
- package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.d.ts +5 -5
- package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js +54 -57
- package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
- package/dist/cjs/clients/SpokePoolClient/index.d.ts +3 -0
- package/dist/cjs/clients/SpokePoolClient/index.js +8 -1
- package/dist/cjs/clients/SpokePoolClient/index.js.map +1 -1
- package/dist/cjs/clients/index.d.ts +1 -1
- package/dist/cjs/clients/index.js +2 -1
- package/dist/cjs/clients/index.js.map +1 -1
- package/dist/cjs/clients/mocks/MockConfigStoreClient.d.ts +1 -1
- package/dist/cjs/clients/mocks/MockConfigStoreClient.js +2 -2
- package/dist/cjs/clients/mocks/MockConfigStoreClient.js.map +1 -1
- package/dist/cjs/clients/mocks/MockHubPoolClient.js +2 -2
- package/dist/cjs/clients/mocks/MockHubPoolClient.js.map +1 -1
- package/dist/cjs/clients/mocks/MockSpokePoolClient.js +7 -4
- package/dist/cjs/clients/mocks/MockSpokePoolClient.js.map +1 -1
- package/dist/cjs/clients/mocks/MockSvmCpiEventsClient.d.ts +33 -0
- package/dist/cjs/clients/mocks/MockSvmCpiEventsClient.js +184 -0
- package/dist/cjs/clients/mocks/MockSvmCpiEventsClient.js.map +1 -0
- package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.d.ts +30 -0
- package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.js +90 -0
- package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.js.map +1 -0
- package/dist/cjs/clients/mocks/index.d.ts +2 -0
- package/dist/cjs/clients/mocks/index.js +2 -0
- package/dist/cjs/clients/mocks/index.js.map +1 -1
- package/dist/cjs/constants.d.ts +1 -0
- package/dist/cjs/constants.js +2 -1
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/gasPriceOracle/adapters/arbitrum.d.ts +2 -2
- package/dist/cjs/gasPriceOracle/adapters/arbitrum.js.map +1 -1
- package/dist/cjs/gasPriceOracle/adapters/ethereum.d.ts +4 -4
- package/dist/cjs/gasPriceOracle/adapters/ethereum.js.map +1 -1
- package/dist/cjs/gasPriceOracle/adapters/linea-viem.js +3 -2
- package/dist/cjs/gasPriceOracle/adapters/linea-viem.js.map +1 -1
- package/dist/cjs/gasPriceOracle/adapters/polygon.d.ts +3 -3
- package/dist/cjs/gasPriceOracle/adapters/solana.d.ts +4 -0
- package/dist/cjs/gasPriceOracle/adapters/solana.js +43 -0
- package/dist/cjs/gasPriceOracle/adapters/solana.js.map +1 -0
- package/dist/cjs/gasPriceOracle/index.d.ts +1 -1
- package/dist/cjs/gasPriceOracle/oracle.d.ts +4 -3
- package/dist/cjs/gasPriceOracle/oracle.js +16 -9
- package/dist/cjs/gasPriceOracle/oracle.js.map +1 -1
- package/dist/cjs/gasPriceOracle/types.d.ts +6 -1
- package/dist/cjs/index.d.ts +0 -1
- package/dist/cjs/index.js +1 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interfaces/SpokePool.d.ts +13 -0
- package/dist/cjs/interfaces/SpokePool.js.map +1 -1
- package/dist/cjs/providers/index.d.ts +1 -1
- package/dist/cjs/providers/index.js +1 -2
- package/dist/cjs/providers/index.js.map +1 -1
- package/dist/cjs/providers/mocks/MockCachedSolanaRpcFactory.d.ts +5 -0
- package/dist/cjs/providers/mocks/MockCachedSolanaRpcFactory.js +21 -0
- package/dist/cjs/providers/mocks/MockCachedSolanaRpcFactory.js.map +1 -0
- package/dist/cjs/providers/mocks/MockRateLimitedSolanaRpcFactory.d.ts +5 -0
- package/dist/cjs/providers/mocks/MockRateLimitedSolanaRpcFactory.js +20 -0
- package/dist/cjs/providers/mocks/MockRateLimitedSolanaRpcFactory.js.map +1 -0
- package/dist/cjs/providers/mocks/MockSolanaRpcFactory.d.ts +13 -0
- package/dist/cjs/providers/mocks/MockSolanaRpcFactory.js +76 -0
- package/dist/cjs/providers/mocks/MockSolanaRpcFactory.js.map +1 -0
- package/dist/cjs/providers/mocks/index.d.ts +4 -0
- package/dist/cjs/providers/mocks/index.js +8 -0
- package/dist/cjs/providers/mocks/index.js.map +1 -0
- package/dist/cjs/providers/{mockProvider.js → mocks/mockEthersProvider.js} +2 -2
- package/dist/cjs/providers/mocks/mockEthersProvider.js.map +1 -0
- package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.d.ts +1 -1
- package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.js +10 -8
- package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.js.map +1 -1
- package/dist/cjs/relayFeeCalculator/chain-queries/factory.d.ts +4 -2
- package/dist/cjs/relayFeeCalculator/chain-queries/factory.js +8 -2
- package/dist/cjs/relayFeeCalculator/chain-queries/factory.js.map +1 -1
- package/dist/cjs/relayFeeCalculator/chain-queries/index.d.ts +1 -0
- package/dist/cjs/relayFeeCalculator/chain-queries/index.js +1 -0
- package/dist/cjs/relayFeeCalculator/chain-queries/index.js.map +1 -1
- package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.d.ts +37 -0
- package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.js +171 -0
- package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -0
- package/dist/cjs/relayFeeCalculator/relayFeeCalculator.d.ts +2 -0
- package/dist/cjs/relayFeeCalculator/relayFeeCalculator.js +9 -3
- package/dist/cjs/relayFeeCalculator/relayFeeCalculator.js.map +1 -1
- package/dist/cjs/utils/AddressUtils.d.ts +9 -3
- package/dist/cjs/utils/AddressUtils.js +36 -6
- package/dist/cjs/utils/AddressUtils.js.map +1 -1
- package/dist/cjs/utils/ArrayUtils.d.ts +1 -0
- package/dist/cjs/utils/ArrayUtils.js +6 -1
- package/dist/cjs/utils/ArrayUtils.js.map +1 -1
- package/dist/cjs/utils/BlockFinder.d.ts +22 -0
- package/dist/cjs/utils/BlockFinder.js +10 -0
- package/dist/cjs/utils/BlockFinder.js.map +1 -0
- package/dist/cjs/utils/BlockUtils.d.ts +2 -27
- package/dist/cjs/utils/BlockUtils.js +2 -208
- package/dist/cjs/utils/BlockUtils.js.map +1 -1
- package/dist/cjs/utils/EventUtils.d.ts +4 -4
- package/dist/cjs/utils/EventUtils.js +7 -4
- package/dist/cjs/utils/EventUtils.js.map +1 -1
- package/dist/cjs/utils/JSONUtils.js +3 -0
- package/dist/cjs/utils/JSONUtils.js.map +1 -1
- package/dist/cjs/utils/NumberUtils.d.ts +1 -0
- package/dist/cjs/utils/NumberUtils.js +7 -1
- package/dist/cjs/utils/NumberUtils.js.map +1 -1
- package/dist/cjs/utils/SpokeUtils.js +5 -0
- package/dist/cjs/utils/SpokeUtils.js.map +1 -1
- package/dist/cjs/utils/index.d.ts +1 -0
- package/dist/cjs/utils/index.js +1 -0
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/esm/arch/evm/BlockUtils.d.ts +24 -0
- package/dist/esm/arch/evm/BlockUtils.js +250 -0
- package/dist/esm/arch/evm/BlockUtils.js.map +1 -0
- package/dist/esm/arch/evm/SpokeUtils.d.ts +1 -1
- package/dist/esm/arch/evm/SpokeUtils.js +6 -5
- package/dist/esm/arch/evm/SpokeUtils.js.map +1 -1
- package/dist/esm/arch/evm/index.d.ts +1 -0
- package/dist/esm/arch/evm/index.js +1 -0
- package/dist/esm/arch/evm/index.js.map +1 -1
- package/dist/esm/arch/svm/SpokeUtils.d.ts +122 -0
- package/dist/esm/arch/svm/SpokeUtils.js +566 -0
- package/dist/esm/arch/svm/SpokeUtils.js.map +1 -0
- package/dist/esm/arch/svm/constants.d.ts +2 -0
- package/dist/esm/arch/svm/constants.js +3 -0
- package/dist/esm/arch/svm/constants.js.map +1 -0
- package/dist/esm/arch/svm/eventsClient.d.ts +87 -0
- package/dist/esm/arch/svm/eventsClient.js +316 -0
- package/dist/esm/arch/svm/eventsClient.js.map +1 -0
- package/dist/esm/arch/svm/index.d.ts +5 -1
- package/dist/esm/arch/svm/index.js +5 -1
- package/dist/esm/arch/svm/index.js.map +1 -1
- package/dist/esm/{svm → arch/svm}/types.d.ts +9 -4
- package/dist/esm/arch/svm/types.js.map +1 -0
- package/dist/esm/arch/svm/utils.d.ts +63 -0
- package/dist/esm/arch/svm/utils.js +258 -0
- package/dist/esm/arch/svm/utils.js.map +1 -0
- package/dist/esm/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.d.ts +1 -1
- package/dist/esm/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js +7 -7
- package/dist/esm/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js.map +1 -1
- package/dist/esm/clients/BaseAbstractClient.d.ts +6 -5
- package/dist/esm/clients/BaseAbstractClient.js +30 -19
- package/dist/esm/clients/BaseAbstractClient.js.map +1 -1
- package/dist/esm/clients/BundleDataClient/BundleDataClient.js +17 -14
- package/dist/esm/clients/BundleDataClient/BundleDataClient.js.map +1 -1
- package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js +1 -1
- package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
- package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.d.ts +114 -114
- package/dist/esm/clients/HubPoolClient.d.ts +4 -3
- package/dist/esm/clients/HubPoolClient.js +19 -18
- package/dist/esm/clients/HubPoolClient.js.map +1 -1
- package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.d.ts +3 -3
- package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.js +23 -20
- package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.js.map +1 -1
- package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.d.ts +66 -0
- package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.js +225 -0
- package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.js.map +1 -0
- package/dist/esm/clients/SpokePoolClient/SpokePoolClient.d.ts +7 -7
- package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js +57 -59
- package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
- package/dist/esm/clients/SpokePoolClient/index.d.ts +8 -0
- package/dist/esm/clients/SpokePoolClient/index.js +10 -0
- package/dist/esm/clients/SpokePoolClient/index.js.map +1 -1
- package/dist/esm/clients/index.d.ts +1 -1
- package/dist/esm/clients/index.js +1 -1
- package/dist/esm/clients/index.js.map +1 -1
- package/dist/esm/clients/mocks/MockConfigStoreClient.d.ts +1 -1
- package/dist/esm/clients/mocks/MockConfigStoreClient.js +2 -2
- package/dist/esm/clients/mocks/MockConfigStoreClient.js.map +1 -1
- package/dist/esm/clients/mocks/MockHubPoolClient.js +2 -2
- package/dist/esm/clients/mocks/MockHubPoolClient.js.map +1 -1
- package/dist/esm/clients/mocks/MockSpokePoolClient.js +8 -5
- package/dist/esm/clients/mocks/MockSpokePoolClient.js.map +1 -1
- package/dist/esm/clients/mocks/MockSvmCpiEventsClient.d.ts +33 -0
- package/dist/esm/clients/mocks/MockSvmCpiEventsClient.js +183 -0
- package/dist/esm/clients/mocks/MockSvmCpiEventsClient.js.map +1 -0
- package/dist/esm/clients/mocks/MockSvmSpokePoolClient.d.ts +30 -0
- package/dist/esm/clients/mocks/MockSvmSpokePoolClient.js +89 -0
- package/dist/esm/clients/mocks/MockSvmSpokePoolClient.js.map +1 -0
- package/dist/esm/clients/mocks/index.d.ts +2 -0
- package/dist/esm/clients/mocks/index.js +2 -0
- package/dist/esm/clients/mocks/index.js.map +1 -1
- package/dist/esm/constants.d.ts +1 -0
- package/dist/esm/constants.js +1 -0
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/gasPriceOracle/adapters/arbitrum.d.ts +2 -2
- package/dist/esm/gasPriceOracle/adapters/arbitrum.js.map +1 -1
- package/dist/esm/gasPriceOracle/adapters/ethereum.d.ts +4 -4
- package/dist/esm/gasPriceOracle/adapters/ethereum.js.map +1 -1
- package/dist/esm/gasPriceOracle/adapters/linea-viem.js +3 -2
- package/dist/esm/gasPriceOracle/adapters/linea-viem.js.map +1 -1
- package/dist/esm/gasPriceOracle/adapters/polygon.d.ts +4 -4
- package/dist/esm/gasPriceOracle/adapters/polygon.js +1 -1
- package/dist/esm/gasPriceOracle/adapters/solana.d.ts +8 -0
- package/dist/esm/gasPriceOracle/adapters/solana.js +43 -0
- package/dist/esm/gasPriceOracle/adapters/solana.js.map +1 -0
- package/dist/esm/gasPriceOracle/index.d.ts +1 -1
- package/dist/esm/gasPriceOracle/oracle.d.ts +4 -3
- package/dist/esm/gasPriceOracle/oracle.js +18 -9
- package/dist/esm/gasPriceOracle/oracle.js.map +1 -1
- package/dist/esm/gasPriceOracle/types.d.ts +6 -1
- package/dist/esm/index.d.ts +0 -1
- package/dist/esm/index.js +0 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interfaces/SpokePool.d.ts +13 -0
- package/dist/esm/interfaces/SpokePool.js.map +1 -1
- package/dist/esm/providers/index.d.ts +1 -1
- package/dist/esm/providers/index.js +1 -2
- package/dist/esm/providers/index.js.map +1 -1
- package/dist/esm/providers/mocks/MockCachedSolanaRpcFactory.d.ts +5 -0
- package/dist/esm/providers/mocks/MockCachedSolanaRpcFactory.js +19 -0
- package/dist/esm/providers/mocks/MockCachedSolanaRpcFactory.js.map +1 -0
- package/dist/esm/providers/mocks/MockRateLimitedSolanaRpcFactory.d.ts +5 -0
- package/dist/esm/providers/mocks/MockRateLimitedSolanaRpcFactory.js +18 -0
- package/dist/esm/providers/mocks/MockRateLimitedSolanaRpcFactory.js.map +1 -0
- package/dist/esm/providers/mocks/MockSolanaRpcFactory.d.ts +13 -0
- package/dist/esm/providers/mocks/MockSolanaRpcFactory.js +74 -0
- package/dist/esm/providers/mocks/MockSolanaRpcFactory.js.map +1 -0
- package/dist/esm/providers/mocks/index.d.ts +4 -0
- package/dist/esm/providers/mocks/index.js +5 -0
- package/dist/esm/providers/mocks/index.js.map +1 -0
- package/dist/esm/providers/{mockProvider.js → mocks/mockEthersProvider.js} +2 -2
- package/dist/esm/providers/mocks/mockEthersProvider.js.map +1 -0
- package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.d.ts +1 -1
- package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.js +10 -8
- package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.js.map +1 -1
- package/dist/esm/relayFeeCalculator/chain-queries/factory.d.ts +4 -2
- package/dist/esm/relayFeeCalculator/chain-queries/factory.js +11 -5
- package/dist/esm/relayFeeCalculator/chain-queries/factory.js.map +1 -1
- package/dist/esm/relayFeeCalculator/chain-queries/index.d.ts +1 -0
- package/dist/esm/relayFeeCalculator/chain-queries/index.js +1 -0
- package/dist/esm/relayFeeCalculator/chain-queries/index.js.map +1 -1
- package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.d.ts +84 -0
- package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js +216 -0
- package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -0
- package/dist/esm/relayFeeCalculator/relayFeeCalculator.d.ts +12 -1
- package/dist/esm/relayFeeCalculator/relayFeeCalculator.js +9 -4
- package/dist/esm/relayFeeCalculator/relayFeeCalculator.js.map +1 -1
- package/dist/esm/utils/AddressUtils.d.ts +9 -3
- package/dist/esm/utils/AddressUtils.js +41 -6
- package/dist/esm/utils/AddressUtils.js.map +1 -1
- package/dist/esm/utils/ArrayUtils.d.ts +6 -0
- package/dist/esm/utils/ArrayUtils.js +9 -0
- package/dist/esm/utils/ArrayUtils.js.map +1 -1
- package/dist/esm/utils/BlockFinder.d.ts +22 -0
- package/dist/esm/utils/BlockFinder.js +7 -0
- package/dist/esm/utils/BlockFinder.js.map +1 -0
- package/dist/esm/utils/BlockUtils.d.ts +2 -36
- package/dist/esm/utils/BlockUtils.js +2 -243
- package/dist/esm/utils/BlockUtils.js.map +1 -1
- package/dist/esm/utils/EventUtils.d.ts +4 -4
- package/dist/esm/utils/EventUtils.js +7 -4
- package/dist/esm/utils/EventUtils.js.map +1 -1
- package/dist/esm/utils/JSONUtils.js +3 -0
- package/dist/esm/utils/JSONUtils.js.map +1 -1
- package/dist/esm/utils/NumberUtils.d.ts +7 -0
- package/dist/esm/utils/NumberUtils.js +11 -0
- package/dist/esm/utils/NumberUtils.js.map +1 -1
- package/dist/esm/utils/SpokeUtils.js +5 -0
- package/dist/esm/utils/SpokeUtils.js.map +1 -1
- package/dist/esm/utils/index.d.ts +1 -0
- package/dist/esm/utils/index.js +1 -0
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/types/arch/evm/BlockUtils.d.ts +25 -0
- package/dist/types/arch/evm/BlockUtils.d.ts.map +1 -0
- package/dist/types/arch/evm/SpokeUtils.d.ts +1 -1
- package/dist/types/arch/evm/SpokeUtils.d.ts.map +1 -1
- package/dist/types/arch/evm/index.d.ts +1 -0
- package/dist/types/arch/evm/index.d.ts.map +1 -1
- package/dist/types/arch/svm/SpokeUtils.d.ts +123 -0
- package/dist/types/arch/svm/SpokeUtils.d.ts.map +1 -0
- package/dist/types/arch/svm/constants.d.ts +3 -0
- package/dist/types/arch/svm/constants.d.ts.map +1 -0
- package/dist/types/arch/svm/eventsClient.d.ts +88 -0
- package/dist/types/arch/svm/eventsClient.d.ts.map +1 -0
- package/dist/types/arch/svm/index.d.ts +5 -1
- package/dist/types/arch/svm/index.d.ts.map +1 -1
- package/dist/types/{svm → arch/svm}/types.d.ts +9 -4
- package/dist/types/arch/svm/types.d.ts.map +1 -0
- package/dist/types/arch/svm/utils.d.ts +64 -0
- package/dist/types/arch/svm/utils.d.ts.map +1 -0
- package/dist/types/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.d.ts +1 -1
- package/dist/types/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.d.ts.map +1 -1
- package/dist/types/clients/BaseAbstractClient.d.ts +6 -5
- package/dist/types/clients/BaseAbstractClient.d.ts.map +1 -1
- package/dist/types/clients/BundleDataClient/BundleDataClient.d.ts.map +1 -1
- package/dist/types/clients/BundleDataClient/utils/SuperstructUtils.d.ts +114 -114
- package/dist/types/clients/HubPoolClient.d.ts +4 -3
- package/dist/types/clients/HubPoolClient.d.ts.map +1 -1
- package/dist/types/clients/SpokePoolClient/EVMSpokePoolClient.d.ts +3 -3
- package/dist/types/clients/SpokePoolClient/EVMSpokePoolClient.d.ts.map +1 -1
- package/dist/types/clients/SpokePoolClient/SVMSpokePoolClient.d.ts +67 -0
- package/dist/types/clients/SpokePoolClient/SVMSpokePoolClient.d.ts.map +1 -0
- package/dist/types/clients/SpokePoolClient/SpokePoolClient.d.ts +7 -7
- package/dist/types/clients/SpokePoolClient/SpokePoolClient.d.ts.map +1 -1
- package/dist/types/clients/SpokePoolClient/index.d.ts +8 -0
- package/dist/types/clients/SpokePoolClient/index.d.ts.map +1 -1
- package/dist/types/clients/index.d.ts +1 -1
- package/dist/types/clients/index.d.ts.map +1 -1
- package/dist/types/clients/mocks/MockConfigStoreClient.d.ts +1 -1
- package/dist/types/clients/mocks/MockConfigStoreClient.d.ts.map +1 -1
- package/dist/types/clients/mocks/MockSpokePoolClient.d.ts.map +1 -1
- package/dist/types/clients/mocks/MockSvmCpiEventsClient.d.ts +34 -0
- package/dist/types/clients/mocks/MockSvmCpiEventsClient.d.ts.map +1 -0
- package/dist/types/clients/mocks/MockSvmSpokePoolClient.d.ts +31 -0
- package/dist/types/clients/mocks/MockSvmSpokePoolClient.d.ts.map +1 -0
- package/dist/types/clients/mocks/index.d.ts +2 -0
- package/dist/types/clients/mocks/index.d.ts.map +1 -1
- package/dist/types/constants.d.ts +1 -0
- package/dist/types/constants.d.ts.map +1 -1
- package/dist/types/gasPriceOracle/adapters/arbitrum.d.ts +2 -2
- package/dist/types/gasPriceOracle/adapters/arbitrum.d.ts.map +1 -1
- package/dist/types/gasPriceOracle/adapters/ethereum.d.ts +4 -4
- package/dist/types/gasPriceOracle/adapters/ethereum.d.ts.map +1 -1
- package/dist/types/gasPriceOracle/adapters/linea-viem.d.ts.map +1 -1
- package/dist/types/gasPriceOracle/adapters/polygon.d.ts +4 -4
- package/dist/types/gasPriceOracle/adapters/polygon.d.ts.map +1 -1
- package/dist/types/gasPriceOracle/adapters/solana.d.ts +9 -0
- package/dist/types/gasPriceOracle/adapters/solana.d.ts.map +1 -0
- package/dist/types/gasPriceOracle/index.d.ts +1 -1
- package/dist/types/gasPriceOracle/index.d.ts.map +1 -1
- package/dist/types/gasPriceOracle/oracle.d.ts +4 -3
- package/dist/types/gasPriceOracle/oracle.d.ts.map +1 -1
- package/dist/types/gasPriceOracle/types.d.ts +6 -1
- package/dist/types/gasPriceOracle/types.d.ts.map +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/interfaces/SpokePool.d.ts +13 -0
- package/dist/types/interfaces/SpokePool.d.ts.map +1 -1
- package/dist/types/providers/index.d.ts +1 -1
- package/dist/types/providers/index.d.ts.map +1 -1
- package/dist/types/providers/mocks/MockCachedSolanaRpcFactory.d.ts +6 -0
- package/dist/types/providers/mocks/MockCachedSolanaRpcFactory.d.ts.map +1 -0
- package/dist/types/providers/mocks/MockRateLimitedSolanaRpcFactory.d.ts +6 -0
- package/dist/types/providers/mocks/MockRateLimitedSolanaRpcFactory.d.ts.map +1 -0
- package/dist/types/providers/mocks/MockSolanaRpcFactory.d.ts +14 -0
- package/dist/types/providers/mocks/MockSolanaRpcFactory.d.ts.map +1 -0
- package/dist/types/providers/mocks/index.d.ts +5 -0
- package/dist/types/providers/mocks/index.d.ts.map +1 -0
- package/dist/types/providers/{mockProvider.d.ts → mocks/mockEthersProvider.d.ts} +1 -1
- package/dist/types/providers/mocks/mockEthersProvider.d.ts.map +1 -0
- package/dist/types/relayFeeCalculator/chain-queries/baseQuery.d.ts +1 -1
- package/dist/types/relayFeeCalculator/chain-queries/baseQuery.d.ts.map +1 -1
- package/dist/types/relayFeeCalculator/chain-queries/factory.d.ts +4 -2
- package/dist/types/relayFeeCalculator/chain-queries/factory.d.ts.map +1 -1
- package/dist/types/relayFeeCalculator/chain-queries/index.d.ts +1 -0
- package/dist/types/relayFeeCalculator/chain-queries/index.d.ts.map +1 -1
- package/dist/types/relayFeeCalculator/chain-queries/svmQuery.d.ts +85 -0
- package/dist/types/relayFeeCalculator/chain-queries/svmQuery.d.ts.map +1 -0
- package/dist/types/relayFeeCalculator/relayFeeCalculator.d.ts +12 -1
- package/dist/types/relayFeeCalculator/relayFeeCalculator.d.ts.map +1 -1
- package/dist/types/utils/AddressUtils.d.ts +9 -3
- package/dist/types/utils/AddressUtils.d.ts.map +1 -1
- package/dist/types/utils/ArrayUtils.d.ts +6 -0
- package/dist/types/utils/ArrayUtils.d.ts.map +1 -1
- package/dist/types/utils/BlockFinder.d.ts +23 -0
- package/dist/types/utils/BlockFinder.d.ts.map +1 -0
- package/dist/types/utils/BlockUtils.d.ts +2 -36
- package/dist/types/utils/BlockUtils.d.ts.map +1 -1
- package/dist/types/utils/EventUtils.d.ts +4 -4
- package/dist/types/utils/EventUtils.d.ts.map +1 -1
- package/dist/types/utils/JSONUtils.d.ts.map +1 -1
- package/dist/types/utils/NumberUtils.d.ts +7 -0
- package/dist/types/utils/NumberUtils.d.ts.map +1 -1
- package/dist/types/utils/SpokeUtils.d.ts.map +1 -1
- package/dist/types/utils/index.d.ts +1 -0
- package/dist/types/utils/index.d.ts.map +1 -1
- package/package.json +3 -1
- package/src/arch/evm/BlockUtils.ts +209 -0
- package/src/arch/evm/SpokeUtils.ts +5 -5
- package/src/arch/evm/index.ts +1 -0
- package/src/arch/svm/SpokeUtils.ts +581 -0
- package/src/arch/svm/constants.ts +2 -0
- package/src/arch/svm/eventsClient.ts +342 -0
- package/src/arch/svm/index.ts +5 -1
- package/src/{svm → arch/svm}/types.ts +21 -4
- package/src/arch/svm/utils.ts +233 -0
- package/src/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.ts +7 -7
- package/src/clients/BaseAbstractClient.ts +20 -13
- package/src/clients/BundleDataClient/BundleDataClient.ts +28 -19
- package/src/clients/BundleDataClient/utils/PoolRebalanceUtils.ts +1 -1
- package/src/clients/HubPoolClient.ts +19 -19
- package/src/clients/SpokePoolClient/EVMSpokePoolClient.ts +23 -21
- package/src/clients/SpokePoolClient/SVMSpokePoolClient.ts +268 -0
- package/src/clients/SpokePoolClient/SpokePoolClient.ts +50 -59
- package/src/clients/SpokePoolClient/index.ts +11 -0
- package/src/clients/index.ts +1 -1
- package/src/clients/mocks/MockConfigStoreClient.ts +2 -2
- package/src/clients/mocks/MockHubPoolClient.ts +2 -2
- package/src/clients/mocks/MockSpokePoolClient.ts +9 -4
- package/src/clients/mocks/MockSvmCpiEventsClient.ts +226 -0
- package/src/clients/mocks/MockSvmSpokePoolClient.ts +119 -0
- package/src/clients/mocks/index.ts +2 -0
- package/src/constants.ts +1 -0
- package/src/gasPriceOracle/adapters/arbitrum.ts +5 -2
- package/src/gasPriceOracle/adapters/ethereum.ts +7 -4
- package/src/gasPriceOracle/adapters/linea-viem.ts +3 -1
- package/src/gasPriceOracle/adapters/polygon.ts +6 -6
- package/src/gasPriceOracle/adapters/solana.ts +45 -0
- package/src/gasPriceOracle/index.ts +1 -1
- package/src/gasPriceOracle/oracle.ts +20 -4
- package/src/gasPriceOracle/types.ts +7 -1
- package/src/index.ts +0 -1
- package/src/interfaces/SpokePool.ts +14 -0
- package/src/providers/index.ts +1 -1
- package/src/providers/mocks/MockCachedSolanaRpcFactory.ts +15 -0
- package/src/providers/mocks/MockRateLimitedSolanaRpcFactory.ts +14 -0
- package/src/providers/mocks/MockSolanaRpcFactory.ts +55 -0
- package/src/providers/mocks/index.ts +4 -0
- package/src/providers/{mockProvider.ts → mocks/mockEthersProvider.ts} +1 -1
- package/src/relayFeeCalculator/chain-queries/baseQuery.ts +11 -9
- package/src/relayFeeCalculator/chain-queries/factory.ts +24 -8
- package/src/relayFeeCalculator/chain-queries/index.ts +1 -0
- package/src/relayFeeCalculator/chain-queries/svmQuery.ts +225 -0
- package/src/relayFeeCalculator/relayFeeCalculator.ts +15 -3
- package/src/utils/AddressUtils.ts +49 -6
- package/src/utils/ArrayUtils.ts +12 -0
- package/src/utils/BlockFinder.ts +26 -0
- package/src/utils/BlockUtils.ts +5 -215
- package/src/utils/EventUtils.ts +11 -11
- package/src/utils/JSONUtils.ts +2 -0
- package/src/utils/NumberUtils.ts +10 -0
- package/src/utils/SpokeUtils.ts +7 -3
- package/src/utils/index.ts +1 -0
- package/dist/cjs/providers/mockProvider.js.map +0 -1
- package/dist/cjs/svm/eventsClient.d.ts +0 -15
- package/dist/cjs/svm/eventsClient.js +0 -157
- package/dist/cjs/svm/eventsClient.js.map +0 -1
- package/dist/cjs/svm/index.d.ts +0 -3
- package/dist/cjs/svm/index.js +0 -8
- package/dist/cjs/svm/index.js.map +0 -1
- package/dist/cjs/svm/types.js.map +0 -1
- package/dist/cjs/svm/utils/events.d.ts +0 -8
- package/dist/cjs/svm/utils/events.js +0 -47
- package/dist/cjs/svm/utils/events.js.map +0 -1
- package/dist/cjs/svm/utils/helpers.d.ts +0 -2
- package/dist/cjs/svm/utils/helpers.js +0 -19
- package/dist/cjs/svm/utils/helpers.js.map +0 -1
- package/dist/cjs/svm/utils/index.d.ts +0 -1
- package/dist/cjs/svm/utils/index.js +0 -5
- package/dist/cjs/svm/utils/index.js.map +0 -1
- package/dist/esm/providers/mockProvider.js.map +0 -1
- package/dist/esm/svm/eventsClient.d.ts +0 -51
- package/dist/esm/svm/eventsClient.js +0 -195
- package/dist/esm/svm/eventsClient.js.map +0 -1
- package/dist/esm/svm/index.d.ts +0 -3
- package/dist/esm/svm/index.js +0 -5
- package/dist/esm/svm/index.js.map +0 -1
- package/dist/esm/svm/types.js.map +0 -1
- package/dist/esm/svm/utils/events.d.ts +0 -17
- package/dist/esm/svm/utils/events.js +0 -55
- package/dist/esm/svm/utils/events.js.map +0 -1
- package/dist/esm/svm/utils/helpers.d.ts +0 -5
- package/dist/esm/svm/utils/helpers.js +0 -18
- package/dist/esm/svm/utils/helpers.js.map +0 -1
- package/dist/esm/svm/utils/index.d.ts +0 -1
- package/dist/esm/svm/utils/index.js +0 -2
- package/dist/esm/svm/utils/index.js.map +0 -1
- package/dist/types/providers/mockProvider.d.ts.map +0 -1
- package/dist/types/svm/eventsClient.d.ts +0 -52
- package/dist/types/svm/eventsClient.d.ts.map +0 -1
- package/dist/types/svm/index.d.ts +0 -4
- package/dist/types/svm/index.d.ts.map +0 -1
- package/dist/types/svm/types.d.ts.map +0 -1
- package/dist/types/svm/utils/events.d.ts +0 -18
- package/dist/types/svm/utils/events.d.ts.map +0 -1
- package/dist/types/svm/utils/helpers.d.ts +0 -6
- package/dist/types/svm/utils/helpers.d.ts.map +0 -1
- package/dist/types/svm/utils/index.d.ts +0 -2
- package/dist/types/svm/utils/index.d.ts.map +0 -1
- package/src/svm/eventsClient.ts +0 -199
- package/src/svm/index.ts +0 -3
- package/src/svm/utils/events.ts +0 -58
- package/src/svm/utils/helpers.ts +0 -9
- package/src/svm/utils/index.ts +0 -1
- /package/dist/cjs/{svm → arch/svm}/types.js +0 -0
- /package/dist/cjs/providers/{mockProvider.d.ts → mocks/mockEthersProvider.d.ts} +0 -0
- /package/dist/esm/{svm → arch/svm}/types.js +0 -0
- /package/dist/esm/providers/{mockProvider.d.ts → mocks/mockEthersProvider.d.ts} +0 -0
|
@@ -0,0 +1,566 @@
|
|
|
1
|
+
import { __assign, __awaiter, __generator } from "tslib";
|
|
2
|
+
import { SvmSpokeClient } from "@across-protocol/contracts";
|
|
3
|
+
import { decodeFillStatusAccount, fetchState } from "@across-protocol/contracts/dist/src/svm/clients/SvmSpoke";
|
|
4
|
+
import { hashNonEmptyMessage } from "@across-protocol/contracts/dist/src/svm/web3-v1";
|
|
5
|
+
import { ASSOCIATED_TOKEN_PROGRAM_ADDRESS, TOKEN_PROGRAM_ADDRESS, getApproveCheckedInstruction, } from "@solana-program/token";
|
|
6
|
+
import { address, fetchEncodedAccount, fetchEncodedAccounts, getAddressEncoder, getProgramDerivedAddress, getU32Encoder, getU64Encoder, some, } from "@solana/kit";
|
|
7
|
+
import assert from "assert";
|
|
8
|
+
import { arrayify, hexZeroPad, hexlify } from "ethers/lib/utils";
|
|
9
|
+
import { CHAIN_IDs } from "../../constants";
|
|
10
|
+
import { FillStatus } from "../../interfaces";
|
|
11
|
+
import { isUnsafeDepositId, SvmAddress, getTokenInfo, isDefined, toAddressType, keccak256, chainIsSvm, chunk, } from "../../utils";
|
|
12
|
+
import { getStatePda, getFillStatusPda, unwrapEventData, getEventAuthority } from "./";
|
|
13
|
+
import { SVMEventNames } from "./types";
|
|
14
|
+
/**
|
|
15
|
+
* @note: Average Solana slot duration is about 400-500ms. We can be conservative
|
|
16
|
+
* and choose 400 to ensure that the most slots get included in our ranges
|
|
17
|
+
*/
|
|
18
|
+
export var SLOT_DURATION_MS = 400;
|
|
19
|
+
/**
|
|
20
|
+
* Retrieves the chain time at a particular slot.
|
|
21
|
+
*/
|
|
22
|
+
export function getTimestampForSlot(provider, slotNumber) {
|
|
23
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
24
|
+
var slotTime;
|
|
25
|
+
return __generator(this, function (_a) {
|
|
26
|
+
switch (_a.label) {
|
|
27
|
+
case 0: return [4 /*yield*/, provider.getBlockTime(BigInt(slotNumber)).send()];
|
|
28
|
+
case 1:
|
|
29
|
+
slotTime = _a.sent();
|
|
30
|
+
return [2 /*return*/, Number(slotTime)];
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Returns the current fill deadline buffer.
|
|
37
|
+
* @param provider SVM Provider instance
|
|
38
|
+
* @param statePda Spoke Pool's State PDA
|
|
39
|
+
* @returns fill deadline buffer
|
|
40
|
+
*/
|
|
41
|
+
export function getFillDeadline(provider, statePda) {
|
|
42
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
43
|
+
var state;
|
|
44
|
+
return __generator(this, function (_a) {
|
|
45
|
+
switch (_a.label) {
|
|
46
|
+
case 0: return [4 /*yield*/, fetchState(provider, statePda)];
|
|
47
|
+
case 1:
|
|
48
|
+
state = _a.sent();
|
|
49
|
+
return [2 /*return*/, state.data.fillDeadlineBuffer];
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Finds the deposit id at a specific block number.
|
|
56
|
+
* @param blockTag The block number to search for the deposit ID at.
|
|
57
|
+
* @returns The deposit ID.
|
|
58
|
+
*/
|
|
59
|
+
export function getDepositIdAtBlock(_contract, _blockTag) {
|
|
60
|
+
throw new Error("getDepositIdAtBlock: not implemented");
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Finds deposit events within a 2-day window ending at the specified slot.
|
|
64
|
+
*
|
|
65
|
+
* @remarks
|
|
66
|
+
* This implementation uses a slot-limited search approach because Solana PDA state has
|
|
67
|
+
* limitations that prevent directly referencing old deposit IDs. Unlike EVM chains where
|
|
68
|
+
* we might use binary search across the entire chain history, in Solana we must query within
|
|
69
|
+
* a constrained slot range.
|
|
70
|
+
*
|
|
71
|
+
* The search window is calculated by:
|
|
72
|
+
* 1. Using the provided slot (or current confirmed slot if none is provided)
|
|
73
|
+
* 2. Looking back 2 days worth of slots from that point
|
|
74
|
+
*
|
|
75
|
+
* We use a 2-day window because:
|
|
76
|
+
* 1. Most valid deposits that need to be processed will be recent
|
|
77
|
+
* 2. This covers multiple bundle submission periods
|
|
78
|
+
* 3. It balances performance with practical deposit age
|
|
79
|
+
*
|
|
80
|
+
* @important
|
|
81
|
+
* This function may return `undefined` for valid deposit IDs that are older than the search
|
|
82
|
+
* window (approximately 2 days before the specified slot). This is an acceptable limitation
|
|
83
|
+
* as deposits this old are typically not relevant to current operations.
|
|
84
|
+
*
|
|
85
|
+
* @param eventClient - SvmCpiEventsClient instance
|
|
86
|
+
* @param depositId - The deposit ID to search for
|
|
87
|
+
* @param slot - The slot to search up to (defaults to current slot). The search will look
|
|
88
|
+
* for deposits between (slot - secondsLookback) and slot.
|
|
89
|
+
* @param secondsLookback - The number of seconds to look back for deposits (defaults to 2 days).
|
|
90
|
+
* @returns The deposit if found within the slot window, undefined otherwise
|
|
91
|
+
*/
|
|
92
|
+
export function findDeposit(eventClient, depositId, slot, secondsLookback // 2 days
|
|
93
|
+
) {
|
|
94
|
+
var _a;
|
|
95
|
+
if (secondsLookback === void 0) { secondsLookback = 2 * 24 * 60 * 60; }
|
|
96
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
97
|
+
var provider, currentSlot, endSlot, slotsInElapsed, startSlot, depositEvent;
|
|
98
|
+
return __generator(this, function (_b) {
|
|
99
|
+
switch (_b.label) {
|
|
100
|
+
case 0:
|
|
101
|
+
// We can only perform this search when we have a safe deposit ID.
|
|
102
|
+
if (isUnsafeDepositId(depositId)) {
|
|
103
|
+
throw new Error("Cannot binary search for depositId ".concat(depositId));
|
|
104
|
+
}
|
|
105
|
+
provider = eventClient.getRpc();
|
|
106
|
+
return [4 /*yield*/, provider.getSlot({ commitment: "confirmed" }).send()];
|
|
107
|
+
case 1:
|
|
108
|
+
currentSlot = _b.sent();
|
|
109
|
+
endSlot = slot !== undefined ? BigInt(Math.min(Number(slot), Number(currentSlot))) : currentSlot;
|
|
110
|
+
slotsInElapsed = BigInt(Math.round((secondsLookback * 1000) / SLOT_DURATION_MS));
|
|
111
|
+
startSlot = endSlot - slotsInElapsed;
|
|
112
|
+
return [4 /*yield*/, eventClient.queryEvents("FundsDeposited", startSlot, endSlot)];
|
|
113
|
+
case 2:
|
|
114
|
+
depositEvent = (_a = (_b.sent())) === null || _a === void 0 ? void 0 : _a.find(function (event) {
|
|
115
|
+
return depositId.eq(event.data.depositId);
|
|
116
|
+
});
|
|
117
|
+
// If no deposit event is found, return undefined
|
|
118
|
+
if (!depositEvent) {
|
|
119
|
+
return [2 /*return*/, undefined];
|
|
120
|
+
}
|
|
121
|
+
// Return the deposit event with block info
|
|
122
|
+
return [2 /*return*/, __assign({ txnRef: depositEvent.signature.toString(), blockNumber: Number(depositEvent.slot), txnIndex: 0, logIndex: 0 }, unwrapEventData(depositEvent.data))];
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Resolves the fill status of a deposit at a specific slot or at the current confirmed one.
|
|
129
|
+
*
|
|
130
|
+
* If no slot is provided, attempts to solve the fill status using the PDA. Otherwise, it is reconstructed from PDA events.
|
|
131
|
+
*
|
|
132
|
+
* @param programId - The spoke pool program ID.
|
|
133
|
+
* @param relayData - Deposit information used to locate the fill status.
|
|
134
|
+
* @param destinationChainId - Destination chain ID (must be an SVM chain).
|
|
135
|
+
* @param provider - SVM provider instance.
|
|
136
|
+
* @param svmEventsClient - SVM events client for querying events.
|
|
137
|
+
* @param atHeight - (Optional) Specific slot number to query. Defaults to the latest confirmed slot.
|
|
138
|
+
* @returns The fill status for the deposit at the specified or current slot.
|
|
139
|
+
*/
|
|
140
|
+
export function relayFillStatus(programId, relayData, destinationChainId, svmEventsClient, atHeight) {
|
|
141
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
142
|
+
var provider, fillStatusPda, currentSlot, _a, fillStatusAccount, currentSlotTimestamp, decodedAccountData, toSlot;
|
|
143
|
+
return __generator(this, function (_b) {
|
|
144
|
+
switch (_b.label) {
|
|
145
|
+
case 0:
|
|
146
|
+
assert(chainIsSvm(destinationChainId), "Destination chain must be an SVM chain");
|
|
147
|
+
provider = svmEventsClient.getRpc();
|
|
148
|
+
return [4 /*yield*/, getFillStatusPda(programId, relayData, destinationChainId)];
|
|
149
|
+
case 1:
|
|
150
|
+
fillStatusPda = _b.sent();
|
|
151
|
+
return [4 /*yield*/, provider.getSlot({ commitment: "confirmed" }).send()];
|
|
152
|
+
case 2:
|
|
153
|
+
currentSlot = _b.sent();
|
|
154
|
+
if (!(atHeight === undefined)) return [3 /*break*/, 4];
|
|
155
|
+
return [4 /*yield*/, Promise.all([
|
|
156
|
+
fetchEncodedAccount(provider, fillStatusPda, { commitment: "confirmed" }),
|
|
157
|
+
provider.getBlockTime(currentSlot).send(),
|
|
158
|
+
])];
|
|
159
|
+
case 3:
|
|
160
|
+
_a = _b.sent(), fillStatusAccount = _a[0], currentSlotTimestamp = _a[1];
|
|
161
|
+
// If the PDA exists, return the stored fill status
|
|
162
|
+
if (fillStatusAccount.exists) {
|
|
163
|
+
decodedAccountData = decodeFillStatusAccount(fillStatusAccount);
|
|
164
|
+
return [2 /*return*/, decodedAccountData.data.status];
|
|
165
|
+
}
|
|
166
|
+
// If the PDA doesn't exist and the deadline hasn't passed yet, the deposit must be unfilled,
|
|
167
|
+
// since PDAs can't be closed before the fill deadline.
|
|
168
|
+
else if (Number(currentSlotTimestamp) < relayData.fillDeadline) {
|
|
169
|
+
return [2 /*return*/, FillStatus.Unfilled];
|
|
170
|
+
}
|
|
171
|
+
_b.label = 4;
|
|
172
|
+
case 4:
|
|
173
|
+
toSlot = atHeight ? BigInt(atHeight) : currentSlot;
|
|
174
|
+
return [2 /*return*/, resolveFillStatusFromPdaEvents(fillStatusPda, toSlot, svmEventsClient)];
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Resolves fill statuses for multiple deposits at a specific or latest confirmed slot,
|
|
181
|
+
* using PDAs when possible and falling back to events if needed.
|
|
182
|
+
*
|
|
183
|
+
* @param programId The spoke pool program ID.
|
|
184
|
+
* @param relayData An array of relay data to resolve fill statuses for.
|
|
185
|
+
* @param destinationChainId The destination chain ID (must be an SVM chain).
|
|
186
|
+
* @param provider SVM Provider instance.
|
|
187
|
+
* @param svmEventsClient SVM events client instance for querying events.
|
|
188
|
+
* @param atHeight (Optional) The slot number to query at. If omitted, queries the latest confirmed slot.
|
|
189
|
+
* @returns An array of fill statuses for the specified deposits at the requested slot (or at the current confirmed slot).
|
|
190
|
+
*/
|
|
191
|
+
export function fillStatusArray(programId, relayData, destinationChainId, svmEventsClient, atHeight, logger) {
|
|
192
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
193
|
+
var provider, chunkSize, chunkedRelayData, fillStatusPdas, fillStatuses, _a, missingStatuses, missingChunked, missingResults, toSlot, _b, _i, missingChunked_1, chunk_1, chunkResults;
|
|
194
|
+
var _this = this;
|
|
195
|
+
return __generator(this, function (_c) {
|
|
196
|
+
switch (_c.label) {
|
|
197
|
+
case 0:
|
|
198
|
+
assert(chainIsSvm(destinationChainId), "Destination chain must be an SVM chain");
|
|
199
|
+
provider = svmEventsClient.getRpc();
|
|
200
|
+
chunkSize = 100;
|
|
201
|
+
chunkedRelayData = chunk(relayData, chunkSize);
|
|
202
|
+
return [4 /*yield*/, Promise.all(chunkedRelayData.map(function (relayDataChunk) {
|
|
203
|
+
return Promise.all(relayDataChunk.map(function (relayData) { return getFillStatusPda(programId, relayData, destinationChainId); }));
|
|
204
|
+
}))];
|
|
205
|
+
case 1:
|
|
206
|
+
fillStatusPdas = (_c.sent()).flat();
|
|
207
|
+
if (atHeight !== undefined && logger) {
|
|
208
|
+
logger.warn({
|
|
209
|
+
at: "SvmSpokeUtils#fillStatusArray",
|
|
210
|
+
message: "Querying specific slots for large arrays is slow. For current status, omit 'atHeight' param to use latest confirmed slot instead.",
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
if (!(atHeight === undefined)) return [3 /*break*/, 3];
|
|
214
|
+
return [4 /*yield*/, fetchBatchFillStatusFromPdaAccounts(provider, fillStatusPdas, relayData)];
|
|
215
|
+
case 2:
|
|
216
|
+
_a = _c.sent();
|
|
217
|
+
return [3 /*break*/, 4];
|
|
218
|
+
case 3:
|
|
219
|
+
_a = new Array(relayData.length).fill(undefined);
|
|
220
|
+
_c.label = 4;
|
|
221
|
+
case 4:
|
|
222
|
+
fillStatuses = _a;
|
|
223
|
+
missingStatuses = fillStatuses.reduce(function (acc, status, index) {
|
|
224
|
+
if (status === undefined) {
|
|
225
|
+
acc.push(index);
|
|
226
|
+
}
|
|
227
|
+
return acc;
|
|
228
|
+
}, []);
|
|
229
|
+
missingChunked = chunk(missingStatuses, chunkSize);
|
|
230
|
+
missingResults = [];
|
|
231
|
+
if (!atHeight) return [3 /*break*/, 5];
|
|
232
|
+
_b = BigInt(atHeight);
|
|
233
|
+
return [3 /*break*/, 7];
|
|
234
|
+
case 5: return [4 /*yield*/, provider.getSlot({ commitment: "confirmed" }).send()];
|
|
235
|
+
case 6:
|
|
236
|
+
_b = _c.sent();
|
|
237
|
+
_c.label = 7;
|
|
238
|
+
case 7:
|
|
239
|
+
toSlot = _b;
|
|
240
|
+
_i = 0, missingChunked_1 = missingChunked;
|
|
241
|
+
_c.label = 8;
|
|
242
|
+
case 8:
|
|
243
|
+
if (!(_i < missingChunked_1.length)) return [3 /*break*/, 11];
|
|
244
|
+
chunk_1 = missingChunked_1[_i];
|
|
245
|
+
return [4 /*yield*/, Promise.all(chunk_1.map(function (missingIndex) { return __awaiter(_this, void 0, void 0, function () {
|
|
246
|
+
var _a;
|
|
247
|
+
return __generator(this, function (_b) {
|
|
248
|
+
switch (_b.label) {
|
|
249
|
+
case 0:
|
|
250
|
+
_a = {
|
|
251
|
+
index: missingIndex
|
|
252
|
+
};
|
|
253
|
+
return [4 /*yield*/, resolveFillStatusFromPdaEvents(fillStatusPdas[missingIndex], toSlot, svmEventsClient)];
|
|
254
|
+
case 1: return [2 /*return*/, (_a.fillStatus = _b.sent(),
|
|
255
|
+
_a)];
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
}); }))];
|
|
259
|
+
case 9:
|
|
260
|
+
chunkResults = _c.sent();
|
|
261
|
+
missingResults.push.apply(missingResults, chunkResults);
|
|
262
|
+
_c.label = 10;
|
|
263
|
+
case 10:
|
|
264
|
+
_i++;
|
|
265
|
+
return [3 /*break*/, 8];
|
|
266
|
+
case 11:
|
|
267
|
+
// Fill in missing statuses back to the result array
|
|
268
|
+
missingResults.forEach(function (_a) {
|
|
269
|
+
var index = _a.index, fillStatus = _a.fillStatus;
|
|
270
|
+
fillStatuses[index] = fillStatus;
|
|
271
|
+
});
|
|
272
|
+
return [2 /*return*/, fillStatuses];
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Finds the `FilledRelay` event for a given deposit within the provided slot range.
|
|
279
|
+
*
|
|
280
|
+
* @param relayData - Deposit information that is used to complete a fill.
|
|
281
|
+
* @param destinationChainId - Destination chain ID (must be an SVM chain).
|
|
282
|
+
* @param svmEventsClient - SVM events client instance for querying events.
|
|
283
|
+
* @param fromSlot - Starting slot to search.
|
|
284
|
+
* @param toSlot (Optional) Ending slot to search. If not provided, the current confirmed slot will be used.
|
|
285
|
+
* @returns The fill event with block info, or `undefined` if not found.
|
|
286
|
+
*/
|
|
287
|
+
export function findFillEvent(relayData, destinationChainId, svmEventsClient, fromSlot, toSlot) {
|
|
288
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
289
|
+
var _a, _b, programId, fillStatusPda, fillEvents, rawFillEvent, parsedFillEvent;
|
|
290
|
+
return __generator(this, function (_c) {
|
|
291
|
+
switch (_c.label) {
|
|
292
|
+
case 0:
|
|
293
|
+
assert(chainIsSvm(destinationChainId), "Destination chain must be an SVM chain");
|
|
294
|
+
if (!(toSlot !== null && toSlot !== void 0)) return [3 /*break*/, 1];
|
|
295
|
+
_a = toSlot;
|
|
296
|
+
return [3 /*break*/, 3];
|
|
297
|
+
case 1:
|
|
298
|
+
_b = Number;
|
|
299
|
+
return [4 /*yield*/, svmEventsClient.getRpc().getSlot({ commitment: "confirmed" }).send()];
|
|
300
|
+
case 2:
|
|
301
|
+
_a = (toSlot = _b.apply(void 0, [_c.sent()]));
|
|
302
|
+
_c.label = 3;
|
|
303
|
+
case 3:
|
|
304
|
+
_a;
|
|
305
|
+
programId = svmEventsClient.getProgramAddress();
|
|
306
|
+
return [4 /*yield*/, getFillStatusPda(programId, relayData, destinationChainId)];
|
|
307
|
+
case 4:
|
|
308
|
+
fillStatusPda = _c.sent();
|
|
309
|
+
return [4 /*yield*/, svmEventsClient.queryDerivedAddressEvents(SVMEventNames.FilledRelay, fillStatusPda, BigInt(fromSlot), BigInt(toSlot), { limit: 10 })];
|
|
310
|
+
case 5:
|
|
311
|
+
fillEvents = _c.sent();
|
|
312
|
+
assert(fillEvents.length <= 1, "Expected at most one fill event for ".concat(fillStatusPda, ", got ").concat(fillEvents.length));
|
|
313
|
+
if (fillEvents.length > 0) {
|
|
314
|
+
rawFillEvent = fillEvents[0];
|
|
315
|
+
parsedFillEvent = __assign({ transactionHash: rawFillEvent.signature, blockNumber: Number(rawFillEvent.slot), transactionIndex: 0, logIndex: 0, destinationChainId: destinationChainId }, unwrapEventData(rawFillEvent.data));
|
|
316
|
+
return [2 /*return*/, parsedFillEvent];
|
|
317
|
+
}
|
|
318
|
+
return [2 /*return*/, undefined];
|
|
319
|
+
}
|
|
320
|
+
});
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* @param spokePool Address (program ID) of the SvmSpoke.
|
|
325
|
+
* @param deposit V3Deopsit instance.
|
|
326
|
+
* @param relayer Address of the relayer filling the deposit.
|
|
327
|
+
* @param repaymentChainId Optional repaymentChainId (defaults to destinationChainId).
|
|
328
|
+
* @returns An Ethers UnsignedTransaction instance.
|
|
329
|
+
*/
|
|
330
|
+
export function fillRelayInstruction(spokePool, deposit, relayer, recipientTokenAccount, repaymentChainId) {
|
|
331
|
+
if (repaymentChainId === void 0) { repaymentChainId = deposit.destinationChainId; }
|
|
332
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
333
|
+
var programId, relayerAddress, _a, depositor, recipient, exclusiveRelayer, inputToken, outputToken, _relayDataHash, relayDataHash, relayerTokenAccount, _b, statePda, fillStatusPda, eventAuthority, depositIdBuffer, shortenedBuffer;
|
|
334
|
+
return __generator(this, function (_c) {
|
|
335
|
+
switch (_c.label) {
|
|
336
|
+
case 0:
|
|
337
|
+
programId = spokePool.toBase58();
|
|
338
|
+
relayerAddress = SvmAddress.from(relayer.address);
|
|
339
|
+
_a = [
|
|
340
|
+
deposit.depositor,
|
|
341
|
+
deposit.recipient,
|
|
342
|
+
deposit.exclusiveRelayer,
|
|
343
|
+
deposit.inputToken,
|
|
344
|
+
deposit.outputToken,
|
|
345
|
+
].map(function (addr) { return toAddressType(addr).forceSvmAddress(); }), depositor = _a[0], recipient = _a[1], exclusiveRelayer = _a[2], inputToken = _a[3], outputToken = _a[4];
|
|
346
|
+
_relayDataHash = getRelayDataHash(deposit, deposit.destinationChainId);
|
|
347
|
+
relayDataHash = new Uint8Array(Buffer.from(_relayDataHash.slice(2), "hex"));
|
|
348
|
+
return [4 /*yield*/, getAssociatedTokenAddress(relayerAddress, outputToken)];
|
|
349
|
+
case 1:
|
|
350
|
+
relayerTokenAccount = _c.sent();
|
|
351
|
+
return [4 /*yield*/, Promise.all([
|
|
352
|
+
getStatePda(spokePool.toV2Address()),
|
|
353
|
+
getFillStatusPda(spokePool.toV2Address(), deposit, deposit.destinationChainId),
|
|
354
|
+
getEventAuthority(),
|
|
355
|
+
])];
|
|
356
|
+
case 2:
|
|
357
|
+
_b = _c.sent(), statePda = _b[0], fillStatusPda = _b[1], eventAuthority = _b[2];
|
|
358
|
+
depositIdBuffer = new Uint8Array(32);
|
|
359
|
+
shortenedBuffer = new Uint8Array(Buffer.from(deposit.depositId.toHexString().slice(2), "hex"));
|
|
360
|
+
depositIdBuffer.set(shortenedBuffer, 32 - shortenedBuffer.length);
|
|
361
|
+
return [2 /*return*/, SvmSpokeClient.getFillRelayInstruction({
|
|
362
|
+
signer: relayer,
|
|
363
|
+
state: statePda,
|
|
364
|
+
mint: outputToken.toV2Address(),
|
|
365
|
+
relayerTokenAccount: relayerTokenAccount,
|
|
366
|
+
recipientTokenAccount: recipientTokenAccount,
|
|
367
|
+
fillStatus: fillStatusPda,
|
|
368
|
+
eventAuthority: eventAuthority,
|
|
369
|
+
program: address(programId),
|
|
370
|
+
relayHash: relayDataHash,
|
|
371
|
+
relayData: some({
|
|
372
|
+
depositor: depositor.toV2Address(),
|
|
373
|
+
recipient: recipient.toV2Address(),
|
|
374
|
+
exclusiveRelayer: exclusiveRelayer.toV2Address(),
|
|
375
|
+
inputToken: inputToken.toV2Address(),
|
|
376
|
+
outputToken: outputToken.toV2Address(),
|
|
377
|
+
inputAmount: deposit.inputAmount.toBigInt(),
|
|
378
|
+
outputAmount: deposit.outputAmount.toBigInt(),
|
|
379
|
+
originChainId: BigInt(deposit.originChainId),
|
|
380
|
+
fillDeadline: deposit.fillDeadline,
|
|
381
|
+
exclusivityDeadline: deposit.exclusivityDeadline,
|
|
382
|
+
depositId: depositIdBuffer,
|
|
383
|
+
message: new Uint8Array(Buffer.from(deposit.message.slice(2), "hex")),
|
|
384
|
+
}),
|
|
385
|
+
repaymentChainId: some(BigInt(repaymentChainId)),
|
|
386
|
+
repaymentAddress: some(relayerAddress.toV2Address()),
|
|
387
|
+
})];
|
|
388
|
+
}
|
|
389
|
+
});
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* @param mint Address of the token corresponding to the account being made.
|
|
394
|
+
* @param relayer Address of the relayer filling the deposit.
|
|
395
|
+
* @returns An instruction for creating a new token account.
|
|
396
|
+
*/
|
|
397
|
+
export function createTokenAccountsInstruction(mint, relayer) {
|
|
398
|
+
return SvmSpokeClient.getCreateTokenAccountsInstruction({
|
|
399
|
+
signer: relayer,
|
|
400
|
+
mint: mint.toV2Address(),
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* @param mint Address of the token corresponding to the account being made.
|
|
405
|
+
* @param amount Amount of the token to approve.
|
|
406
|
+
* @param relayer Address of the relayer filling the deposit.
|
|
407
|
+
* @param spokePool Address (program ID) of the SvmSpoke.
|
|
408
|
+
* @returns A token approval instruction.
|
|
409
|
+
*/
|
|
410
|
+
export function createApproveInstruction(mint, amount, relayer, spokePool, mintDecimals) {
|
|
411
|
+
var _a;
|
|
412
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
413
|
+
var _b, relayerTokenAccount, statePda;
|
|
414
|
+
return __generator(this, function (_c) {
|
|
415
|
+
switch (_c.label) {
|
|
416
|
+
case 0: return [4 /*yield*/, Promise.all([
|
|
417
|
+
getAssociatedTokenAddress(relayer, mint, TOKEN_PROGRAM_ADDRESS),
|
|
418
|
+
getStatePda(spokePool.toV2Address()),
|
|
419
|
+
])];
|
|
420
|
+
case 1:
|
|
421
|
+
_b = _c.sent(), relayerTokenAccount = _b[0], statePda = _b[1];
|
|
422
|
+
// If no mint decimals were supplied, then assign it to whatever value we have in TOKEN_SYMBOLS_MAP.
|
|
423
|
+
// If this token is not in TOKEN_SYMBOLS_MAP, then throw an error.
|
|
424
|
+
mintDecimals !== null && mintDecimals !== void 0 ? mintDecimals : (mintDecimals = (_a = getTokenInfo(mint.toBase58(), CHAIN_IDs.SOLANA)) === null || _a === void 0 ? void 0 : _a.decimals);
|
|
425
|
+
if (!isDefined(mintDecimals)) {
|
|
426
|
+
throw new Error("No mint decimals found for token ".concat(mint.toBase58()));
|
|
427
|
+
}
|
|
428
|
+
return [2 /*return*/, getApproveCheckedInstruction({
|
|
429
|
+
source: relayerTokenAccount,
|
|
430
|
+
mint: mint.toV2Address(),
|
|
431
|
+
delegate: statePda,
|
|
432
|
+
owner: relayer.toV2Address(),
|
|
433
|
+
amount: amount.toBigInt(),
|
|
434
|
+
decimals: mintDecimals,
|
|
435
|
+
})];
|
|
436
|
+
}
|
|
437
|
+
});
|
|
438
|
+
});
|
|
439
|
+
}
|
|
440
|
+
export function getAssociatedTokenAddress(owner, mint, tokenProgramId) {
|
|
441
|
+
if (tokenProgramId === void 0) { tokenProgramId = TOKEN_PROGRAM_ADDRESS; }
|
|
442
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
443
|
+
var associatedToken;
|
|
444
|
+
return __generator(this, function (_a) {
|
|
445
|
+
switch (_a.label) {
|
|
446
|
+
case 0: return [4 /*yield*/, getProgramDerivedAddress({
|
|
447
|
+
programAddress: ASSOCIATED_TOKEN_PROGRAM_ADDRESS,
|
|
448
|
+
seeds: [
|
|
449
|
+
new Uint8Array(owner.toBuffer()),
|
|
450
|
+
new Uint8Array(SvmAddress.from(tokenProgramId).toBuffer()),
|
|
451
|
+
new Uint8Array(mint.toBuffer()),
|
|
452
|
+
],
|
|
453
|
+
})];
|
|
454
|
+
case 1:
|
|
455
|
+
associatedToken = (_a.sent())[0];
|
|
456
|
+
return [2 /*return*/, associatedToken];
|
|
457
|
+
}
|
|
458
|
+
});
|
|
459
|
+
});
|
|
460
|
+
}
|
|
461
|
+
export function getRelayDataHash(relayData, destinationChainId) {
|
|
462
|
+
var addressEncoder = getAddressEncoder();
|
|
463
|
+
var uint64Encoder = getU64Encoder();
|
|
464
|
+
var uint32Encoder = getU32Encoder();
|
|
465
|
+
assert(relayData.message.startsWith("0x"), "Message must be a hex string");
|
|
466
|
+
var contentToHash = Buffer.concat([
|
|
467
|
+
Uint8Array.from(addressEncoder.encode(SvmAddress.from(relayData.depositor, "base16").toV2Address())),
|
|
468
|
+
Uint8Array.from(addressEncoder.encode(SvmAddress.from(relayData.recipient, "base16").toV2Address())),
|
|
469
|
+
Uint8Array.from(addressEncoder.encode(SvmAddress.from(relayData.exclusiveRelayer, "base16").toV2Address())),
|
|
470
|
+
Uint8Array.from(addressEncoder.encode(SvmAddress.from(relayData.inputToken, "base16").toV2Address())),
|
|
471
|
+
Uint8Array.from(addressEncoder.encode(SvmAddress.from(relayData.outputToken, "base16").toV2Address())),
|
|
472
|
+
Uint8Array.from(uint64Encoder.encode(BigInt(relayData.inputAmount.toString()))),
|
|
473
|
+
Uint8Array.from(uint64Encoder.encode(BigInt(relayData.outputAmount.toString()))),
|
|
474
|
+
Uint8Array.from(uint64Encoder.encode(BigInt(relayData.originChainId.toString()))),
|
|
475
|
+
arrayify(hexZeroPad(hexlify(relayData.depositId), 32)),
|
|
476
|
+
Uint8Array.from(uint32Encoder.encode(relayData.fillDeadline)),
|
|
477
|
+
Uint8Array.from(uint32Encoder.encode(relayData.exclusivityDeadline)),
|
|
478
|
+
hashNonEmptyMessage(Buffer.from(arrayify(relayData.message))),
|
|
479
|
+
Uint8Array.from(uint64Encoder.encode(BigInt(destinationChainId))),
|
|
480
|
+
]);
|
|
481
|
+
return keccak256(contentToHash);
|
|
482
|
+
}
|
|
483
|
+
function resolveFillStatusFromPdaEvents(fillStatusPda, toSlot, svmEventsClient) {
|
|
484
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
485
|
+
var eventsToQuery, relevantEvents, fillStatusEvent;
|
|
486
|
+
return __generator(this, function (_a) {
|
|
487
|
+
switch (_a.label) {
|
|
488
|
+
case 0:
|
|
489
|
+
eventsToQuery = [SVMEventNames.FilledRelay, SVMEventNames.RequestedSlowFill];
|
|
490
|
+
return [4 /*yield*/, Promise.all(eventsToQuery.map(function (eventName) {
|
|
491
|
+
// PDAs should have only a few events, requesting up to 10 should be enough.
|
|
492
|
+
return svmEventsClient.queryDerivedAddressEvents(eventName, fillStatusPda, undefined, toSlot, { limit: 10 });
|
|
493
|
+
}))];
|
|
494
|
+
case 1:
|
|
495
|
+
relevantEvents = (_a.sent()).flat();
|
|
496
|
+
if (relevantEvents.length === 0) {
|
|
497
|
+
// No fill or requested slow fill events found for this PDA
|
|
498
|
+
return [2 /*return*/, FillStatus.Unfilled];
|
|
499
|
+
}
|
|
500
|
+
// Sort events in ascending order of slot number
|
|
501
|
+
relevantEvents.sort(function (a, b) { return Number(a.slot - b.slot); });
|
|
502
|
+
fillStatusEvent = relevantEvents.pop();
|
|
503
|
+
switch (fillStatusEvent.name) {
|
|
504
|
+
case SVMEventNames.FilledRelay:
|
|
505
|
+
return [2 /*return*/, FillStatus.Filled];
|
|
506
|
+
case SVMEventNames.RequestedSlowFill:
|
|
507
|
+
return [2 /*return*/, FillStatus.RequestedSlowFill];
|
|
508
|
+
default:
|
|
509
|
+
throw new Error("Unexpected event name: ".concat(fillStatusEvent.name));
|
|
510
|
+
}
|
|
511
|
+
return [2 /*return*/];
|
|
512
|
+
}
|
|
513
|
+
});
|
|
514
|
+
});
|
|
515
|
+
}
|
|
516
|
+
/**
|
|
517
|
+
* Attempts to resolve the fill status for an array of deposits by reading their fillStatus PDAs.
|
|
518
|
+
*
|
|
519
|
+
* - If a PDA exists, the status is read directly from it.
|
|
520
|
+
* - If the PDA does not exist but the deposit's fill deadline has not passed, the deposit is considered unfilled.
|
|
521
|
+
* - If the PDA does not exist and the fill deadline has passed, the status cannot be determined and is set to undefined.
|
|
522
|
+
*
|
|
523
|
+
* Assumes PDAs can only be closed after the fill deadline expires.
|
|
524
|
+
*
|
|
525
|
+
* @param provider SVM provider instance
|
|
526
|
+
* @param fillStatusPdas An array of fill status PDAs to retrieve the fill status for.
|
|
527
|
+
* @param relayData An array of relay data from which the fill status PDAs were derived.
|
|
528
|
+
*/
|
|
529
|
+
function fetchBatchFillStatusFromPdaAccounts(provider, fillStatusPdas, relayDataArray) {
|
|
530
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
531
|
+
var chunkSize, currentSlot, _a, pdaAccounts, currentSlotTimestamp, fillStatuses;
|
|
532
|
+
return __generator(this, function (_b) {
|
|
533
|
+
switch (_b.label) {
|
|
534
|
+
case 0:
|
|
535
|
+
chunkSize = 100;
|
|
536
|
+
return [4 /*yield*/, provider.getSlot({ commitment: "confirmed" }).send()];
|
|
537
|
+
case 1:
|
|
538
|
+
currentSlot = _b.sent();
|
|
539
|
+
return [4 /*yield*/, Promise.all([
|
|
540
|
+
Promise.all(chunk(fillStatusPdas, chunkSize).map(function (chunk) {
|
|
541
|
+
return fetchEncodedAccounts(provider, chunk, { commitment: "confirmed" });
|
|
542
|
+
})),
|
|
543
|
+
provider.getBlockTime(currentSlot).send(),
|
|
544
|
+
])];
|
|
545
|
+
case 2:
|
|
546
|
+
_a = _b.sent(), pdaAccounts = _a[0], currentSlotTimestamp = _a[1];
|
|
547
|
+
fillStatuses = pdaAccounts.flat().map(function (account, index) {
|
|
548
|
+
// If the PDA exists, we can fetch the status directly.
|
|
549
|
+
if (account.exists) {
|
|
550
|
+
var decodedAccount = decodeFillStatusAccount(account);
|
|
551
|
+
return decodedAccount.data.status;
|
|
552
|
+
}
|
|
553
|
+
// If the PDA doesn't exist and the deadline hasn't passed yet, the deposit must be unfilled,
|
|
554
|
+
// since PDAs can't be closed before the fill deadline.
|
|
555
|
+
else if (Number(currentSlotTimestamp) < relayDataArray[index].fillDeadline) {
|
|
556
|
+
return FillStatus.Unfilled;
|
|
557
|
+
}
|
|
558
|
+
// If the PDA doesn't exist and the fill deadline has passed, then the status can't be determined and is set to undefined.
|
|
559
|
+
return undefined;
|
|
560
|
+
});
|
|
561
|
+
return [2 /*return*/, fillStatuses];
|
|
562
|
+
}
|
|
563
|
+
});
|
|
564
|
+
});
|
|
565
|
+
}
|
|
566
|
+
//# sourceMappingURL=SpokeUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpokeUtils.js","sourceRoot":"","sources":["../../../../src/arch/svm/SpokeUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/arch/svm/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,IAAI,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACvF,MAAM,CAAC,IAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC"}
|