@humanode-hyperlane/rebalancer 27.2.2 → 1029.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bridges/LiFiBridge.d.ts +3 -3
- package/dist/bridges/LiFiBridge.d.ts.map +1 -1
- package/dist/bridges/LiFiBridge.js +66 -55
- package/dist/bridges/LiFiBridge.js.map +1 -1
- package/dist/bridges/LiFiBridge.test.js +213 -0
- package/dist/bridges/LiFiBridge.test.js.map +1 -1
- package/dist/config/RebalancerConfig.d.ts +4 -3
- package/dist/config/RebalancerConfig.d.ts.map +1 -1
- package/dist/config/RebalancerConfig.js +7 -5
- package/dist/config/RebalancerConfig.js.map +1 -1
- package/dist/config/RebalancerConfig.test.js +278 -2
- package/dist/config/RebalancerConfig.test.js.map +1 -1
- package/dist/config/types.d.ts +707 -2664
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +62 -7
- package/dist/config/types.js.map +1 -1
- package/dist/core/InventoryRebalancer.d.ts +13 -19
- package/dist/core/InventoryRebalancer.d.ts.map +1 -1
- package/dist/core/InventoryRebalancer.js +404 -276
- package/dist/core/InventoryRebalancer.js.map +1 -1
- package/dist/core/InventoryRebalancer.test.js +814 -25
- package/dist/core/InventoryRebalancer.test.js.map +1 -1
- package/dist/core/Rebalancer.d.ts.map +1 -1
- package/dist/core/Rebalancer.js +12 -6
- package/dist/core/Rebalancer.js.map +1 -1
- package/dist/core/Rebalancer.test.js +51 -0
- package/dist/core/Rebalancer.test.js.map +1 -1
- package/dist/core/RebalancerOrchestrator.d.ts.map +1 -1
- package/dist/core/RebalancerOrchestrator.test.js +0 -1
- package/dist/core/RebalancerOrchestrator.test.js.map +1 -1
- package/dist/core/RebalancerService.d.ts.map +1 -1
- package/dist/core/RebalancerService.js +3 -2
- package/dist/core/RebalancerService.js.map +1 -1
- package/dist/core/RebalancerService.test.js +24 -0
- package/dist/core/RebalancerService.test.js.map +1 -1
- package/dist/e2e/fixtures/routes.d.ts +3 -3
- package/dist/e2e/fixtures/routes.d.ts.map +1 -1
- package/dist/e2e/harness/BaseLocalDeploymentManager.d.ts.map +1 -1
- package/dist/e2e/harness/BaseLocalDeploymentManager.js +3 -2
- package/dist/e2e/harness/BaseLocalDeploymentManager.js.map +1 -1
- package/dist/e2e/harness/Erc20InventoryLocalDeploymentManager.d.ts.map +1 -1
- package/dist/e2e/harness/Erc20InventoryLocalDeploymentManager.js.map +1 -1
- package/dist/e2e/harness/Erc20LocalDeploymentManager.d.ts.map +1 -1
- package/dist/e2e/harness/ForkIndexer.d.ts.map +1 -1
- package/dist/e2e/harness/ForkIndexer.js.map +1 -1
- package/dist/e2e/harness/LocalProvider.d.ts +3 -0
- package/dist/e2e/harness/LocalProvider.d.ts.map +1 -0
- package/dist/e2e/harness/LocalProvider.js +9 -0
- package/dist/e2e/harness/LocalProvider.js.map +1 -0
- package/dist/e2e/harness/LocalProvider.test.d.ts +2 -0
- package/dist/e2e/harness/LocalProvider.test.d.ts.map +1 -0
- package/dist/e2e/harness/LocalProvider.test.js +14 -0
- package/dist/e2e/harness/LocalProvider.test.js.map +1 -0
- package/dist/e2e/harness/MixedLocalDeploymentManager.d.ts.map +1 -1
- package/dist/e2e/harness/MixedLocalDeploymentManager.js.map +1 -1
- package/dist/e2e/harness/MockExplorerClient.d.ts.map +1 -1
- package/dist/e2e/harness/MockExplorerClient.js.map +1 -1
- package/dist/e2e/harness/MockExternalBridge.d.ts.map +1 -1
- package/dist/e2e/harness/MockExternalBridge.js.map +1 -1
- package/dist/e2e/harness/NativeLocalDeploymentManager.d.ts.map +1 -1
- package/dist/e2e/harness/NativeLocalDeploymentManager.js +2 -1
- package/dist/e2e/harness/NativeLocalDeploymentManager.js.map +1 -1
- package/dist/e2e/harness/SnapshotHelper.d.ts.map +1 -1
- package/dist/e2e/harness/SnapshotHelper.js +3 -5
- package/dist/e2e/harness/SnapshotHelper.js.map +1 -1
- package/dist/e2e/harness/TestHelpers.js +1 -2
- package/dist/e2e/harness/TestHelpers.js.map +1 -1
- package/dist/e2e/harness/TestRebalancer.d.ts +5 -1
- package/dist/e2e/harness/TestRebalancer.d.ts.map +1 -1
- package/dist/e2e/harness/TestRebalancer.js +14 -4
- package/dist/e2e/harness/TestRebalancer.js.map +1 -1
- package/dist/e2e/relayer-denylist.e2e-test.d.ts +2 -0
- package/dist/e2e/relayer-denylist.e2e-test.d.ts.map +1 -0
- package/dist/e2e/relayer-denylist.e2e-test.js +388 -0
- package/dist/e2e/relayer-denylist.e2e-test.js.map +1 -0
- package/dist/factories/RebalancerContextFactory.d.ts.map +1 -1
- package/dist/factories/RebalancerContextFactory.js +61 -31
- package/dist/factories/RebalancerContextFactory.js.map +1 -1
- package/dist/factories/RebalancerContextFactory.test.js +336 -5
- package/dist/factories/RebalancerContextFactory.test.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/interfaces/IRebalancer.d.ts +4 -2
- package/dist/interfaces/IRebalancer.d.ts.map +1 -1
- package/dist/metrics/Metrics.d.ts.map +1 -1
- package/dist/metrics/Metrics.js +1 -1
- package/dist/metrics/Metrics.js.map +1 -1
- package/dist/metrics/PriceGetter.d.ts +1 -0
- package/dist/metrics/PriceGetter.d.ts.map +1 -1
- package/dist/metrics/PriceGetter.js +14 -4
- package/dist/metrics/PriceGetter.js.map +1 -1
- package/dist/metrics/PriceGetter.test.d.ts +2 -0
- package/dist/metrics/PriceGetter.test.d.ts.map +1 -0
- package/dist/metrics/PriceGetter.test.js +84 -0
- package/dist/metrics/PriceGetter.test.js.map +1 -0
- package/dist/metrics/scripts/metrics.d.ts +4 -4
- package/dist/monitor/Monitor.d.ts +1 -0
- package/dist/monitor/Monitor.d.ts.map +1 -1
- package/dist/monitor/Monitor.js +55 -46
- package/dist/monitor/Monitor.js.map +1 -1
- package/dist/monitor/Monitor.test.d.ts +2 -0
- package/dist/monitor/Monitor.test.d.ts.map +1 -0
- package/dist/monitor/Monitor.test.js +346 -0
- package/dist/monitor/Monitor.test.js.map +1 -0
- package/dist/service.d.ts +1 -1
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +9 -5
- package/dist/service.js.map +1 -1
- package/dist/strategy/BaseStrategy.d.ts.map +1 -1
- package/dist/strategy/BaseStrategy.js +13 -11
- package/dist/strategy/BaseStrategy.js.map +1 -1
- package/dist/strategy/CollateralDeficitStrategy.d.ts.map +1 -1
- package/dist/strategy/CollateralDeficitStrategy.js +2 -2
- package/dist/strategy/CollateralDeficitStrategy.js.map +1 -1
- package/dist/strategy/CompositeStrategy.d.ts.map +1 -1
- package/dist/strategy/CompositeStrategy.js.map +1 -1
- package/dist/strategy/CompositeStrategy.test.js.map +1 -1
- package/dist/strategy/MinAmountStrategy.d.ts +1 -0
- package/dist/strategy/MinAmountStrategy.d.ts.map +1 -1
- package/dist/strategy/MinAmountStrategy.js +12 -8
- package/dist/strategy/MinAmountStrategy.js.map +1 -1
- package/dist/strategy/MinAmountStrategy.test.js +189 -2
- package/dist/strategy/MinAmountStrategy.test.js.map +1 -1
- package/dist/strategy/StrategyFactory.d.ts.map +1 -1
- package/dist/strategy/StrategyFactory.js.map +1 -1
- package/dist/strategy/WeightedStrategy.d.ts.map +1 -1
- package/dist/test/helpers.d.ts +11 -3
- package/dist/test/helpers.d.ts.map +1 -1
- package/dist/test/helpers.js +9 -11
- package/dist/test/helpers.js.map +1 -1
- package/dist/test/lifiMocks.d.ts +6 -6
- package/dist/test/lifiMocks.d.ts.map +1 -1
- package/dist/test/lifiMocks.js +5 -2
- package/dist/test/lifiMocks.js.map +1 -1
- package/dist/test/pendingTransferMiddlewareMocks.d.ts +17 -0
- package/dist/test/pendingTransferMiddlewareMocks.d.ts.map +1 -0
- package/dist/test/pendingTransferMiddlewareMocks.js +43 -0
- package/dist/test/pendingTransferMiddlewareMocks.js.map +1 -0
- package/dist/tracking/ActionTracker.d.ts +4 -0
- package/dist/tracking/ActionTracker.d.ts.map +1 -1
- package/dist/tracking/ActionTracker.js +76 -9
- package/dist/tracking/ActionTracker.js.map +1 -1
- package/dist/tracking/ActionTracker.test.js +418 -1
- package/dist/tracking/ActionTracker.test.js.map +1 -1
- package/dist/tracking/IActionTracker.d.ts +4 -2
- package/dist/tracking/IActionTracker.d.ts.map +1 -1
- package/dist/tracking/InflightContextAdapter.d.ts.map +1 -1
- package/dist/tracking/InflightContextAdapter.js.map +1 -1
- package/dist/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.d.ts +64 -0
- package/dist/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.js +474 -0
- package/dist/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.test.d.ts +2 -0
- package/dist/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.test.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.test.js +1168 -0
- package/dist/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.test.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.d.ts +61 -0
- package/dist/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.js +160 -0
- package/dist/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.test.d.ts +2 -0
- package/dist/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.test.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.test.js +369 -0
- package/dist/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.test.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.d.ts +60 -0
- package/dist/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.js +288 -0
- package/dist/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.test.d.ts +2 -0
- package/dist/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.test.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.test.js +606 -0
- package/dist/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.test.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.d.ts +25 -0
- package/dist/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.js +41 -0
- package/dist/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.test.d.ts +2 -0
- package/dist/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.test.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.test.js +141 -0
- package/dist/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.test.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/matchBody.d.ts +12 -0
- package/dist/tracking/pendingTransferMiddlewares/matchBody.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/matchBody.js +29 -0
- package/dist/tracking/pendingTransferMiddlewares/matchBody.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/relayerDenylistRules.d.ts +59 -0
- package/dist/tracking/pendingTransferMiddlewares/relayerDenylistRules.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/relayerDenylistRules.js +661 -0
- package/dist/tracking/pendingTransferMiddlewares/relayerDenylistRules.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/relayerDenylistRules.test.d.ts +2 -0
- package/dist/tracking/pendingTransferMiddlewares/relayerDenylistRules.test.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/relayerDenylistRules.test.js +1093 -0
- package/dist/tracking/pendingTransferMiddlewares/relayerDenylistRules.test.js.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/types.d.ts +2 -0
- package/dist/tracking/pendingTransferMiddlewares/types.d.ts.map +1 -0
- package/dist/tracking/pendingTransferMiddlewares/types.js +4 -0
- package/dist/tracking/pendingTransferMiddlewares/types.js.map +1 -0
- package/dist/tracking/store/InMemoryStore.d.ts.map +1 -1
- package/dist/utils/ExplorerClient.d.ts +1 -0
- package/dist/utils/ExplorerClient.d.ts.map +1 -1
- package/dist/utils/ExplorerClient.js +8 -3
- package/dist/utils/ExplorerClient.js.map +1 -1
- package/dist/utils/ExplorerClient.test.js +25 -0
- package/dist/utils/ExplorerClient.test.js.map +1 -1
- package/dist/utils/balanceUtils.d.ts +7 -1
- package/dist/utils/balanceUtils.d.ts.map +1 -1
- package/dist/utils/balanceUtils.js +39 -1
- package/dist/utils/balanceUtils.js.map +1 -1
- package/dist/utils/balanceUtils.test.js +55 -1
- package/dist/utils/balanceUtils.test.js.map +1 -1
- package/dist/utils/blockTag.d.ts +5 -4
- package/dist/utils/blockTag.d.ts.map +1 -1
- package/dist/utils/blockTag.js +26 -10
- package/dist/utils/blockTag.js.map +1 -1
- package/dist/utils/blockTag.test.d.ts +2 -0
- package/dist/utils/blockTag.test.d.ts.map +1 -0
- package/dist/utils/blockTag.test.js +132 -0
- package/dist/utils/blockTag.test.js.map +1 -0
- package/dist/utils/bridgeUtils.js.map +1 -1
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/gasEstimation.d.ts +2 -1
- package/dist/utils/gasEstimation.d.ts.map +1 -1
- package/dist/utils/gasEstimation.js +16 -13
- package/dist/utils/gasEstimation.js.map +1 -1
- package/dist/utils/gasEstimation.test.d.ts +2 -0
- package/dist/utils/gasEstimation.test.d.ts.map +1 -0
- package/dist/utils/gasEstimation.test.js +104 -0
- package/dist/utils/gasEstimation.test.js.map +1 -0
- package/dist/utils/tokenUtils.d.ts.map +1 -1
- package/dist/utils/tokenUtils.js +5 -2
- package/dist/utils/tokenUtils.js.map +1 -1
- package/package.json +23 -22
- package/src/bridges/LiFiBridge.test.ts +270 -0
- package/src/bridges/LiFiBridge.ts +90 -71
- package/src/config/RebalancerConfig.test.ts +315 -1
- package/src/config/RebalancerConfig.ts +6 -3
- package/src/config/types.ts +98 -8
- package/src/core/InventoryRebalancer.test.ts +1092 -38
- package/src/core/InventoryRebalancer.ts +584 -351
- package/src/core/Rebalancer.test.ts +84 -0
- package/src/core/Rebalancer.ts +22 -6
- package/src/core/RebalancerOrchestrator.test.ts +0 -1
- package/src/core/RebalancerService.test.ts +35 -0
- package/src/core/RebalancerService.ts +3 -2
- package/src/e2e/harness/BaseLocalDeploymentManager.ts +3 -1
- package/src/e2e/harness/LocalProvider.test.ts +16 -0
- package/src/e2e/harness/LocalProvider.ts +10 -0
- package/src/e2e/harness/NativeLocalDeploymentManager.ts +2 -1
- package/src/e2e/harness/SnapshotHelper.ts +2 -5
- package/src/e2e/harness/TestHelpers.ts +3 -3
- package/src/e2e/harness/TestRebalancer.ts +21 -1
- package/src/e2e/relayer-denylist.e2e-test.ts +558 -0
- package/src/factories/RebalancerContextFactory.test.ts +489 -8
- package/src/factories/RebalancerContextFactory.ts +86 -36
- package/src/index.ts +2 -0
- package/src/interfaces/IRebalancer.ts +4 -1
- package/src/metrics/Metrics.ts +1 -0
- package/src/metrics/PriceGetter.test.ts +113 -0
- package/src/metrics/PriceGetter.ts +18 -3
- package/src/monitor/Monitor.test.ts +408 -0
- package/src/monitor/Monitor.ts +123 -97
- package/src/service.ts +14 -8
- package/src/strategy/BaseStrategy.ts +18 -15
- package/src/strategy/CollateralDeficitStrategy.ts +4 -3
- package/src/strategy/MinAmountStrategy.test.ts +238 -2
- package/src/strategy/MinAmountStrategy.ts +29 -17
- package/src/test/helpers.ts +13 -12
- package/src/test/lifiMocks.ts +5 -2
- package/src/test/pendingTransferMiddlewareMocks.ts +65 -0
- package/src/tracking/ActionTracker.test.ts +635 -3
- package/src/tracking/ActionTracker.ts +92 -12
- package/src/tracking/IActionTracker.ts +4 -2
- package/src/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.test.ts +1693 -0
- package/src/tracking/pendingTransferMiddlewares/BlacklistIsmMiddleware.ts +784 -0
- package/src/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.test.ts +554 -0
- package/src/tracking/pendingTransferMiddlewares/PendingTransferMiddleware.ts +233 -0
- package/src/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.test.ts +894 -0
- package/src/tracking/pendingTransferMiddlewares/RelayerDenylistMiddleware.ts +404 -0
- package/src/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.test.ts +205 -0
- package/src/tracking/pendingTransferMiddlewares/buildPendingTransferMiddlewares.ts +89 -0
- package/src/tracking/pendingTransferMiddlewares/fixtures/mainnet-denylist.json +3556 -0
- package/src/tracking/pendingTransferMiddlewares/matchBody.ts +43 -0
- package/src/tracking/pendingTransferMiddlewares/relayerDenylistRules.test.ts +1220 -0
- package/src/tracking/pendingTransferMiddlewares/relayerDenylistRules.ts +934 -0
- package/src/tracking/pendingTransferMiddlewares/types.ts +3 -0
- package/src/utils/ExplorerClient.test.ts +42 -0
- package/src/utils/ExplorerClient.ts +14 -3
- package/src/utils/balanceUtils.test.ts +87 -1
- package/src/utils/balanceUtils.ts +73 -2
- package/src/utils/blockTag.test.ts +173 -0
- package/src/utils/blockTag.ts +35 -15
- package/src/utils/gasEstimation.test.ts +192 -0
- package/src/utils/gasEstimation.ts +17 -11
- package/src/utils/tokenUtils.ts +5 -2
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import chai, { expect } from 'chai';
|
|
2
|
+
import chaiAsPromised from 'chai-as-promised';
|
|
3
|
+
import { providers } from 'ethers';
|
|
4
|
+
import { pino } from 'pino';
|
|
5
|
+
import Sinon from 'sinon';
|
|
6
|
+
import { EthJsonRpcBlockParameterTag, MultiProtocolProvider, } from '@humanode-hyperlane/sdk';
|
|
7
|
+
import { ProtocolType } from '@humanode-hyperlane/utils';
|
|
8
|
+
import { getConfirmedBlockTag } from './blockTag.js';
|
|
9
|
+
chai.use(chaiAsPromised);
|
|
10
|
+
const tronMetadata = {
|
|
11
|
+
protocol: ProtocolType.Tron,
|
|
12
|
+
name: 'tron',
|
|
13
|
+
chainId: 728126428,
|
|
14
|
+
domainId: 728126428,
|
|
15
|
+
rpcUrls: [{ http: 'http://unused' }],
|
|
16
|
+
blocks: { reorgPeriod: 20, confirmations: 1 },
|
|
17
|
+
};
|
|
18
|
+
const logger = pino({ level: 'silent' });
|
|
19
|
+
describe('getConfirmedBlockTag', () => {
|
|
20
|
+
let mpp;
|
|
21
|
+
let provider;
|
|
22
|
+
beforeEach(() => {
|
|
23
|
+
mpp = Sinon.createStubInstance(MultiProtocolProvider);
|
|
24
|
+
provider = Sinon.createStubInstance(providers.JsonRpcProvider);
|
|
25
|
+
mpp.getChainMetadata.returns(tronMetadata);
|
|
26
|
+
mpp.getEthersV5Provider.returns(provider);
|
|
27
|
+
provider.send.resolves('0x64');
|
|
28
|
+
});
|
|
29
|
+
afterEach(() => {
|
|
30
|
+
Sinon.restore();
|
|
31
|
+
});
|
|
32
|
+
it('returns a confirmed block number for a numeric Tron reorg period', async () => {
|
|
33
|
+
expect(await getConfirmedBlockTag(mpp, 'tron')).to.equal(80);
|
|
34
|
+
});
|
|
35
|
+
it('clamps a confirmed block number to zero', async () => {
|
|
36
|
+
provider.send.resolves('0x0a');
|
|
37
|
+
expect(await getConfirmedBlockTag(mpp, 'tron')).to.equal(0);
|
|
38
|
+
});
|
|
39
|
+
it('uses the default numeric reorg period for Tron', async () => {
|
|
40
|
+
mpp.getChainMetadata.returns({ ...tronMetadata, blocks: undefined });
|
|
41
|
+
expect(await getConfirmedBlockTag(mpp, 'tron')).to.equal(68);
|
|
42
|
+
});
|
|
43
|
+
it('returns undefined for a non-EVM-like chain without querying blocks', async () => {
|
|
44
|
+
mpp.getChainMetadata.returns({
|
|
45
|
+
...tronMetadata,
|
|
46
|
+
protocol: ProtocolType.Sealevel,
|
|
47
|
+
name: 'solana',
|
|
48
|
+
});
|
|
49
|
+
expect(await getConfirmedBlockTag(mpp, 'solana')).to.equal(undefined);
|
|
50
|
+
expect(mpp.getEthersV5Provider.notCalled).to.equal(true);
|
|
51
|
+
});
|
|
52
|
+
it('preserves the optional Tron tag for unsupported named reorg periods', async () => {
|
|
53
|
+
const warn = Sinon.stub(logger, 'warn');
|
|
54
|
+
mpp.getChainMetadata.returns({
|
|
55
|
+
...tronMetadata,
|
|
56
|
+
blocks: {
|
|
57
|
+
reorgPeriod: EthJsonRpcBlockParameterTag.Finalized,
|
|
58
|
+
confirmations: 1,
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
expect(await getConfirmedBlockTag(mpp, 'tron', logger)).to.equal(undefined);
|
|
62
|
+
expect(mpp.getEthersV5Provider.notCalled).to.equal(true);
|
|
63
|
+
expect(warn.calledOnce).to.equal(true);
|
|
64
|
+
expect(warn.firstCall.args[1]).to.include('Tron does not support named block tags');
|
|
65
|
+
});
|
|
66
|
+
it('propagates failed numeric Tron block reads', async () => {
|
|
67
|
+
const failure = new Error('block unavailable');
|
|
68
|
+
const warn = Sinon.stub(logger, 'warn');
|
|
69
|
+
provider.send.rejects(failure);
|
|
70
|
+
await expect(getConfirmedBlockTag(mpp, 'tron', logger)).to.be.rejectedWith(failure);
|
|
71
|
+
expect(warn.calledOnce).to.equal(true);
|
|
72
|
+
expect(warn.firstCall.args[1]).to.equal('Failed to get confirmed block');
|
|
73
|
+
});
|
|
74
|
+
it('propagates provider lookup failures in numeric Tron mode', async () => {
|
|
75
|
+
const failure = new Error('provider unavailable');
|
|
76
|
+
mpp.getEthersV5Provider.throws(failure);
|
|
77
|
+
await expect(getConfirmedBlockTag(mpp, 'tron')).to.be.rejectedWith(failure);
|
|
78
|
+
});
|
|
79
|
+
for (const invalidResponse of [
|
|
80
|
+
undefined,
|
|
81
|
+
null,
|
|
82
|
+
100,
|
|
83
|
+
'100',
|
|
84
|
+
'0x',
|
|
85
|
+
'0xgg',
|
|
86
|
+
'0x10000000000000000',
|
|
87
|
+
`0x${'f'.repeat(300)}`,
|
|
88
|
+
]) {
|
|
89
|
+
it(`rejects an invalid Tron block response (${typeof invalidResponse}): ${String(invalidResponse).slice(0, 32)}`, async () => {
|
|
90
|
+
provider.send.resolves(invalidResponse);
|
|
91
|
+
await expect(getConfirmedBlockTag(mpp, 'tron')).to.be.rejectedWith('Invalid');
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
it('rejects an invalid numeric block from a non-JSON-RPC provider', async () => {
|
|
95
|
+
const fallbackProvider = Sinon.createStubInstance(providers.BaseProvider);
|
|
96
|
+
fallbackProvider.getBlockNumber.resolves(Number.NaN);
|
|
97
|
+
mpp.getEthersV5Provider.returns(fallbackProvider);
|
|
98
|
+
await expect(getConfirmedBlockTag(mpp, 'tron')).to.be.rejectedWith('Invalid block number for tron: NaN');
|
|
99
|
+
});
|
|
100
|
+
it('preserves undefined on an Ethereum lookup failure', async () => {
|
|
101
|
+
mpp.getChainMetadata.returns({
|
|
102
|
+
...tronMetadata,
|
|
103
|
+
protocol: ProtocolType.Ethereum,
|
|
104
|
+
name: 'ethereum',
|
|
105
|
+
});
|
|
106
|
+
provider.send.rejects(new Error('block unavailable'));
|
|
107
|
+
expect(await getConfirmedBlockTag(mpp, 'ethereum')).to.equal(undefined);
|
|
108
|
+
});
|
|
109
|
+
it('preserves Ethereum named block tags', async () => {
|
|
110
|
+
mpp.getChainMetadata.returns({
|
|
111
|
+
...tronMetadata,
|
|
112
|
+
protocol: ProtocolType.Ethereum,
|
|
113
|
+
name: 'ethereum',
|
|
114
|
+
blocks: {
|
|
115
|
+
reorgPeriod: EthJsonRpcBlockParameterTag.Finalized,
|
|
116
|
+
confirmations: 1,
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
expect(await getConfirmedBlockTag(mpp, 'ethereum')).to.equal(EthJsonRpcBlockParameterTag.Finalized);
|
|
120
|
+
expect(mpp.getEthersV5Provider.notCalled).to.equal(true);
|
|
121
|
+
});
|
|
122
|
+
it('preserves undefined on metadata lookup failures', async () => {
|
|
123
|
+
const failure = new Error('metadata unavailable');
|
|
124
|
+
mpp.getChainMetadata.throws(failure);
|
|
125
|
+
const warn = Sinon.stub(logger, 'warn');
|
|
126
|
+
expect(await getConfirmedBlockTag(mpp, 'tron', logger)).to.equal(undefined);
|
|
127
|
+
expect(warn.calledOnce).to.equal(true);
|
|
128
|
+
expect(warn.firstCall.args[1]).to.equal('Failed to get confirmed block');
|
|
129
|
+
expect(mpp.getEthersV5Provider.notCalled).to.equal(true);
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
//# sourceMappingURL=blockTag.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blockTag.test.js","sourceRoot":"","sources":["../../src/utils/blockTag.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridgeUtils.js","sourceRoot":"","sources":["../../src/utils/bridgeUtils.ts"],"names":[],"mappings":"AAwBA,MAAM,UAAU,yBAAyB,CACvC,MAAoB;IAEpB,OAAO,MAAM,CAAC,aAAa,KAAK,mBAAmB,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,MAAoB;IAEpB,OAAO,MAAM,CAAC,aAAa,KAAK,WAAW,CAAC;AAC9C,CAAC;AAMD;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,OAA2C,EAC3C,SAAoB,EACpB,OAAkB;IAElB,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,sBAAsB,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC;IAE9D,8FAA8F;IAC9F,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,UAAU,EAAE,GAAG,UAAU,CAAC;IAElD,6DAA6D;IAC7D,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,sBAAsB,EAAkB,CAAC;AACtE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,YAA0B,EAC1B,MAAiB,EACjB,WAAsB,EACtB,MAAc;IAEd,QAAQ,YAAY,CAAC,aAAa,EAAE,CAAC;QACnC,KAAK,WAAW;YACd,OAAO;gBACL,MAAM;gBACN,WAAW;gBACX,MAAM;gBACN,aAAa,EAAE,WAAW;gBAC1B,cAAc,EAAE,YAAY,CAAC,cAAc;aAC5C,CAAC;QACJ,KAAK,mBAAmB;YACtB,OAAO;gBACL,MAAM;gBACN,WAAW;gBACX,MAAM;gBACN,aAAa,EAAE,mBAAmB;gBAClC,MAAM,EAAE,YAAY,CAAC,MAAM;aAC5B,CAAC;QACJ,
|
|
1
|
+
{"version":3,"file":"bridgeUtils.js","sourceRoot":"","sources":["../../src/utils/bridgeUtils.ts"],"names":[],"mappings":"AAwBA,MAAM,UAAU,yBAAyB,CACvC,MAAoB;IAEpB,OAAO,MAAM,CAAC,aAAa,KAAK,mBAAmB,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,MAAoB;IAEpB,OAAO,MAAM,CAAC,aAAa,KAAK,WAAW,CAAC;AAC9C,CAAC;AAMD;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,OAA2C,EAC3C,SAAoB,EACpB,OAAkB;IAElB,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,sBAAsB,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC;IAE9D,8FAA8F;IAC9F,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,UAAU,EAAE,GAAG,UAAU,CAAC;IAElD,6DAA6D;IAC7D,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,sBAAsB,EAAkB,CAAC;AACtE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,YAA0B,EAC1B,MAAiB,EACjB,WAAsB,EACtB,MAAc;IAEd,QAAQ,YAAY,CAAC,aAAa,EAAE,CAAC;QACnC,KAAK,WAAW;YACd,OAAO;gBACL,MAAM;gBACN,WAAW;gBACX,MAAM;gBACN,aAAa,EAAE,WAAW;gBAC1B,cAAc,EAAE,YAAY,CAAC,cAAc;aAC5C,CAAC;QACJ,KAAK,mBAAmB;YACtB,OAAO;gBACL,MAAM;gBACN,WAAW;gBACX,MAAM;gBACN,aAAa,EAAE,mBAAmB;gBAClC,MAAM,EAAE,YAAY,CAAC,MAAM;aAC5B,CAAC;QACJ,SAAS,CAAC;YACR,MAAM,WAAW,GAAU,YAAY,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,2BAA4B,WAA4B,CAAC,aAAa,EAAE,CACzE,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAa,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAEzC;CACF"}
|
|
@@ -42,9 +42,10 @@ export interface TransferCostEstimate {
|
|
|
42
42
|
* @param getTokenForChain - Function to get token for a chain
|
|
43
43
|
* @param inventorySigner - Address of the inventory signer
|
|
44
44
|
* @param logger - Logger instance
|
|
45
|
+
* @param providedGasQuote - Quote already obtained for this exact transfer-cost calculation
|
|
45
46
|
* @returns Estimated gas limit for the transaction
|
|
46
47
|
*/
|
|
47
|
-
export declare function estimateTransferRemoteGas(originChain: ChainName, destinationChain: ChainName, amount: bigint, multiProvider: MultiProvider, warpCoreMultiProvider: any, getTokenForChain: (chain: ChainName) => Token | undefined, inventorySigner: string, logger: Logger): Promise<bigint>;
|
|
48
|
+
export declare function estimateTransferRemoteGas(originChain: ChainName, destinationChain: ChainName, amount: bigint, multiProvider: MultiProvider, warpCoreMultiProvider: any, getTokenForChain: (chain: ChainName) => Token | undefined, inventorySigner: string, logger: Logger, providedGasQuote?: InterchainGasQuote): Promise<bigint>;
|
|
48
49
|
/**
|
|
49
50
|
* Calculate all transfer costs for a transferRemote operation.
|
|
50
51
|
* Consolidates IGP costs, gas costs, and derived values (max transferable, min viable).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gasEstimation.d.ts","sourceRoot":"","sources":["../../src/utils/gasEstimation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,KAAK,EACV,aAAa,EACd,MAAM,yBAAyB,CAAC;AAOjC;;;GAGG;AACH,eAAO,MAAM,kCAAkC,UAAW,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,yFAAyF;IACzF,eAAe,EAAE,MAAM,CAAC;IACxB,uEAAuE;IACvE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED
|
|
1
|
+
{"version":3,"file":"gasEstimation.d.ts","sourceRoot":"","sources":["../../src/utils/gasEstimation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,KAAK,EACV,aAAa,EACd,MAAM,yBAAyB,CAAC;AAOjC;;;GAGG;AACH,eAAO,MAAM,kCAAkC,UAAW,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,yFAAyF;IACzF,eAAe,EAAE,MAAM,CAAC;IACxB,uEAAuE;IACvE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,yBAAyB,CAC7C,WAAW,EAAE,SAAS,EACtB,gBAAgB,EAAE,SAAS,EAC3B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,aAAa,EAC5B,qBAAqB,EAAE,GAAG,EAC1B,gBAAgB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,KAAK,GAAG,SAAS,EACzD,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,EACd,gBAAgB,CAAC,EAAE,kBAAkB,GACpC,OAAO,CAAC,MAAM,CAAC,CAuEjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,SAAS,EACtB,gBAAgB,EAAE,SAAS,EAC3B,kBAAkB,EAAE,MAAM,EAC1B,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,aAAa,EAC5B,qBAAqB,EAAE,GAAG,EAC1B,gBAAgB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,KAAK,GAAG,SAAS,EACzD,eAAe,EAAE,MAAM,EACvB,qBAAqB,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,OAAO,EAC3D,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,oBAAoB,CAAC,CAwI/B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BigNumber } from 'ethers';
|
|
2
|
-
import { addBufferToGasLimit,
|
|
2
|
+
import { addBufferToGasLimit, isEVMLike, isZeroishAddress, } from '@humanode-hyperlane/utils';
|
|
3
3
|
/**
|
|
4
4
|
* Fallback gas limit for transferRemote when eth_estimateGas fails.
|
|
5
5
|
* Conservative estimate for cross-chain token transfers.
|
|
@@ -22,9 +22,10 @@ export const MIN_VIABLE_COST_MULTIPLIER = 2n;
|
|
|
22
22
|
* @param getTokenForChain - Function to get token for a chain
|
|
23
23
|
* @param inventorySigner - Address of the inventory signer
|
|
24
24
|
* @param logger - Logger instance
|
|
25
|
+
* @param providedGasQuote - Quote already obtained for this exact transfer-cost calculation
|
|
25
26
|
* @returns Estimated gas limit for the transaction
|
|
26
27
|
*/
|
|
27
|
-
export async function estimateTransferRemoteGas(originChain, destinationChain, amount, multiProvider, warpCoreMultiProvider, getTokenForChain, inventorySigner, logger) {
|
|
28
|
+
export async function estimateTransferRemoteGas(originChain, destinationChain, amount, multiProvider, warpCoreMultiProvider, getTokenForChain, inventorySigner, logger, providedGasQuote) {
|
|
28
29
|
const originToken = getTokenForChain(originChain);
|
|
29
30
|
if (!originToken) {
|
|
30
31
|
logger.warn({ originChain }, 'No token found for origin chain, using fallback gas limit');
|
|
@@ -33,13 +34,15 @@ export async function estimateTransferRemoteGas(originChain, destinationChain, a
|
|
|
33
34
|
try {
|
|
34
35
|
const destinationDomain = multiProvider.getDomainId(destinationChain);
|
|
35
36
|
const adapter = originToken.getHypAdapter(warpCoreMultiProvider);
|
|
36
|
-
//
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
37
|
+
// Reuse the quote from this cost calculation when supplied; standalone
|
|
38
|
+
// estimation still obtains a fresh quote for its own transfer parameters.
|
|
39
|
+
const gasQuote = providedGasQuote ??
|
|
40
|
+
(await adapter.quoteTransferRemoteGas({
|
|
41
|
+
destination: destinationDomain,
|
|
42
|
+
sender: inventorySigner,
|
|
43
|
+
recipient: inventorySigner,
|
|
44
|
+
amount,
|
|
45
|
+
}));
|
|
43
46
|
// Populate with minimal amount for gas estimation
|
|
44
47
|
// Gas cost is independent of transfer size (just a require check in _transferFromSender),
|
|
45
48
|
// and using minimal amount prevents eth_estimateGas from failing when account balance < requested amount
|
|
@@ -129,13 +132,13 @@ export async function calculateTransferCosts(originChain, destinationChain, avai
|
|
|
129
132
|
isZeroishAddress(gasQuote.tokenFeeQuote.addressOrDenom)
|
|
130
133
|
? (gasQuote.tokenFeeQuote?.amount ?? 0n)
|
|
131
134
|
: 0n;
|
|
132
|
-
// Skip gas estimation for non-EVM chains (e.g., Solana).
|
|
135
|
+
// Skip gas estimation for non-EVM-like chains (e.g., Solana).
|
|
133
136
|
// Non-EVM chains have negligible base fees (~5000 lamports ~$0.0001 on Solana)
|
|
134
137
|
// compared to EVM gas costs ($0.50-$50/tx). The IGP (Interchain Gas Paymaster)
|
|
135
138
|
// reservation dominates the cost, not chain-specific gas. Thus gasCost=0 is a
|
|
136
|
-
// safe approximation for non-EVM origin chains.
|
|
139
|
+
// safe approximation for non-EVM-like origin chains.
|
|
137
140
|
const originProtocol = multiProvider.getProtocol(originChain);
|
|
138
|
-
if (originProtocol
|
|
141
|
+
if (!isEVMLike(originProtocol)) {
|
|
139
142
|
const totalCost = igpCost + tokenFeeCost;
|
|
140
143
|
let maxTransferable;
|
|
141
144
|
if (availableInventory <= totalCost) {
|
|
@@ -160,7 +163,7 @@ export async function calculateTransferCosts(originChain, destinationChain, avai
|
|
|
160
163
|
};
|
|
161
164
|
}
|
|
162
165
|
// Estimate gas with buffer
|
|
163
|
-
const estimatedGasLimit = await estimateTransferRemoteGas(originChain, destinationChain, requestedAmount, multiProvider, warpCoreMultiProvider, getTokenForChain, inventorySigner, logger);
|
|
166
|
+
const estimatedGasLimit = await estimateTransferRemoteGas(originChain, destinationChain, requestedAmount, multiProvider, warpCoreMultiProvider, getTokenForChain, inventorySigner, logger, gasQuote);
|
|
164
167
|
const bufferedGasLimit = addBufferToGasLimit(BigNumber.from(estimatedGasLimit.toString()));
|
|
165
168
|
// Get gas price and calculate cost
|
|
166
169
|
const provider = multiProvider.getProvider(originChain);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gasEstimation.js","sourceRoot":"","sources":["../../src/utils/gasEstimation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAWnC,OAAO,EACL,mBAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"gasEstimation.js","sourceRoot":"","sources":["../../src/utils/gasEstimation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gasEstimation.test.d.ts","sourceRoot":"","sources":["../../src/utils/gasEstimation.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { BigNumber } from 'ethers';
|
|
3
|
+
import { pino } from 'pino';
|
|
4
|
+
import Sinon from 'sinon';
|
|
5
|
+
import { TokenStandard } from '@humanode-hyperlane/sdk';
|
|
6
|
+
import { ProtocolType } from '@humanode-hyperlane/utils';
|
|
7
|
+
import { calculateTransferCosts, estimateTransferRemoteGas, } from './gasEstimation.js';
|
|
8
|
+
const testLogger = pino({ level: 'silent' });
|
|
9
|
+
describe('calculateTransferCosts — Tron vs Sealevel protocol path', () => {
|
|
10
|
+
afterEach(() => {
|
|
11
|
+
Sinon.restore();
|
|
12
|
+
});
|
|
13
|
+
function createMockDeps(protocol) {
|
|
14
|
+
const mockAdapter = {
|
|
15
|
+
quoteTransferRemoteGas: Sinon.stub().resolves({
|
|
16
|
+
igpQuote: { amount: 1000n },
|
|
17
|
+
tokenFeeQuote: { amount: 0n, addressOrDenom: '' },
|
|
18
|
+
}),
|
|
19
|
+
populateTransferRemoteTx: Sinon.stub().resolves({
|
|
20
|
+
to: '0xRouter',
|
|
21
|
+
data: '0x',
|
|
22
|
+
value: 1000n,
|
|
23
|
+
}),
|
|
24
|
+
};
|
|
25
|
+
const mockToken = {
|
|
26
|
+
standard: TokenStandard.EvmHypNative, // Native so we reach the isEVMLike check
|
|
27
|
+
getHypAdapter: Sinon.stub().returns(mockAdapter),
|
|
28
|
+
};
|
|
29
|
+
const mockProvider = {
|
|
30
|
+
estimateGas: Sinon.stub().resolves(BigNumber.from(200000)),
|
|
31
|
+
getFeeData: Sinon.stub().resolves({
|
|
32
|
+
maxFeePerGas: BigNumber.from(10000000000n),
|
|
33
|
+
gasPrice: BigNumber.from(10000000000n),
|
|
34
|
+
}),
|
|
35
|
+
};
|
|
36
|
+
const multiProvider = {
|
|
37
|
+
getDomainId: Sinon.stub().returns(42161),
|
|
38
|
+
getProtocol: Sinon.stub().returns(protocol),
|
|
39
|
+
getProvider: Sinon.stub().returns(mockProvider),
|
|
40
|
+
};
|
|
41
|
+
const getTokenForChain = Sinon.stub().returns(mockToken);
|
|
42
|
+
const isNativeTokenStandard = Sinon.stub().returns(true);
|
|
43
|
+
return {
|
|
44
|
+
multiProvider,
|
|
45
|
+
getTokenForChain,
|
|
46
|
+
isNativeTokenStandard,
|
|
47
|
+
mockAdapter,
|
|
48
|
+
mockProvider,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
it('uses one quote consistently for EVM-native reservation and estimation', async () => {
|
|
52
|
+
const { multiProvider, getTokenForChain, isNativeTokenStandard, mockAdapter, } = createMockDeps(ProtocolType.Ethereum);
|
|
53
|
+
mockAdapter.quoteTransferRemoteGas
|
|
54
|
+
.onSecondCall()
|
|
55
|
+
.rejects(new Error('duplicate quote'));
|
|
56
|
+
const result = await calculateTransferCosts('ethereum', 'arbitrum', 3000000000000000n, 3000000000000000n, multiProvider, {}, getTokenForChain, '0xInventorySigner', isNativeTokenStandard, testLogger);
|
|
57
|
+
expect(mockAdapter.quoteTransferRemoteGas.callCount).to.equal(1);
|
|
58
|
+
expect(mockAdapter.populateTransferRemoteTx.firstCall.args[0].interchainGas).to.equal(result.gasQuote);
|
|
59
|
+
expect(result.igpCost).to.equal(1000n);
|
|
60
|
+
expect(result.gasCost).to.equal(2200000000000000n);
|
|
61
|
+
expect(result.totalCost).to.equal(2200000000001000n);
|
|
62
|
+
expect(result.maxTransferable).to.equal(799999999999000n);
|
|
63
|
+
expect(result.minViableTransfer).to.equal(4400000000002000n);
|
|
64
|
+
});
|
|
65
|
+
it('retains the fallback gas reserve when estimation fails', async () => {
|
|
66
|
+
const { multiProvider, getTokenForChain, isNativeTokenStandard, mockAdapter, mockProvider, } = createMockDeps(ProtocolType.Ethereum);
|
|
67
|
+
mockProvider.estimateGas.rejects(new Error('estimate unavailable'));
|
|
68
|
+
const result = await calculateTransferCosts('ethereum', 'arbitrum', 10000000000000000n, 5000000000000000n, multiProvider, {}, getTokenForChain, '0xInventorySigner', isNativeTokenStandard, testLogger);
|
|
69
|
+
expect(mockAdapter.quoteTransferRemoteGas.callCount).to.equal(1);
|
|
70
|
+
expect(result.gasCost).to.equal(3300000000000000n);
|
|
71
|
+
expect(result.igpCost).to.equal(1000n);
|
|
72
|
+
});
|
|
73
|
+
it('still obtains a quote for standalone gas estimation', async () => {
|
|
74
|
+
const { multiProvider, getTokenForChain, mockAdapter } = createMockDeps(ProtocolType.Ethereum);
|
|
75
|
+
const estimate = await estimateTransferRemoteGas('ethereum', 'arbitrum', 100n, multiProvider, {}, getTokenForChain, '0xInventorySigner', testLogger);
|
|
76
|
+
expect(estimate).to.equal(200000n);
|
|
77
|
+
expect(mockAdapter.quoteTransferRemoteGas.callCount).to.equal(1);
|
|
78
|
+
expect(mockAdapter.quoteTransferRemoteGas.firstCall.args[0]).to.deep.equal({
|
|
79
|
+
destination: 42161,
|
|
80
|
+
sender: '0xInventorySigner',
|
|
81
|
+
recipient: '0xInventorySigner',
|
|
82
|
+
amount: 100n,
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
it('Tron origin (EVM-like) produces non-zero gasCost for native tokens', async () => {
|
|
86
|
+
const { multiProvider, getTokenForChain, isNativeTokenStandard } = createMockDeps(ProtocolType.Tron);
|
|
87
|
+
const result = await calculateTransferCosts('tron', 'arbitrum', 10000000000000000000n, // 10 ETH available
|
|
88
|
+
1000000000000000000n, // 1 ETH requested
|
|
89
|
+
multiProvider, {}, // warpCoreMultiProvider
|
|
90
|
+
getTokenForChain, '0xInventorySigner', isNativeTokenStandard, testLogger);
|
|
91
|
+
// Tron is EVM-like — gas estimation runs, producing gasCost > 0
|
|
92
|
+
expect(result.gasCost > 0n).to.be.true;
|
|
93
|
+
expect(result.igpCost).to.equal(1000n);
|
|
94
|
+
expect(result.maxTransferable > 0n).to.be.true;
|
|
95
|
+
});
|
|
96
|
+
it('Sealevel origin (non-EVM) returns gasCost = 0 for native tokens', async () => {
|
|
97
|
+
const { multiProvider, getTokenForChain, isNativeTokenStandard } = createMockDeps(ProtocolType.Sealevel);
|
|
98
|
+
const result = await calculateTransferCosts('solana', 'arbitrum', 200000000000n, 100000000000n, multiProvider, {}, getTokenForChain, '0xInventorySigner', isNativeTokenStandard, testLogger);
|
|
99
|
+
// Sealevel is non-EVM — gasCost is 0 (skips gas estimation)
|
|
100
|
+
expect(result.gasCost).to.equal(0n);
|
|
101
|
+
expect(result.igpCost).to.equal(1000n);
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
//# sourceMappingURL=gasEstimation.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gasEstimation.test.js","sourceRoot":"","sources":["../../src/utils/gasEstimation.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenUtils.d.ts","sourceRoot":"","sources":["../../src/utils/tokenUtils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAEL,KAAK,KAAK,EACV,aAAa,EACd,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"tokenUtils.d.ts","sourceRoot":"","sources":["../../src/utils/tokenUtils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAEL,KAAK,KAAK,EACV,aAAa,EACd,MAAM,yBAAyB,CAAC;AAqBjC;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAEtE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,2CAA2C,CACzD,KAAK,EAAE,KAAK,GACX,OAAO,CAKT;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,KAAK,EACZ,kBAAkB,EAAE,kBAAkB,EACtC,qBAAqB,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,MAAM,GAC1D,MAAM,CAaR"}
|
package/dist/utils/tokenUtils.js
CHANGED
|
@@ -5,14 +5,17 @@ const REBALANCEABLE_TOKEN_COLLATERALIZED_STANDARDS = new Set([
|
|
|
5
5
|
TokenStandard.EvmHypNative,
|
|
6
6
|
TokenStandard.SealevelHypCollateral,
|
|
7
7
|
TokenStandard.SealevelHypNative,
|
|
8
|
+
TokenStandard.TronHypCollateral,
|
|
9
|
+
TokenStandard.TronHypNative,
|
|
8
10
|
]);
|
|
9
|
-
// SDK-backed native token standard check scoped to EVM and
|
|
11
|
+
// SDK-backed native token standard check scoped to EVM, Sealevel, and Tron (3-protocol scope).
|
|
10
12
|
// NOTE: We intentionally do NOT use the full PROTOCOL_TO_HYP_NATIVE_STANDARD map (all 7 protocols)
|
|
11
|
-
// because the rebalancer only supports EVM and
|
|
13
|
+
// because the rebalancer only supports EVM, Sealevel, and Tron native token bridging.
|
|
12
14
|
// Expanding this would change gas reservation behavior for other protocols.
|
|
13
15
|
const REBALANCER_NATIVE_STANDARDS = new Set([
|
|
14
16
|
PROTOCOL_TO_HYP_NATIVE_STANDARD[ProtocolType.Ethereum],
|
|
15
17
|
PROTOCOL_TO_HYP_NATIVE_STANDARD[ProtocolType.Sealevel],
|
|
18
|
+
PROTOCOL_TO_HYP_NATIVE_STANDARD[ProtocolType.Tron],
|
|
16
19
|
]);
|
|
17
20
|
/**
|
|
18
21
|
* Check if a token's balance is the same as native gas balance.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenUtils.js","sourceRoot":"","sources":["../../src/utils/tokenUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAIjE,OAAO,EACL,+BAA+B,EAE/B,aAAa,GACd,MAAM,yBAAyB,CAAC;AAEjC,MAAM,4CAA4C,GAAG,IAAI,GAAG,CAAgB;IAC1E,aAAa,CAAC,gBAAgB;IAC9B,aAAa,CAAC,YAAY;IAC1B,aAAa,CAAC,qBAAqB;IACnC,aAAa,CAAC,iBAAiB;
|
|
1
|
+
{"version":3,"file":"tokenUtils.js","sourceRoot":"","sources":["../../src/utils/tokenUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAIjE,OAAO,EACL,+BAA+B,EAE/B,aAAa,GACd,MAAM,yBAAyB,CAAC;AAEjC,MAAM,4CAA4C,GAAG,IAAI,GAAG,CAAgB;IAC1E,aAAa,CAAC,gBAAgB;IAC9B,aAAa,CAAC,YAAY;IAC1B,aAAa,CAAC,qBAAqB;IACnC,aAAa,CAAC,iBAAiB;IAC/B,aAAa,CAAC,iBAAiB;IAC/B,aAAa,CAAC,aAAa;CAC5B,CAAC,CAAC;AAEH,+FAA+F;AAC/F,mGAAmG;AACnG,sFAAsF;AACtF,4EAA4E;AAC5E,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAC;IAC1C,+BAA+B,CAAC,YAAY,CAAC,QAAQ,CAAC;IACtD,+BAA+B,CAAC,YAAY,CAAC,QAAQ,CAAC;IACtD,+BAA+B,CAAC,YAAY,CAAC,IAAI,CAAC;CACnD,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAuB;IAC3D,OAAO,2BAA2B,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,2CAA2C,CACzD,KAAY;IAEZ,OAAO,CACL,KAAK,CAAC,gBAAgB,EAAE;QACxB,4CAA4C,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CACjE,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,6BAA6B,CAC3C,KAAY,EACZ,kBAAsC,EACtC,qBAA2D;IAE3D,IAAI,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1C,OAAO,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,KAAK,CAAC,wBAAwB;QAAE,OAAO,KAAK,CAAC,wBAAwB,CAAC;IAE1E,MAAM,CACJ,CAAC,4CAA4C,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,EACjE,gEAAgE,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,QAAQ,GAAG,CACtG,CAAC;IAEF,OAAO,KAAK,CAAC,cAAc,CAAC;AAC9B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@humanode-hyperlane/rebalancer",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1029.1.1",
|
|
4
4
|
"description": "Hyperlane Warp Route Collateral Rebalancer Service",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"blockchain",
|
|
@@ -12,7 +12,10 @@
|
|
|
12
12
|
],
|
|
13
13
|
"license": "Apache-2.0",
|
|
14
14
|
"author": "Abacus Works, Inc.",
|
|
15
|
-
"repository":
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "https://github.com/humanode-network/hyperlane-monorepo"
|
|
18
|
+
},
|
|
16
19
|
"bin": {
|
|
17
20
|
"hyperlane-rebalancer": "./dist/service.js"
|
|
18
21
|
},
|
|
@@ -24,53 +27,51 @@
|
|
|
24
27
|
"main": "./dist/index.js",
|
|
25
28
|
"types": "./dist/index.d.ts",
|
|
26
29
|
"dependencies": {
|
|
27
|
-
"@google-cloud/pino-logging-gcp-config": "^1.3.
|
|
28
|
-
"@humanode-hyperlane/
|
|
30
|
+
"@google-cloud/pino-logging-gcp-config": "^1.3.5",
|
|
31
|
+
"@humanode-hyperlane/core": "1012.3.0",
|
|
32
|
+
"@humanode-hyperlane/metrics": "1001.0.6",
|
|
33
|
+
"@humanode-hyperlane/provider-sdk": "1011.0.3",
|
|
34
|
+
"@humanode-hyperlane/registry": "1026.3.1",
|
|
35
|
+
"@humanode-hyperlane/sdk": "1045.2.1",
|
|
36
|
+
"@humanode-hyperlane/utils": "1045.2.0",
|
|
29
37
|
"@inquirer/prompts": "3.3.2",
|
|
30
38
|
"@inquirer/select": "^1.0.0",
|
|
31
39
|
"@lifi/sdk": "^3.15.4",
|
|
32
|
-
"@solana/web3.js": "^1.
|
|
40
|
+
"@solana/web3.js": "^1.99.0",
|
|
33
41
|
"bignumber.js": "^9.1.1",
|
|
34
42
|
"bs58": "^6.0.0",
|
|
35
43
|
"ethers": "^5.8.0",
|
|
36
|
-
"express": "^5.1.0",
|
|
37
44
|
"pino": "^8.19.0",
|
|
38
45
|
"pino-pretty": "^13.0.0",
|
|
39
46
|
"prom-client": "^14.0.1",
|
|
47
|
+
"re2js": "2.9.1",
|
|
40
48
|
"uuid": "^10.0.0",
|
|
41
49
|
"viem": "^2.21.45",
|
|
42
50
|
"yaml": "2.4.5",
|
|
43
|
-
"zod": "^
|
|
44
|
-
"zod-validation-error": "^3.3.0",
|
|
45
|
-
"@humanode-hyperlane/core": "11.2.0",
|
|
46
|
-
"@humanode-hyperlane/metrics": "0.2.8",
|
|
47
|
-
"@humanode-hyperlane/provider-sdk": "4.2.3",
|
|
48
|
-
"@humanode-hyperlane/sdk": "30.0.0",
|
|
49
|
-
"@humanode-hyperlane/utils": "30.0.0"
|
|
51
|
+
"zod": "^4.5.4"
|
|
50
52
|
},
|
|
51
53
|
"devDependencies": {
|
|
52
54
|
"@ethersproject/constants": "*",
|
|
55
|
+
"@humanode-hyperlane/relayer": "1004.1.1",
|
|
56
|
+
"@humanode-hyperlane/tsconfig": "^45.2.0",
|
|
53
57
|
"@types/chai": "^4.3.11",
|
|
54
58
|
"@types/chai-as-promised": "^8",
|
|
55
|
-
"@types/express": "^5.0.3",
|
|
56
59
|
"@types/mocha": "^10.0.1",
|
|
57
|
-
"@types/node": "^
|
|
60
|
+
"@types/node": "^26.1.2",
|
|
58
61
|
"@types/sinon": "^17.0.1",
|
|
59
62
|
"@types/uuid": "^10.0.0",
|
|
60
63
|
"@vercel/ncc": "^0.38.3",
|
|
61
64
|
"chai": "^4.5.0",
|
|
62
65
|
"chai-as-promised": "^8.0.1",
|
|
63
|
-
"mocha": "^11.
|
|
64
|
-
"oxfmt": "^0.
|
|
66
|
+
"mocha": "^11.7.6",
|
|
67
|
+
"oxfmt": "^0.62.0",
|
|
65
68
|
"sinon": "^13.0.2",
|
|
66
69
|
"testcontainers": "11.12.0",
|
|
67
|
-
"tsx": "^4.
|
|
68
|
-
"typescript": "6.0.2"
|
|
69
|
-
"@humanode-hyperlane/relayer": "1.1.15",
|
|
70
|
-
"@humanode-hyperlane/tsconfig": "^30.0.0"
|
|
70
|
+
"tsx": "^4.23.1",
|
|
71
|
+
"typescript": "npm:@typescript/typescript6@6.0.2"
|
|
71
72
|
},
|
|
72
73
|
"engines": {
|
|
73
|
-
"node": ">=
|
|
74
|
+
"node": ">=22"
|
|
74
75
|
},
|
|
75
76
|
"scripts": {
|
|
76
77
|
"build": "tsc",
|