@hyperlane-xyz/rebalancer 2.0.0 → 3.1.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/bridges/LiFiBridge.d.ts +67 -0
- package/dist/bridges/LiFiBridge.d.ts.map +1 -0
- package/dist/bridges/LiFiBridge.js +386 -0
- package/dist/bridges/LiFiBridge.js.map +1 -0
- package/dist/config/RebalancerConfig.d.ts +8 -2
- package/dist/config/RebalancerConfig.d.ts.map +1 -1
- package/dist/config/RebalancerConfig.js +9 -4
- package/dist/config/RebalancerConfig.js.map +1 -1
- package/dist/config/RebalancerConfig.test.js +135 -1
- package/dist/config/RebalancerConfig.test.js.map +1 -1
- package/dist/config/types.d.ts +1023 -304
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +113 -10
- package/dist/config/types.js.map +1 -1
- package/dist/core/InventoryRebalancer.d.ts +190 -0
- package/dist/core/InventoryRebalancer.d.ts.map +1 -0
- package/dist/core/InventoryRebalancer.js +892 -0
- package/dist/core/InventoryRebalancer.js.map +1 -0
- package/dist/core/InventoryRebalancer.test.d.ts +2 -0
- package/dist/core/InventoryRebalancer.test.d.ts.map +1 -0
- package/dist/core/InventoryRebalancer.test.js +1382 -0
- package/dist/core/InventoryRebalancer.test.js.map +1 -0
- package/dist/core/Rebalancer.d.ts +11 -4
- package/dist/core/Rebalancer.d.ts.map +1 -1
- package/dist/core/Rebalancer.js +92 -9
- package/dist/core/Rebalancer.js.map +1 -1
- package/dist/core/Rebalancer.test.js +82 -49
- package/dist/core/Rebalancer.test.js.map +1 -1
- package/dist/core/RebalancerOrchestrator.d.ts +30 -9
- package/dist/core/RebalancerOrchestrator.d.ts.map +1 -1
- package/dist/core/RebalancerOrchestrator.js +79 -71
- package/dist/core/RebalancerOrchestrator.js.map +1 -1
- package/dist/core/RebalancerOrchestrator.test.d.ts +2 -0
- package/dist/core/RebalancerOrchestrator.test.d.ts.map +1 -0
- package/dist/core/RebalancerOrchestrator.test.js +719 -0
- package/dist/core/RebalancerOrchestrator.test.js.map +1 -0
- package/dist/core/RebalancerService.d.ts +7 -3
- package/dist/core/RebalancerService.d.ts.map +1 -1
- package/dist/core/RebalancerService.js +44 -24
- package/dist/core/RebalancerService.js.map +1 -1
- package/dist/core/RebalancerService.test.js +74 -110
- package/dist/core/RebalancerService.test.js.map +1 -1
- package/dist/e2e/collateral-deficit.e2e-test.js +1 -3
- package/dist/e2e/collateral-deficit.e2e-test.js.map +1 -1
- package/dist/e2e/composite.e2e-test.js.map +1 -1
- package/dist/e2e/harness/BridgeSetup.d.ts +6 -0
- package/dist/e2e/harness/BridgeSetup.d.ts.map +1 -1
- package/dist/e2e/harness/BridgeSetup.js +10 -1
- package/dist/e2e/harness/BridgeSetup.js.map +1 -1
- package/dist/e2e/harness/ForkIndexer.d.ts.map +1 -1
- package/dist/e2e/harness/ForkIndexer.js +1 -0
- package/dist/e2e/harness/ForkIndexer.js.map +1 -1
- package/dist/e2e/harness/TestHelpers.d.ts.map +1 -1
- package/dist/e2e/harness/TestHelpers.js +1 -4
- package/dist/e2e/harness/TestHelpers.js.map +1 -1
- package/dist/e2e/harness/TestRebalancer.d.ts +1 -1
- package/dist/e2e/harness/TestRebalancer.d.ts.map +1 -1
- package/dist/e2e/harness/TestRebalancer.js +9 -9
- package/dist/e2e/harness/TestRebalancer.js.map +1 -1
- package/dist/e2e/minAmount.e2e-test.js +0 -1
- package/dist/e2e/minAmount.e2e-test.js.map +1 -1
- package/dist/e2e/weighted.e2e-test.js +0 -1
- package/dist/e2e/weighted.e2e-test.js.map +1 -1
- package/dist/factories/RebalancerContextFactory.d.ts +48 -6
- package/dist/factories/RebalancerContextFactory.d.ts.map +1 -1
- package/dist/factories/RebalancerContextFactory.js +171 -17
- package/dist/factories/RebalancerContextFactory.js.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/interfaces/IExternalBridge.d.ts +101 -0
- package/dist/interfaces/IExternalBridge.d.ts.map +1 -0
- package/dist/interfaces/IExternalBridge.js +2 -0
- package/dist/interfaces/IExternalBridge.js.map +1 -0
- package/dist/interfaces/IMonitor.d.ts +1 -0
- package/dist/interfaces/IMonitor.d.ts.map +1 -1
- package/dist/interfaces/IRebalancer.d.ts +25 -25
- package/dist/interfaces/IRebalancer.d.ts.map +1 -1
- package/dist/interfaces/IStrategy.d.ts +36 -3
- package/dist/interfaces/IStrategy.d.ts.map +1 -1
- package/dist/interfaces/IStrategy.js +12 -1
- package/dist/interfaces/IStrategy.js.map +1 -1
- package/dist/metrics/PriceGetter.js +1 -1
- package/dist/metrics/PriceGetter.js.map +1 -1
- package/dist/metrics/scripts/metrics.d.ts +3 -3
- package/dist/monitor/Monitor.d.ts +12 -2
- package/dist/monitor/Monitor.d.ts.map +1 -1
- package/dist/monitor/Monitor.js +46 -1
- package/dist/monitor/Monitor.js.map +1 -1
- package/dist/service.js +40 -17
- package/dist/service.js.map +1 -1
- package/dist/strategy/BaseStrategy.d.ts +12 -6
- package/dist/strategy/BaseStrategy.d.ts.map +1 -1
- package/dist/strategy/BaseStrategy.js +56 -21
- package/dist/strategy/BaseStrategy.js.map +1 -1
- package/dist/strategy/CollateralDeficitStrategy.d.ts +1 -1
- package/dist/strategy/CollateralDeficitStrategy.d.ts.map +1 -1
- package/dist/strategy/CollateralDeficitStrategy.js +19 -11
- package/dist/strategy/CollateralDeficitStrategy.js.map +1 -1
- package/dist/strategy/CollateralDeficitStrategy.test.js +135 -2
- package/dist/strategy/CollateralDeficitStrategy.test.js.map +1 -1
- package/dist/strategy/CompositeStrategy.test.js +13 -0
- package/dist/strategy/CompositeStrategy.test.js.map +1 -1
- package/dist/strategy/MinAmountStrategy.test.js +4 -0
- package/dist/strategy/MinAmountStrategy.test.js.map +1 -1
- package/dist/strategy/StrategyFactory.d.ts +2 -1
- package/dist/strategy/StrategyFactory.d.ts.map +1 -1
- package/dist/strategy/StrategyFactory.js +24 -8
- package/dist/strategy/StrategyFactory.js.map +1 -1
- package/dist/strategy/WeightedStrategy.test.js +6 -0
- package/dist/strategy/WeightedStrategy.test.js.map +1 -1
- package/dist/test/helpers.d.ts +8 -7
- package/dist/test/helpers.d.ts.map +1 -1
- package/dist/test/helpers.js +23 -5
- package/dist/test/helpers.js.map +1 -1
- package/dist/test/lifiMocks.d.ts +51 -0
- package/dist/test/lifiMocks.d.ts.map +1 -0
- package/dist/test/lifiMocks.js +130 -0
- package/dist/test/lifiMocks.js.map +1 -0
- package/dist/tracking/ActionTracker.d.ts +34 -1
- package/dist/tracking/ActionTracker.d.ts.map +1 -1
- package/dist/tracking/ActionTracker.js +233 -26
- package/dist/tracking/ActionTracker.js.map +1 -1
- package/dist/tracking/ActionTracker.test.js +380 -19
- package/dist/tracking/ActionTracker.test.js.map +1 -1
- package/dist/tracking/IActionTracker.d.ts +48 -3
- package/dist/tracking/IActionTracker.d.ts.map +1 -1
- package/dist/tracking/InflightContextAdapter.d.ts.map +1 -1
- package/dist/tracking/InflightContextAdapter.js +24 -7
- package/dist/tracking/InflightContextAdapter.js.map +1 -1
- package/dist/tracking/InflightContextAdapter.test.js +7 -4
- package/dist/tracking/InflightContextAdapter.test.js.map +1 -1
- package/dist/tracking/types.d.ts +33 -2
- package/dist/tracking/types.d.ts.map +1 -1
- package/dist/utils/ExplorerClient.d.ts +3 -1
- package/dist/utils/ExplorerClient.d.ts.map +1 -1
- package/dist/utils/ExplorerClient.js +16 -8
- package/dist/utils/ExplorerClient.js.map +1 -1
- package/dist/utils/bridgeUtils.d.ts +27 -4
- package/dist/utils/bridgeUtils.d.ts.map +1 -1
- package/dist/utils/bridgeUtils.js +38 -0
- package/dist/utils/bridgeUtils.js.map +1 -1
- package/dist/utils/bridgeUtils.test.js +9 -0
- package/dist/utils/bridgeUtils.test.js.map +1 -1
- package/dist/utils/gasEstimation.d.ts +65 -0
- package/dist/utils/gasEstimation.d.ts.map +1 -0
- package/dist/utils/gasEstimation.js +176 -0
- package/dist/utils/gasEstimation.js.map +1 -0
- package/dist/utils/tokenUtils.d.ts +9 -1
- package/dist/utils/tokenUtils.d.ts.map +1 -1
- package/dist/utils/tokenUtils.js +11 -0
- package/dist/utils/tokenUtils.js.map +1 -1
- package/package.json +9 -7
- package/src/bridges/LiFiBridge.ts +538 -0
- package/src/config/RebalancerConfig.test.ts +162 -0
- package/src/config/RebalancerConfig.ts +21 -3
- package/src/config/types.ts +147 -10
- package/src/core/InventoryRebalancer.test.ts +1721 -0
- package/src/core/InventoryRebalancer.ts +1265 -0
- package/src/core/Rebalancer.test.ts +84 -30
- package/src/core/Rebalancer.ts +144 -23
- package/src/core/RebalancerOrchestrator.test.ts +869 -0
- package/src/core/RebalancerOrchestrator.ts +146 -95
- package/src/core/RebalancerService.test.ts +86 -124
- package/src/core/RebalancerService.ts +67 -33
- package/src/e2e/collateral-deficit.e2e-test.ts +2 -4
- package/src/e2e/composite.e2e-test.ts +5 -5
- package/src/e2e/harness/BridgeSetup.ts +28 -1
- package/src/e2e/harness/ForkIndexer.ts +1 -0
- package/src/e2e/harness/TestHelpers.ts +1 -4
- package/src/e2e/harness/TestRebalancer.ts +10 -7
- package/src/e2e/minAmount.e2e-test.ts +1 -2
- package/src/e2e/weighted.e2e-test.ts +1 -2
- package/src/factories/RebalancerContextFactory.ts +294 -24
- package/src/index.ts +22 -5
- package/src/interfaces/IExternalBridge.ts +115 -0
- package/src/interfaces/IMonitor.ts +1 -0
- package/src/interfaces/IRebalancer.ts +45 -29
- package/src/interfaces/IStrategy.ts +50 -3
- package/src/metrics/PriceGetter.ts +1 -1
- package/src/monitor/Monitor.ts +81 -2
- package/src/service.ts +59 -18
- package/src/strategy/BaseStrategy.ts +77 -24
- package/src/strategy/CollateralDeficitStrategy.test.ts +181 -4
- package/src/strategy/CollateralDeficitStrategy.ts +42 -15
- package/src/strategy/CompositeStrategy.test.ts +13 -0
- package/src/strategy/MinAmountStrategy.test.ts +4 -0
- package/src/strategy/StrategyFactory.ts +33 -6
- package/src/strategy/WeightedStrategy.test.ts +6 -0
- package/src/test/helpers.ts +39 -14
- package/src/test/lifiMocks.ts +174 -0
- package/src/tracking/ActionTracker.test.ts +443 -19
- package/src/tracking/ActionTracker.ts +339 -28
- package/src/tracking/IActionTracker.ts +59 -3
- package/src/tracking/InflightContextAdapter.test.ts +7 -4
- package/src/tracking/InflightContextAdapter.ts +42 -9
- package/src/tracking/types.ts +45 -2
- package/src/utils/ExplorerClient.ts +27 -10
- package/src/utils/bridgeUtils.test.ts +9 -0
- package/src/utils/bridgeUtils.ts +75 -6
- package/src/utils/gasEstimation.ts +272 -0
- package/src/utils/tokenUtils.ts +12 -0
- package/dist/tracking/index.d.ts +0 -7
- package/dist/tracking/index.d.ts.map +0 -1
- package/dist/tracking/index.js +0 -6
- package/dist/tracking/index.js.map +0 -1
- package/dist/utils/index.d.ts +0 -5
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -5
- package/dist/utils/index.js.map +0 -1
- package/src/tracking/index.ts +0 -36
- package/src/utils/index.ts +0 -4
|
@@ -1,20 +1,26 @@
|
|
|
1
1
|
import { MultiProtocolCore, MultiProtocolProvider, WarpCore, } from '@hyperlane-xyz/sdk';
|
|
2
|
-
import { objMap } from '@hyperlane-xyz/utils';
|
|
3
|
-
import {
|
|
2
|
+
import { objMap, toWei } from '@hyperlane-xyz/utils';
|
|
3
|
+
import { LiFiBridge } from '../bridges/LiFiBridge.js';
|
|
4
|
+
import { ExecutionType, ExternalBridgeType, getAllBridges, getStrategyChainConfig, getStrategyChainNames, } from '../config/types.js';
|
|
5
|
+
import { InventoryRebalancer } from '../core/InventoryRebalancer.js';
|
|
4
6
|
import { Rebalancer } from '../core/Rebalancer.js';
|
|
7
|
+
import { RebalancerOrchestrator } from '../core/RebalancerOrchestrator.js';
|
|
5
8
|
import { Metrics } from '../metrics/Metrics.js';
|
|
6
9
|
import { PriceGetter } from '../metrics/PriceGetter.js';
|
|
7
10
|
import { Monitor } from '../monitor/Monitor.js';
|
|
8
11
|
import { StrategyFactory } from '../strategy/StrategyFactory.js';
|
|
9
|
-
import { ActionTracker,
|
|
12
|
+
import { ActionTracker, } from '../tracking/ActionTracker.js';
|
|
13
|
+
import { InflightContextAdapter } from '../tracking/InflightContextAdapter.js';
|
|
14
|
+
import { InMemoryStore } from '../tracking/store/index.js';
|
|
10
15
|
import { ExplorerClient, } from '../utils/ExplorerClient.js';
|
|
11
|
-
import { isCollateralizedTokenEligibleForRebalancing } from '../utils/
|
|
16
|
+
import { isCollateralizedTokenEligibleForRebalancing } from '../utils/tokenUtils.js';
|
|
12
17
|
const DEFAULT_EXPLORER_URL = process.env.EXPLORER_API_URL || 'https://explorer4.hasura.app/v1/graphql';
|
|
13
18
|
export class RebalancerContextFactory {
|
|
14
19
|
config;
|
|
15
20
|
warpCore;
|
|
16
21
|
tokensByChainName;
|
|
17
22
|
multiProvider;
|
|
23
|
+
inventoryMultiProvider;
|
|
18
24
|
multiProtocolProvider;
|
|
19
25
|
registry;
|
|
20
26
|
logger;
|
|
@@ -22,43 +28,63 @@ export class RebalancerContextFactory {
|
|
|
22
28
|
* @param config - The rebalancer config
|
|
23
29
|
* @param warpCore - An instance of `WarpCore` configured for the specified `warpRouteId`.
|
|
24
30
|
* @param tokensByChainName - A map of chain->token to ease the lookup of token by chain
|
|
25
|
-
* @param multiProvider - MultiProvider instance
|
|
31
|
+
* @param multiProvider - MultiProvider instance (for movable collateral operations)
|
|
32
|
+
* @param inventoryMultiProvider - MultiProvider instance for inventory operations (optional)
|
|
26
33
|
* @param multiProtocolProvider - MultiProtocolProvider instance (with mailbox metadata)
|
|
27
34
|
* @param registry - IRegistry instance
|
|
28
35
|
* @param logger - Logger instance
|
|
29
36
|
*/
|
|
30
|
-
constructor(config, warpCore, tokensByChainName, multiProvider, multiProtocolProvider, registry, logger) {
|
|
37
|
+
constructor(config, warpCore, tokensByChainName, multiProvider, inventoryMultiProvider, multiProtocolProvider, registry, logger) {
|
|
31
38
|
this.config = config;
|
|
32
39
|
this.warpCore = warpCore;
|
|
33
40
|
this.tokensByChainName = tokensByChainName;
|
|
34
41
|
this.multiProvider = multiProvider;
|
|
42
|
+
this.inventoryMultiProvider = inventoryMultiProvider;
|
|
35
43
|
this.multiProtocolProvider = multiProtocolProvider;
|
|
36
44
|
this.registry = registry;
|
|
37
45
|
this.logger = logger;
|
|
38
46
|
}
|
|
39
|
-
|
|
47
|
+
/**
|
|
48
|
+
* @param config - The rebalancer config
|
|
49
|
+
* @param multiProvider - MultiProvider instance (for movable collateral operations)
|
|
50
|
+
* @param inventoryMultiProvider - MultiProvider instance for inventory operations (optional)
|
|
51
|
+
* @param multiProtocolProvider - MultiProtocolProvider instance (optional, created from multiProvider if not provided)
|
|
52
|
+
* @param registry - IRegistry instance
|
|
53
|
+
* @param logger - Logger instance
|
|
54
|
+
*/
|
|
55
|
+
static async create(config, multiProvider, inventoryMultiProvider, multiProtocolProvider, registry, logger, warpCoreConfigOverride) {
|
|
40
56
|
logger.debug({
|
|
41
57
|
warpRouteId: config.warpRouteId,
|
|
42
58
|
}, 'Creating RebalancerContextFactory');
|
|
59
|
+
// TODO: should we pull addressed for chains we care about, i.e those in the warp config
|
|
43
60
|
const addresses = await registry.getAddresses();
|
|
44
61
|
// The Sealevel warp adapters require the Mailbox address, so we
|
|
45
62
|
// get mailboxes for all chains and merge them with the chain metadata.
|
|
46
63
|
const mailboxes = objMap(addresses, (_, { mailbox }) => ({ mailbox }));
|
|
47
|
-
//
|
|
48
|
-
const mpp = multiProtocolProvider ??
|
|
49
|
-
MultiProtocolProvider.fromMultiProvider(multiProvider);
|
|
50
|
-
const extendedMultiProtocolProvider = mpp.extendChainMetadata(mailboxes);
|
|
64
|
+
// Fetch warp route config FIRST to get chain list
|
|
51
65
|
const warpCoreConfig = warpCoreConfigOverride ??
|
|
52
66
|
(await registry.getWarpRoute(config.warpRouteId));
|
|
53
67
|
if (!warpCoreConfig) {
|
|
54
68
|
throw new Error(`Warp route config for ${config.warpRouteId} not found in registry`);
|
|
55
69
|
}
|
|
70
|
+
// Force-initialize providers for all warp route chains
|
|
71
|
+
// This ensures fromMultiProvider() snapshots actual provider instances
|
|
72
|
+
const warpChains = [
|
|
73
|
+
...new Set(warpCoreConfig.tokens.map((t) => t.chainName)),
|
|
74
|
+
];
|
|
75
|
+
for (const chain of warpChains) {
|
|
76
|
+
multiProvider.getProvider(chain);
|
|
77
|
+
}
|
|
78
|
+
// Create MultiProtocolProvider (convert from MultiProvider if not provided)
|
|
79
|
+
const mpp = multiProtocolProvider ??
|
|
80
|
+
MultiProtocolProvider.fromMultiProvider(multiProvider);
|
|
81
|
+
const extendedMultiProtocolProvider = mpp.extendChainMetadata(mailboxes);
|
|
56
82
|
const warpCore = WarpCore.FromConfig(extendedMultiProtocolProvider, warpCoreConfig);
|
|
57
83
|
const tokensByChainName = Object.fromEntries(warpCore.tokens.map((t) => [t.chainName, t]));
|
|
58
84
|
logger.debug({
|
|
59
85
|
warpRouteId: config.warpRouteId,
|
|
60
86
|
}, 'RebalancerContextFactory created successfully');
|
|
61
|
-
return new RebalancerContextFactory(config, warpCore, tokensByChainName, multiProvider, extendedMultiProtocolProvider, registry, logger);
|
|
87
|
+
return new RebalancerContextFactory(config, warpCore, tokensByChainName, multiProvider, inventoryMultiProvider, extendedMultiProtocolProvider, registry, logger);
|
|
62
88
|
}
|
|
63
89
|
getWarpCore() {
|
|
64
90
|
return this.warpCore;
|
|
@@ -72,12 +98,12 @@ export class RebalancerContextFactory {
|
|
|
72
98
|
const warpDeployConfig = await this.registry.getWarpDeployConfig(this.config.warpRouteId);
|
|
73
99
|
return new Metrics(tokenPriceGetter, warpDeployConfig, this.warpCore, this.config.warpRouteId, this.logger);
|
|
74
100
|
}
|
|
75
|
-
createMonitor(checkFrequency) {
|
|
101
|
+
createMonitor(checkFrequency, inventoryConfig) {
|
|
76
102
|
this.logger.debug({
|
|
77
103
|
warpRouteId: this.config.warpRouteId,
|
|
78
104
|
checkFrequency: checkFrequency,
|
|
79
105
|
}, 'Creating Monitor');
|
|
80
|
-
return new Monitor(checkFrequency, this.warpCore, this.logger);
|
|
106
|
+
return new Monitor(checkFrequency, this.warpCore, this.logger, inventoryConfig);
|
|
81
107
|
}
|
|
82
108
|
async createStrategy(metrics) {
|
|
83
109
|
const strategyTypes = this.config.strategyConfig.map((s) => s.rebalanceStrategy);
|
|
@@ -86,11 +112,25 @@ export class RebalancerContextFactory {
|
|
|
86
112
|
strategyTypes,
|
|
87
113
|
strategyCount: this.config.strategyConfig.length,
|
|
88
114
|
}, 'Creating Strategy');
|
|
89
|
-
|
|
115
|
+
// Build minAmountsByChain from chain configs
|
|
116
|
+
const chainNames = getStrategyChainNames(this.config.strategyConfig);
|
|
117
|
+
const minAmountsByChain = {};
|
|
118
|
+
for (const chainName of chainNames) {
|
|
119
|
+
const chainConfig = getStrategyChainConfig(this.config.strategyConfig, chainName);
|
|
120
|
+
if (chainConfig?.bridgeMinAcceptedAmount) {
|
|
121
|
+
const token = this.tokensByChainName[chainName];
|
|
122
|
+
const decimals = token?.decimals ?? 18;
|
|
123
|
+
minAmountsByChain[chainName] = BigInt(toWei(chainConfig.bridgeMinAcceptedAmount, decimals));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
this.logger.debug({
|
|
127
|
+
minAmountsByChain: Object.fromEntries(Object.entries(minAmountsByChain).map(([k, v]) => [k, v.toString()])),
|
|
128
|
+
}, 'Built minimum amounts by chain for strategy');
|
|
129
|
+
return StrategyFactory.createStrategy(this.config.strategyConfig, this.tokensByChainName, await this.getInitialTotalCollateral(), this.logger, metrics, minAmountsByChain);
|
|
90
130
|
}
|
|
91
|
-
|
|
131
|
+
createMovableCollateralRebalancer(actionTracker, metrics) {
|
|
92
132
|
this.logger.debug({ warpRouteId: this.config.warpRouteId }, 'Creating Rebalancer');
|
|
93
|
-
const rebalancer = new Rebalancer(this.warpCore, this.multiProvider.metadata, this.tokensByChainName, this.multiProvider, this.logger, metrics);
|
|
133
|
+
const rebalancer = new Rebalancer(this.warpCore, this.multiProvider.metadata, this.tokensByChainName, this.multiProvider, actionTracker, this.logger, metrics);
|
|
94
134
|
return rebalancer;
|
|
95
135
|
}
|
|
96
136
|
async createActionTracker(explorerUrlOrClient = DEFAULT_EXPLORER_URL) {
|
|
@@ -132,6 +172,8 @@ export class RebalancerContextFactory {
|
|
|
132
172
|
routersByDomain,
|
|
133
173
|
bridges,
|
|
134
174
|
rebalancerAddress,
|
|
175
|
+
inventorySignerAddress: this.config.inventorySigner,
|
|
176
|
+
intentTTL: this.config.intentTTL,
|
|
135
177
|
};
|
|
136
178
|
// 6. Create ActionTracker
|
|
137
179
|
const tracker = new ActionTracker(transferStore, intentStore, actionStore, explorerClient, multiProtocolCore, trackerConfig, this.logger);
|
|
@@ -145,6 +187,118 @@ export class RebalancerContextFactory {
|
|
|
145
187
|
}, 'ActionTracker created successfully');
|
|
146
188
|
return { tracker, adapter };
|
|
147
189
|
}
|
|
190
|
+
/**
|
|
191
|
+
* Creates inventory components for inventory-based rebalancing.
|
|
192
|
+
* Returns null if inventory config is not available.
|
|
193
|
+
*
|
|
194
|
+
* @param actionTracker - ActionTracker instance for tracking inventory actions
|
|
195
|
+
*/
|
|
196
|
+
async createInventoryRebalancerAndConfig(actionTracker) {
|
|
197
|
+
const { inventorySigner, externalBridges } = this.config;
|
|
198
|
+
if (!inventorySigner) {
|
|
199
|
+
this.logger.debug('Inventory config not available, skipping inventory components creation');
|
|
200
|
+
return null;
|
|
201
|
+
}
|
|
202
|
+
this.logger.debug({ warpRouteId: this.config.warpRouteId, inventorySigner }, 'Creating inventory components');
|
|
203
|
+
const inventoryChains = getStrategyChainNames(this.config.strategyConfig).filter((chainName) => {
|
|
204
|
+
const chainConfig = getStrategyChainConfig(this.config.strategyConfig, chainName);
|
|
205
|
+
return chainConfig?.executionType === ExecutionType.Inventory;
|
|
206
|
+
});
|
|
207
|
+
if (inventoryChains.length === 0) {
|
|
208
|
+
this.logger.debug('No inventory chains configured');
|
|
209
|
+
return null;
|
|
210
|
+
}
|
|
211
|
+
// Build registry dynamically from ExternalBridgeType enum
|
|
212
|
+
const externalBridgeRegistry = {};
|
|
213
|
+
for (const bridgeType of Object.values(ExternalBridgeType)) {
|
|
214
|
+
switch (bridgeType) {
|
|
215
|
+
case ExternalBridgeType.LiFi: {
|
|
216
|
+
const lifiConfig = externalBridges?.lifi;
|
|
217
|
+
if (lifiConfig?.integrator) {
|
|
218
|
+
externalBridgeRegistry[ExternalBridgeType.LiFi] = new LiFiBridge({
|
|
219
|
+
integrator: lifiConfig.integrator,
|
|
220
|
+
defaultSlippage: lifiConfig.defaultSlippage,
|
|
221
|
+
chainMetadata: this.multiProvider.metadata,
|
|
222
|
+
}, this.logger);
|
|
223
|
+
}
|
|
224
|
+
break;
|
|
225
|
+
}
|
|
226
|
+
default: {
|
|
227
|
+
// Exhaustive check - TypeScript will error if new enum value added
|
|
228
|
+
const _exhaustive = bridgeType;
|
|
229
|
+
throw new Error(`Unknown bridge type: ${_exhaustive}`);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
if (Object.keys(externalBridgeRegistry).length === 0) {
|
|
234
|
+
this.logger.debug('No external bridges configured, skipping inventory components');
|
|
235
|
+
return null;
|
|
236
|
+
}
|
|
237
|
+
// 3. Build inventory config
|
|
238
|
+
const inventoryConfig = {
|
|
239
|
+
inventoryAddress: inventorySigner,
|
|
240
|
+
chains: inventoryChains,
|
|
241
|
+
};
|
|
242
|
+
// 4. Create InventoryRebalancer
|
|
243
|
+
// Use inventoryMultiProvider for inventory operations if available, otherwise fall back to multiProvider
|
|
244
|
+
const inventoryRebalancer = new InventoryRebalancer({
|
|
245
|
+
inventorySigner,
|
|
246
|
+
inventoryMultiProvider: this.inventoryMultiProvider,
|
|
247
|
+
inventoryChains,
|
|
248
|
+
}, actionTracker, externalBridgeRegistry, this.warpCore, this.multiProvider, this.logger);
|
|
249
|
+
this.logger.info({
|
|
250
|
+
inventoryChains,
|
|
251
|
+
inventorySigner,
|
|
252
|
+
}, 'Inventory components created successfully');
|
|
253
|
+
return { inventoryRebalancer, externalBridgeRegistry, inventoryConfig };
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Creates all rebalancers based on config execution types.
|
|
257
|
+
* Returns an array of rebalancers (movableCollateral and/or inventory)
|
|
258
|
+
* along with metadata needed for monitor and orchestrator.
|
|
259
|
+
*/
|
|
260
|
+
async createRebalancers(actionTracker, metrics) {
|
|
261
|
+
const rebalancers = [];
|
|
262
|
+
let externalBridgeRegistry = {};
|
|
263
|
+
let inventoryConfig;
|
|
264
|
+
// Check if any chains use movableCollateral execution type
|
|
265
|
+
const hasMovableCollateral = this.hasMovableCollateralChains();
|
|
266
|
+
if (hasMovableCollateral) {
|
|
267
|
+
const rebalancer = this.createMovableCollateralRebalancer(actionTracker, metrics);
|
|
268
|
+
rebalancers.push(rebalancer);
|
|
269
|
+
}
|
|
270
|
+
// Check if any chains use inventory execution type
|
|
271
|
+
const inventoryComponents = await this.createInventoryRebalancerAndConfig(actionTracker);
|
|
272
|
+
if (inventoryComponents) {
|
|
273
|
+
rebalancers.push(inventoryComponents.inventoryRebalancer);
|
|
274
|
+
externalBridgeRegistry = inventoryComponents.externalBridgeRegistry;
|
|
275
|
+
inventoryConfig = inventoryComponents.inventoryConfig;
|
|
276
|
+
}
|
|
277
|
+
return { rebalancers, externalBridgeRegistry, inventoryConfig };
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Creates a RebalancerOrchestrator with all required dependencies.
|
|
281
|
+
*/
|
|
282
|
+
createOrchestrator(options) {
|
|
283
|
+
this.logger.debug({ warpRouteId: this.config.warpRouteId }, 'Creating RebalancerOrchestrator');
|
|
284
|
+
return new RebalancerOrchestrator({
|
|
285
|
+
strategy: options.strategy,
|
|
286
|
+
actionTracker: options.actionTracker,
|
|
287
|
+
inflightContextAdapter: options.inflightContextAdapter,
|
|
288
|
+
rebalancerConfig: this.config,
|
|
289
|
+
logger: this.logger,
|
|
290
|
+
rebalancers: options.rebalancers,
|
|
291
|
+
externalBridgeRegistry: options.externalBridgeRegistry,
|
|
292
|
+
metrics: options.metrics,
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
hasMovableCollateralChains() {
|
|
296
|
+
return getStrategyChainNames(this.config.strategyConfig).some((chainName) => {
|
|
297
|
+
const chainConfig = getStrategyChainConfig(this.config.strategyConfig, chainName);
|
|
298
|
+
return (chainConfig?.executionType === ExecutionType.MovableCollateral ||
|
|
299
|
+
chainConfig?.executionType === undefined); // Default is movableCollateral
|
|
300
|
+
});
|
|
301
|
+
}
|
|
148
302
|
async getInitialTotalCollateral() {
|
|
149
303
|
let initialTotalCollateral = 0n;
|
|
150
304
|
const chainNames = new Set(getStrategyChainNames(this.config.strategyConfig));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RebalancerContextFactory.js","sourceRoot":"","sources":["../../src/factories/RebalancerContextFactory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RebalancerContextFactory.js","sourceRoot":"","sources":["../../src/factories/RebalancerContextFactory.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export { RebalancerService } from './core/RebalancerService.js';
|
|
|
10
10
|
export type { RebalancerServiceConfig, ManualRebalanceRequest, } from './core/RebalancerService.js';
|
|
11
11
|
export { Rebalancer } from './core/Rebalancer.js';
|
|
12
12
|
export { RebalancerConfig } from './config/RebalancerConfig.js';
|
|
13
|
-
export { getStrategyChainConfig, getStrategyChainNames, RebalancerBaseChainConfigSchema, RebalancerConfigSchema, RebalancerMinAmountConfigSchema, RebalancerMinAmountType, RebalancerStrategyOptions, RebalancerStrategySchema, RebalancerWeightedChainConfigSchema, StrategyConfigSchema, } from './config/types.js';
|
|
13
|
+
export { DEFAULT_INTENT_TTL_MS, DEFAULT_INTENT_TTL_S, getStrategyChainConfig, getStrategyChainNames, RebalancerBaseChainConfigSchema, RebalancerConfigSchema, RebalancerMinAmountConfigSchema, RebalancerMinAmountType, RebalancerStrategyOptions, RebalancerStrategySchema, RebalancerWeightedChainConfigSchema, StrategyConfigSchema, } from './config/types.js';
|
|
14
14
|
export type { MinAmountStrategyConfig, RebalancerConfig as RebalancerConfigType, RebalancerConfigFileInput, RebalancerMinAmountChainConfig, RebalancerWeightedChainConfig, StrategyConfig, WeightedStrategyConfig, } from './config/types.js';
|
|
15
15
|
export { BaseStrategy } from './strategy/BaseStrategy.js';
|
|
16
16
|
export { CompositeStrategy } from './strategy/CompositeStrategy.js';
|
|
@@ -20,18 +20,18 @@ export { StrategyFactory } from './strategy/StrategyFactory.js';
|
|
|
20
20
|
export { Monitor } from './monitor/Monitor.js';
|
|
21
21
|
export { Metrics } from './metrics/Metrics.js';
|
|
22
22
|
export { PriceGetter } from './metrics/PriceGetter.js';
|
|
23
|
-
export type { IRebalancer,
|
|
24
|
-
export type { IStrategy,
|
|
23
|
+
export type { ExecutionResult, IInventoryRebalancer, IMovableCollateralRebalancer, IRebalancer, InventoryExecutionResult, MovableCollateralExecutionResult, PreparedTransaction, RebalancerType, } from './interfaces/IRebalancer.js';
|
|
24
|
+
export type { IStrategy, InflightContext, InventoryRoute, MovableCollateralRoute, RawBalances, Route, StrategyRoute, } from './interfaces/IStrategy.js';
|
|
25
25
|
export type { ConfirmedBlockTag, ConfirmedBlockTags, IMonitor, } from './interfaces/IMonitor.js';
|
|
26
26
|
export { MonitorEventType, MonitorEvent, MonitorPollingError, MonitorStartError, } from './interfaces/IMonitor.js';
|
|
27
27
|
export type { IMetrics } from './interfaces/IMetrics.js';
|
|
28
|
-
export { getBridgeConfig } from './utils/bridgeUtils.js';
|
|
29
|
-
export type { BridgeConfigWithOverride, BridgeConfig, } from './utils/bridgeUtils.js';
|
|
28
|
+
export { getBridgeConfig, isMovableCollateralConfig, isInventoryConfig, } from './utils/bridgeUtils.js';
|
|
29
|
+
export type { BridgeConfigWithOverride, BridgeConfig, MovableCollateralBridgeConfig, InventoryBridgeConfig, } from './utils/bridgeUtils.js';
|
|
30
30
|
export { getRawBalances } from './utils/balanceUtils.js';
|
|
31
31
|
export { isCollateralizedTokenEligibleForRebalancing } from './utils/tokenUtils.js';
|
|
32
32
|
export { ExplorerClient } from './utils/ExplorerClient.js';
|
|
33
33
|
export { InflightContextAdapter } from './tracking/InflightContextAdapter.js';
|
|
34
34
|
export type { IActionTracker, CreateRebalanceIntentParams, CreateRebalanceActionParams, } from './tracking/IActionTracker.js';
|
|
35
|
-
export type { Transfer, RebalanceIntent, RebalanceAction, } from './tracking/types.js';
|
|
35
|
+
export type { Transfer, RebalanceIntent, RebalanceAction, ActionType, PartialInventoryIntent, } from './tracking/types.js';
|
|
36
36
|
export { RebalancerContextFactory } from './factories/RebalancerContextFactory.js';
|
|
37
37
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,YAAY,EACV,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,+BAA+B,EAC/B,sBAAsB,EACtB,+BAA+B,EAC/B,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,mCAAmC,EACnC,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,uBAAuB,EACvB,gBAAgB,IAAI,oBAAoB,EACxC,yBAAyB,EACzB,8BAA8B,EAC9B,6BAA6B,EAC7B,cAAc,EACd,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,YAAY,EACV,WAAW,EACX,mBAAmB,EACnB,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,YAAY,EACV,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,+BAA+B,EAC/B,sBAAsB,EACtB,+BAA+B,EAC/B,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,mCAAmC,EACnC,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,uBAAuB,EACvB,gBAAgB,IAAI,oBAAoB,EACxC,yBAAyB,EACzB,8BAA8B,EAC9B,6BAA6B,EAC7B,cAAc,EACd,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,YAAY,EACV,eAAe,EACf,oBAAoB,EACpB,4BAA4B,EAC5B,WAAW,EACX,wBAAwB,EACxB,gCAAgC,EAChC,mBAAmB,EACnB,cAAc,GACf,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,SAAS,EACT,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,WAAW,EACX,KAAK,EACL,aAAa,GACd,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,QAAQ,GACT,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGzD,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,wBAAwB,EACxB,YAAY,EACZ,6BAA6B,EAC7B,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,2CAA2C,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAG3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,YAAY,EACV,cAAc,EACd,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,8BAA8B,CAAC;AACtC,YAAY,EACV,QAAQ,EACR,eAAe,EACf,eAAe,EACf,UAAU,EACV,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -12,7 +12,7 @@ export { RebalancerService } from './core/RebalancerService.js';
|
|
|
12
12
|
export { Rebalancer } from './core/Rebalancer.js';
|
|
13
13
|
// Configuration
|
|
14
14
|
export { RebalancerConfig } from './config/RebalancerConfig.js';
|
|
15
|
-
export { getStrategyChainConfig, getStrategyChainNames, RebalancerBaseChainConfigSchema, RebalancerConfigSchema, RebalancerMinAmountConfigSchema, RebalancerMinAmountType, RebalancerStrategyOptions, RebalancerStrategySchema, RebalancerWeightedChainConfigSchema, StrategyConfigSchema, } from './config/types.js';
|
|
15
|
+
export { DEFAULT_INTENT_TTL_MS, DEFAULT_INTENT_TTL_S, getStrategyChainConfig, getStrategyChainNames, RebalancerBaseChainConfigSchema, RebalancerConfigSchema, RebalancerMinAmountConfigSchema, RebalancerMinAmountType, RebalancerStrategyOptions, RebalancerStrategySchema, RebalancerWeightedChainConfigSchema, StrategyConfigSchema, } from './config/types.js';
|
|
16
16
|
// Strategy
|
|
17
17
|
export { BaseStrategy } from './strategy/BaseStrategy.js';
|
|
18
18
|
export { CompositeStrategy } from './strategy/CompositeStrategy.js';
|
|
@@ -26,7 +26,7 @@ export { Metrics } from './metrics/Metrics.js';
|
|
|
26
26
|
export { PriceGetter } from './metrics/PriceGetter.js';
|
|
27
27
|
export { MonitorEventType, MonitorPollingError, MonitorStartError, } from './interfaces/IMonitor.js';
|
|
28
28
|
// Utils
|
|
29
|
-
export { getBridgeConfig } from './utils/bridgeUtils.js';
|
|
29
|
+
export { getBridgeConfig, isMovableCollateralConfig, isInventoryConfig, } from './utils/bridgeUtils.js';
|
|
30
30
|
export { getRawBalances } from './utils/balanceUtils.js';
|
|
31
31
|
export { isCollateralizedTokenEligibleForRebalancing } from './utils/tokenUtils.js';
|
|
32
32
|
export { ExplorerClient } from './utils/ExplorerClient.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAe;AACf,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAMhE,yBAAyB;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,gBAAgB;AAChB,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,+BAA+B,EAC/B,sBAAsB,EACtB,+BAA+B,EAC/B,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,mCAAmC,EACnC,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAW3B,WAAW;AACX,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,UAAU;AACV,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,UAAU;AACV,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAe;AACf,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAMhE,yBAAyB;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,gBAAgB;AAChB,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,+BAA+B,EAC/B,sBAAsB,EACtB,+BAA+B,EAC/B,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,mCAAmC,EACnC,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAW3B,WAAW;AACX,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,UAAU;AACV,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,UAAU;AACV,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AA2BvD,OAAO,EACL,gBAAgB,EAEhB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAGlC,QAAQ;AACR,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAOhC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,2CAA2C,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,WAAW;AACX,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAc9E,UAAU;AACV,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import type { Logger } from 'pino';
|
|
2
|
+
import type { ChainMap, ChainMetadata } from '@hyperlane-xyz/sdk';
|
|
3
|
+
import type { ExternalBridgeType } from '../config/types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Configuration for an external bridge.
|
|
6
|
+
*/
|
|
7
|
+
export interface ExternalBridgeConfig {
|
|
8
|
+
integrator: string;
|
|
9
|
+
apiKey?: string;
|
|
10
|
+
defaultSlippage?: number;
|
|
11
|
+
chainMetadata?: ChainMap<ChainMetadata>;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Parameters for requesting a bridge quote.
|
|
15
|
+
* Either fromAmount OR toAmount must be provided (mutually exclusive).
|
|
16
|
+
* - fromAmount: "I'm sending X, what do I get?" (standard quote)
|
|
17
|
+
* - toAmount: "I want X on destination, how much do I send?" (reverse quote)
|
|
18
|
+
*/
|
|
19
|
+
export interface BridgeQuoteParams {
|
|
20
|
+
fromChain: number;
|
|
21
|
+
toChain: number;
|
|
22
|
+
fromToken: string;
|
|
23
|
+
toToken: string;
|
|
24
|
+
fromAmount?: bigint;
|
|
25
|
+
toAmount?: bigint;
|
|
26
|
+
fromAddress: string;
|
|
27
|
+
toAddress?: string;
|
|
28
|
+
slippage?: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Quote response from a bridge.
|
|
32
|
+
*/
|
|
33
|
+
export interface BridgeQuote {
|
|
34
|
+
id: string;
|
|
35
|
+
tool: string;
|
|
36
|
+
fromAmount: bigint;
|
|
37
|
+
toAmount: bigint;
|
|
38
|
+
toAmountMin: bigint;
|
|
39
|
+
executionDuration: number;
|
|
40
|
+
gasCosts: bigint;
|
|
41
|
+
feeCosts: bigint;
|
|
42
|
+
route: unknown;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Result of executing a bridge transfer.
|
|
46
|
+
*/
|
|
47
|
+
export interface BridgeTransferResult {
|
|
48
|
+
txHash: string;
|
|
49
|
+
fromChain: number;
|
|
50
|
+
toChain: number;
|
|
51
|
+
transferId?: string;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Status of a bridge transfer.
|
|
55
|
+
*/
|
|
56
|
+
export type BridgeTransferStatus = {
|
|
57
|
+
status: 'pending';
|
|
58
|
+
substatus?: string;
|
|
59
|
+
} | {
|
|
60
|
+
status: 'complete';
|
|
61
|
+
receivingTxHash: string;
|
|
62
|
+
receivedAmount: bigint;
|
|
63
|
+
} | {
|
|
64
|
+
status: 'failed';
|
|
65
|
+
error?: string;
|
|
66
|
+
} | {
|
|
67
|
+
status: 'not_found';
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Interface for external bridge implementations (e.g., LiFi, Socket).
|
|
71
|
+
*
|
|
72
|
+
* External bridges are used for inventory rebalancing when chains don't support
|
|
73
|
+
* MovableCollateralRouter. The flow is:
|
|
74
|
+
* 1. quote() - Get a quote for bridging tokens
|
|
75
|
+
* 2. execute() - Execute the bridge transfer
|
|
76
|
+
* 3. getStatus() - Poll for transfer completion
|
|
77
|
+
*/
|
|
78
|
+
export interface IExternalBridge {
|
|
79
|
+
readonly externalBridgeId: string;
|
|
80
|
+
readonly logger: Logger;
|
|
81
|
+
getNativeTokenAddress?(): string;
|
|
82
|
+
quote(params: BridgeQuoteParams): Promise<BridgeQuote>;
|
|
83
|
+
/**
|
|
84
|
+
* Execute a bridge transfer using a previously obtained quote.
|
|
85
|
+
* @param quote - Quote obtained from quote()
|
|
86
|
+
* @param privateKey - Private key hex string (0x-prefixed) for signing the transaction
|
|
87
|
+
*/
|
|
88
|
+
execute(quote: BridgeQuote, privateKey: string): Promise<BridgeTransferResult>;
|
|
89
|
+
/**
|
|
90
|
+
* Get the status of a bridge transfer.
|
|
91
|
+
* @param txHash - Origin chain transaction hash
|
|
92
|
+
* @param fromChain - Source chain ID
|
|
93
|
+
* @param toChain - Destination chain ID
|
|
94
|
+
*/
|
|
95
|
+
getStatus(txHash: string, fromChain: number, toChain: number): Promise<BridgeTransferStatus>;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Registry mapping external bridge types to their implementations.
|
|
99
|
+
*/
|
|
100
|
+
export type ExternalBridgeRegistry = Record<ExternalBridgeType, IExternalBridge>;
|
|
101
|
+
//# sourceMappingURL=IExternalBridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IExternalBridge.d.ts","sourceRoot":"","sources":["../../src/interfaces/IExternalBridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;CACzC;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAC5B;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC;AAE5B;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,qBAAqB,CAAC,IAAI,MAAM,CAAC;IAEjC,KAAK,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAEvD;;;;OAIG;IACH,OAAO,CACL,KAAK,EAAE,WAAW,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEjC;;;;;OAKG;IACH,SAAS,CACP,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,oBAAoB,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,MAAM,CACzC,kBAAkB,EAClB,eAAe,CAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IExternalBridge.js","sourceRoot":"","sources":["../../src/interfaces/IExternalBridge.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IMonitor.d.ts","sourceRoot":"","sources":["../../src/interfaces/IMonitor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EACb,2BAA2B,EAC3B,KAAK,KAAK,EACX,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,IAAI,SAAuB;CAC5B;AAED,qBAAa,mBAAoB,SAAQ,YAAY;IACnD,IAAI,SAAyB;CAC9B;AAED,oBAAY,gBAAgB;IAC1B,SAAS,cAAc;IACvB,KAAK,UAAU;IACf,KAAK,UAAU;CAChB;AAED,MAAM,MAAM,iBAAiB,GACzB,MAAM,GACN,2BAA2B,GAC3B,SAAS,CAAC;AAEd,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAE7D,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE;QACV,KAAK,EAAE,KAAK,CAAC;QACb,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,EAAE,CAAC;IACJ,kBAAkB,EAAE,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"IMonitor.d.ts","sourceRoot":"","sources":["../../src/interfaces/IMonitor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EACb,2BAA2B,EAC3B,KAAK,KAAK,EACX,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,IAAI,SAAuB;CAC5B;AAED,qBAAa,mBAAoB,SAAQ,YAAY;IACnD,IAAI,SAAyB;CAC9B;AAED,oBAAY,gBAAgB;IAC1B,SAAS,cAAc;IACvB,KAAK,UAAU;IACf,KAAK,UAAU;CAChB;AAED,MAAM,MAAM,iBAAiB,GACzB,MAAM,GACN,2BAA2B,GAC3B,SAAS,CAAC;AAEd,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAE7D,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE;QACV,KAAK,EAAE,KAAK,CAAC;QACb,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,EAAE,CAAC;IACJ,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,iBAAiB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CACtC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB;;;OAGG;IACH,EAAE,CACA,SAAS,EAAE,gBAAgB,CAAC,SAAS,EACrC,EAAE,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAChD,IAAI,CAAC;IAER;;OAEG;IACH,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC;IAExE;;OAEG;IACH,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAE5D;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;OAEG;IACH,IAAI,IAAI,IAAI,CAAC;CACd"}
|
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
import { type EvmMovableCollateralAdapter, type TokenAmount } from '@hyperlane-xyz/sdk';
|
|
2
|
-
import type
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
2
|
+
import { type InventoryRoute, type MovableCollateralRoute, type Route } from './IStrategy.js';
|
|
3
|
+
export type RebalancerType = 'movableCollateral' | 'inventory';
|
|
4
|
+
export interface ExecutionResult<R extends Route = Route> {
|
|
5
|
+
route: R;
|
|
6
|
+
success: boolean;
|
|
7
|
+
error?: string;
|
|
8
|
+
txHash?: string;
|
|
9
|
+
reason?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface MovableCollateralExecutionResult extends ExecutionResult<MovableCollateralRoute> {
|
|
12
|
+
messageId: string;
|
|
13
|
+
}
|
|
14
|
+
export interface InventoryExecutionResult extends ExecutionResult<InventoryRoute> {
|
|
15
|
+
messageId?: string;
|
|
16
|
+
amountSent?: bigint;
|
|
17
|
+
}
|
|
18
|
+
export interface IRebalancer<R extends Route = Route, E extends ExecutionResult<R> = ExecutionResult<R>> {
|
|
19
|
+
readonly rebalancerType: RebalancerType;
|
|
20
|
+
rebalance(routes: R[]): Promise<E[]>;
|
|
21
|
+
}
|
|
22
|
+
export type IMovableCollateralRebalancer = IRebalancer<MovableCollateralRoute, MovableCollateralExecutionResult>;
|
|
23
|
+
export type IInventoryRebalancer = IRebalancer<InventoryRoute, InventoryExecutionResult>;
|
|
12
24
|
export type PreparedTransaction = {
|
|
13
25
|
populatedTx: Awaited<ReturnType<EvmMovableCollateralAdapter['populateRebalanceTx']>>;
|
|
14
|
-
route:
|
|
26
|
+
route: MovableCollateralRoute & {
|
|
27
|
+
intentId: string;
|
|
28
|
+
};
|
|
15
29
|
originTokenAmount: TokenAmount;
|
|
16
30
|
};
|
|
17
|
-
export type RebalanceMetrics = {
|
|
18
|
-
route: RebalanceRoute;
|
|
19
|
-
originTokenAmount: TokenAmount;
|
|
20
|
-
};
|
|
21
|
-
export type RebalanceExecutionResult = {
|
|
22
|
-
route: RebalanceRoute;
|
|
23
|
-
success: boolean;
|
|
24
|
-
messageId?: string;
|
|
25
|
-
txHash?: string;
|
|
26
|
-
error?: string;
|
|
27
|
-
};
|
|
28
|
-
export interface IRebalancer {
|
|
29
|
-
rebalance(routes: RebalanceRoute[]): Promise<RebalanceExecutionResult[]>;
|
|
30
|
-
}
|
|
31
31
|
//# sourceMappingURL=IRebalancer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IRebalancer.d.ts","sourceRoot":"","sources":["../../src/interfaces/IRebalancer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,2BAA2B,EAChC,KAAK,WAAW,EACjB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"IRebalancer.d.ts","sourceRoot":"","sources":["../../src/interfaces/IRebalancer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,2BAA2B,EAChC,KAAK,WAAW,EACjB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,KAAK,EACX,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,cAAc,GAAG,mBAAmB,GAAG,WAAW,CAAC;AAE/D,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK;IACtD,KAAK,EAAE,CAAC,CAAC;IACT,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gCAAiC,SAAQ,eAAe,CAAC,sBAAsB,CAAC;IAC/F,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,wBAAyB,SAAQ,eAAe,CAAC,cAAc,CAAC;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW,CAC1B,CAAC,SAAS,KAAK,GAAG,KAAK,EACvB,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IAEjD,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;CACtC;AAED,MAAM,MAAM,4BAA4B,GAAG,WAAW,CACpD,sBAAsB,EACtB,gCAAgC,CACjC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAC5C,cAAc,EACd,wBAAwB,CACzB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,OAAO,CAClB,UAAU,CAAC,2BAA2B,CAAC,qBAAqB,CAAC,CAAC,CAC/D,CAAC;IACF,KAAK,EAAE,sBAAsB,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,iBAAiB,EAAE,WAAW,CAAC;CAChC,CAAC"}
|