@hyperlane-xyz/rebalancer 2.0.0 → 3.0.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.
Files changed (209) hide show
  1. package/dist/bridges/LiFiBridge.d.ts +67 -0
  2. package/dist/bridges/LiFiBridge.d.ts.map +1 -0
  3. package/dist/bridges/LiFiBridge.js +386 -0
  4. package/dist/bridges/LiFiBridge.js.map +1 -0
  5. package/dist/config/RebalancerConfig.d.ts +7 -2
  6. package/dist/config/RebalancerConfig.d.ts.map +1 -1
  7. package/dist/config/RebalancerConfig.js +7 -4
  8. package/dist/config/RebalancerConfig.js.map +1 -1
  9. package/dist/config/RebalancerConfig.test.js +134 -1
  10. package/dist/config/RebalancerConfig.test.js.map +1 -1
  11. package/dist/config/types.d.ts +1016 -304
  12. package/dist/config/types.d.ts.map +1 -1
  13. package/dist/config/types.js +105 -10
  14. package/dist/config/types.js.map +1 -1
  15. package/dist/core/InventoryRebalancer.d.ts +190 -0
  16. package/dist/core/InventoryRebalancer.d.ts.map +1 -0
  17. package/dist/core/InventoryRebalancer.js +885 -0
  18. package/dist/core/InventoryRebalancer.js.map +1 -0
  19. package/dist/core/InventoryRebalancer.test.d.ts +2 -0
  20. package/dist/core/InventoryRebalancer.test.d.ts.map +1 -0
  21. package/dist/core/InventoryRebalancer.test.js +1351 -0
  22. package/dist/core/InventoryRebalancer.test.js.map +1 -0
  23. package/dist/core/Rebalancer.d.ts +11 -4
  24. package/dist/core/Rebalancer.d.ts.map +1 -1
  25. package/dist/core/Rebalancer.js +92 -9
  26. package/dist/core/Rebalancer.js.map +1 -1
  27. package/dist/core/Rebalancer.test.js +82 -49
  28. package/dist/core/Rebalancer.test.js.map +1 -1
  29. package/dist/core/RebalancerOrchestrator.d.ts +30 -9
  30. package/dist/core/RebalancerOrchestrator.d.ts.map +1 -1
  31. package/dist/core/RebalancerOrchestrator.js +79 -71
  32. package/dist/core/RebalancerOrchestrator.js.map +1 -1
  33. package/dist/core/RebalancerOrchestrator.test.d.ts +2 -0
  34. package/dist/core/RebalancerOrchestrator.test.d.ts.map +1 -0
  35. package/dist/core/RebalancerOrchestrator.test.js +714 -0
  36. package/dist/core/RebalancerOrchestrator.test.js.map +1 -0
  37. package/dist/core/RebalancerService.d.ts +7 -3
  38. package/dist/core/RebalancerService.d.ts.map +1 -1
  39. package/dist/core/RebalancerService.js +44 -24
  40. package/dist/core/RebalancerService.js.map +1 -1
  41. package/dist/core/RebalancerService.test.js +71 -109
  42. package/dist/core/RebalancerService.test.js.map +1 -1
  43. package/dist/e2e/collateral-deficit.e2e-test.js +1 -3
  44. package/dist/e2e/collateral-deficit.e2e-test.js.map +1 -1
  45. package/dist/e2e/composite.e2e-test.js.map +1 -1
  46. package/dist/e2e/harness/BridgeSetup.d.ts +6 -0
  47. package/dist/e2e/harness/BridgeSetup.d.ts.map +1 -1
  48. package/dist/e2e/harness/BridgeSetup.js +10 -1
  49. package/dist/e2e/harness/BridgeSetup.js.map +1 -1
  50. package/dist/e2e/harness/TestHelpers.d.ts.map +1 -1
  51. package/dist/e2e/harness/TestHelpers.js +1 -4
  52. package/dist/e2e/harness/TestHelpers.js.map +1 -1
  53. package/dist/e2e/harness/TestRebalancer.d.ts +1 -1
  54. package/dist/e2e/harness/TestRebalancer.d.ts.map +1 -1
  55. package/dist/e2e/harness/TestRebalancer.js +6 -7
  56. package/dist/e2e/harness/TestRebalancer.js.map +1 -1
  57. package/dist/e2e/minAmount.e2e-test.js +0 -1
  58. package/dist/e2e/minAmount.e2e-test.js.map +1 -1
  59. package/dist/e2e/weighted.e2e-test.js +0 -1
  60. package/dist/e2e/weighted.e2e-test.js.map +1 -1
  61. package/dist/factories/RebalancerContextFactory.d.ts +48 -6
  62. package/dist/factories/RebalancerContextFactory.d.ts.map +1 -1
  63. package/dist/factories/RebalancerContextFactory.js +170 -17
  64. package/dist/factories/RebalancerContextFactory.js.map +1 -1
  65. package/dist/index.d.ts +5 -5
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +1 -1
  68. package/dist/index.js.map +1 -1
  69. package/dist/interfaces/IExternalBridge.d.ts +101 -0
  70. package/dist/interfaces/IExternalBridge.d.ts.map +1 -0
  71. package/dist/interfaces/IExternalBridge.js +2 -0
  72. package/dist/interfaces/IExternalBridge.js.map +1 -0
  73. package/dist/interfaces/IMonitor.d.ts +1 -0
  74. package/dist/interfaces/IMonitor.d.ts.map +1 -1
  75. package/dist/interfaces/IRebalancer.d.ts +25 -25
  76. package/dist/interfaces/IRebalancer.d.ts.map +1 -1
  77. package/dist/interfaces/IStrategy.d.ts +36 -3
  78. package/dist/interfaces/IStrategy.d.ts.map +1 -1
  79. package/dist/interfaces/IStrategy.js +12 -1
  80. package/dist/interfaces/IStrategy.js.map +1 -1
  81. package/dist/metrics/PriceGetter.js +1 -1
  82. package/dist/metrics/PriceGetter.js.map +1 -1
  83. package/dist/metrics/scripts/metrics.d.ts +3 -3
  84. package/dist/monitor/Monitor.d.ts +12 -2
  85. package/dist/monitor/Monitor.d.ts.map +1 -1
  86. package/dist/monitor/Monitor.js +46 -1
  87. package/dist/monitor/Monitor.js.map +1 -1
  88. package/dist/service.js +40 -17
  89. package/dist/service.js.map +1 -1
  90. package/dist/strategy/BaseStrategy.d.ts +12 -6
  91. package/dist/strategy/BaseStrategy.d.ts.map +1 -1
  92. package/dist/strategy/BaseStrategy.js +56 -21
  93. package/dist/strategy/BaseStrategy.js.map +1 -1
  94. package/dist/strategy/CollateralDeficitStrategy.d.ts +1 -1
  95. package/dist/strategy/CollateralDeficitStrategy.d.ts.map +1 -1
  96. package/dist/strategy/CollateralDeficitStrategy.js +19 -11
  97. package/dist/strategy/CollateralDeficitStrategy.js.map +1 -1
  98. package/dist/strategy/CollateralDeficitStrategy.test.js +135 -2
  99. package/dist/strategy/CollateralDeficitStrategy.test.js.map +1 -1
  100. package/dist/strategy/CompositeStrategy.test.js +13 -0
  101. package/dist/strategy/CompositeStrategy.test.js.map +1 -1
  102. package/dist/strategy/MinAmountStrategy.test.js +4 -0
  103. package/dist/strategy/MinAmountStrategy.test.js.map +1 -1
  104. package/dist/strategy/StrategyFactory.d.ts +2 -1
  105. package/dist/strategy/StrategyFactory.d.ts.map +1 -1
  106. package/dist/strategy/StrategyFactory.js +24 -8
  107. package/dist/strategy/StrategyFactory.js.map +1 -1
  108. package/dist/strategy/WeightedStrategy.test.js +6 -0
  109. package/dist/strategy/WeightedStrategy.test.js.map +1 -1
  110. package/dist/test/helpers.d.ts +8 -7
  111. package/dist/test/helpers.d.ts.map +1 -1
  112. package/dist/test/helpers.js +23 -5
  113. package/dist/test/helpers.js.map +1 -1
  114. package/dist/test/lifiMocks.d.ts +51 -0
  115. package/dist/test/lifiMocks.d.ts.map +1 -0
  116. package/dist/test/lifiMocks.js +130 -0
  117. package/dist/test/lifiMocks.js.map +1 -0
  118. package/dist/tracking/ActionTracker.d.ts +33 -1
  119. package/dist/tracking/ActionTracker.d.ts.map +1 -1
  120. package/dist/tracking/ActionTracker.js +193 -22
  121. package/dist/tracking/ActionTracker.js.map +1 -1
  122. package/dist/tracking/ActionTracker.test.js +107 -19
  123. package/dist/tracking/ActionTracker.test.js.map +1 -1
  124. package/dist/tracking/IActionTracker.d.ts +47 -3
  125. package/dist/tracking/IActionTracker.d.ts.map +1 -1
  126. package/dist/tracking/InflightContextAdapter.d.ts.map +1 -1
  127. package/dist/tracking/InflightContextAdapter.js +24 -7
  128. package/dist/tracking/InflightContextAdapter.js.map +1 -1
  129. package/dist/tracking/InflightContextAdapter.test.js +7 -4
  130. package/dist/tracking/InflightContextAdapter.test.js.map +1 -1
  131. package/dist/tracking/types.d.ts +31 -2
  132. package/dist/tracking/types.d.ts.map +1 -1
  133. package/dist/utils/ExplorerClient.d.ts +2 -1
  134. package/dist/utils/ExplorerClient.d.ts.map +1 -1
  135. package/dist/utils/ExplorerClient.js +13 -8
  136. package/dist/utils/ExplorerClient.js.map +1 -1
  137. package/dist/utils/bridgeUtils.d.ts +27 -4
  138. package/dist/utils/bridgeUtils.d.ts.map +1 -1
  139. package/dist/utils/bridgeUtils.js +38 -0
  140. package/dist/utils/bridgeUtils.js.map +1 -1
  141. package/dist/utils/bridgeUtils.test.js +9 -0
  142. package/dist/utils/bridgeUtils.test.js.map +1 -1
  143. package/dist/utils/gasEstimation.d.ts +65 -0
  144. package/dist/utils/gasEstimation.d.ts.map +1 -0
  145. package/dist/utils/gasEstimation.js +176 -0
  146. package/dist/utils/gasEstimation.js.map +1 -0
  147. package/dist/utils/tokenUtils.d.ts +9 -1
  148. package/dist/utils/tokenUtils.d.ts.map +1 -1
  149. package/dist/utils/tokenUtils.js +11 -0
  150. package/dist/utils/tokenUtils.js.map +1 -1
  151. package/package.json +9 -7
  152. package/src/bridges/LiFiBridge.ts +538 -0
  153. package/src/config/RebalancerConfig.test.ts +160 -0
  154. package/src/config/RebalancerConfig.ts +14 -3
  155. package/src/config/types.ts +136 -10
  156. package/src/core/InventoryRebalancer.test.ts +1684 -0
  157. package/src/core/InventoryRebalancer.ts +1255 -0
  158. package/src/core/Rebalancer.test.ts +84 -30
  159. package/src/core/Rebalancer.ts +144 -23
  160. package/src/core/RebalancerOrchestrator.test.ts +860 -0
  161. package/src/core/RebalancerOrchestrator.ts +146 -95
  162. package/src/core/RebalancerService.test.ts +80 -123
  163. package/src/core/RebalancerService.ts +67 -33
  164. package/src/e2e/collateral-deficit.e2e-test.ts +2 -4
  165. package/src/e2e/composite.e2e-test.ts +5 -5
  166. package/src/e2e/harness/BridgeSetup.ts +28 -1
  167. package/src/e2e/harness/TestHelpers.ts +1 -4
  168. package/src/e2e/harness/TestRebalancer.ts +7 -7
  169. package/src/e2e/minAmount.e2e-test.ts +1 -2
  170. package/src/e2e/weighted.e2e-test.ts +1 -2
  171. package/src/factories/RebalancerContextFactory.ts +293 -24
  172. package/src/index.ts +20 -5
  173. package/src/interfaces/IExternalBridge.ts +115 -0
  174. package/src/interfaces/IMonitor.ts +1 -0
  175. package/src/interfaces/IRebalancer.ts +45 -29
  176. package/src/interfaces/IStrategy.ts +50 -3
  177. package/src/metrics/PriceGetter.ts +1 -1
  178. package/src/monitor/Monitor.ts +81 -2
  179. package/src/service.ts +59 -18
  180. package/src/strategy/BaseStrategy.ts +77 -24
  181. package/src/strategy/CollateralDeficitStrategy.test.ts +181 -4
  182. package/src/strategy/CollateralDeficitStrategy.ts +42 -15
  183. package/src/strategy/CompositeStrategy.test.ts +13 -0
  184. package/src/strategy/MinAmountStrategy.test.ts +4 -0
  185. package/src/strategy/StrategyFactory.ts +33 -6
  186. package/src/strategy/WeightedStrategy.test.ts +6 -0
  187. package/src/test/helpers.ts +39 -14
  188. package/src/test/lifiMocks.ts +174 -0
  189. package/src/tracking/ActionTracker.test.ts +122 -19
  190. package/src/tracking/ActionTracker.ts +284 -24
  191. package/src/tracking/IActionTracker.ts +58 -3
  192. package/src/tracking/InflightContextAdapter.test.ts +7 -4
  193. package/src/tracking/InflightContextAdapter.ts +42 -9
  194. package/src/tracking/types.ts +43 -2
  195. package/src/utils/ExplorerClient.ts +23 -10
  196. package/src/utils/bridgeUtils.test.ts +9 -0
  197. package/src/utils/bridgeUtils.ts +75 -6
  198. package/src/utils/gasEstimation.ts +272 -0
  199. package/src/utils/tokenUtils.ts +12 -0
  200. package/dist/tracking/index.d.ts +0 -7
  201. package/dist/tracking/index.d.ts.map +0 -1
  202. package/dist/tracking/index.js +0 -6
  203. package/dist/tracking/index.js.map +0 -1
  204. package/dist/utils/index.d.ts +0 -5
  205. package/dist/utils/index.d.ts.map +0 -1
  206. package/dist/utils/index.js +0 -5
  207. package/dist/utils/index.js.map +0 -1
  208. package/src/tracking/index.ts +0 -36
  209. 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 { getAllBridges, getStrategyChainNames } from '../config/types.js';
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, InMemoryStore, InflightContextAdapter, } from '../tracking/index.js';
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/index.js';
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
- static async create(config, multiProvider, multiProtocolProvider, registry, logger, warpCoreConfigOverride) {
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
- // Create MultiProtocolProvider (convert from MultiProvider if not provided)
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
- return StrategyFactory.createStrategy(this.config.strategyConfig, this.tokensByChainName, await this.getInitialTotalCollateral(), this.logger, metrics);
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
- createRebalancer(metrics) {
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,7 @@ export class RebalancerContextFactory {
132
172
  routersByDomain,
133
173
  bridges,
134
174
  rebalancerAddress,
175
+ inventorySignerAddress: this.config.inventorySigner,
135
176
  };
136
177
  // 6. Create ActionTracker
137
178
  const tracker = new ActionTracker(transferStore, intentStore, actionStore, explorerClient, multiProtocolCore, trackerConfig, this.logger);
@@ -145,6 +186,118 @@ export class RebalancerContextFactory {
145
186
  }, 'ActionTracker created successfully');
146
187
  return { tracker, adapter };
147
188
  }
189
+ /**
190
+ * Creates inventory components for inventory-based rebalancing.
191
+ * Returns null if inventory config is not available.
192
+ *
193
+ * @param actionTracker - ActionTracker instance for tracking inventory actions
194
+ */
195
+ async createInventoryRebalancerAndConfig(actionTracker) {
196
+ const { inventorySigner, externalBridges } = this.config;
197
+ if (!inventorySigner) {
198
+ this.logger.debug('Inventory config not available, skipping inventory components creation');
199
+ return null;
200
+ }
201
+ this.logger.debug({ warpRouteId: this.config.warpRouteId, inventorySigner }, 'Creating inventory components');
202
+ const inventoryChains = getStrategyChainNames(this.config.strategyConfig).filter((chainName) => {
203
+ const chainConfig = getStrategyChainConfig(this.config.strategyConfig, chainName);
204
+ return chainConfig?.executionType === ExecutionType.Inventory;
205
+ });
206
+ if (inventoryChains.length === 0) {
207
+ this.logger.debug('No inventory chains configured');
208
+ return null;
209
+ }
210
+ // Build registry dynamically from ExternalBridgeType enum
211
+ const externalBridgeRegistry = {};
212
+ for (const bridgeType of Object.values(ExternalBridgeType)) {
213
+ switch (bridgeType) {
214
+ case ExternalBridgeType.LiFi: {
215
+ const lifiConfig = externalBridges?.lifi;
216
+ if (lifiConfig?.integrator) {
217
+ externalBridgeRegistry[ExternalBridgeType.LiFi] = new LiFiBridge({
218
+ integrator: lifiConfig.integrator,
219
+ defaultSlippage: lifiConfig.defaultSlippage,
220
+ chainMetadata: this.multiProvider.metadata,
221
+ }, this.logger);
222
+ }
223
+ break;
224
+ }
225
+ default: {
226
+ // Exhaustive check - TypeScript will error if new enum value added
227
+ const _exhaustive = bridgeType;
228
+ throw new Error(`Unknown bridge type: ${_exhaustive}`);
229
+ }
230
+ }
231
+ }
232
+ if (Object.keys(externalBridgeRegistry).length === 0) {
233
+ this.logger.debug('No external bridges configured, skipping inventory components');
234
+ return null;
235
+ }
236
+ // 3. Build inventory config
237
+ const inventoryConfig = {
238
+ inventoryAddress: inventorySigner,
239
+ chains: inventoryChains,
240
+ };
241
+ // 4. Create InventoryRebalancer
242
+ // Use inventoryMultiProvider for inventory operations if available, otherwise fall back to multiProvider
243
+ const inventoryRebalancer = new InventoryRebalancer({
244
+ inventorySigner,
245
+ inventoryMultiProvider: this.inventoryMultiProvider,
246
+ inventoryChains,
247
+ }, actionTracker, externalBridgeRegistry, this.warpCore, this.multiProvider, this.logger);
248
+ this.logger.info({
249
+ inventoryChains,
250
+ inventorySigner,
251
+ }, 'Inventory components created successfully');
252
+ return { inventoryRebalancer, externalBridgeRegistry, inventoryConfig };
253
+ }
254
+ /**
255
+ * Creates all rebalancers based on config execution types.
256
+ * Returns an array of rebalancers (movableCollateral and/or inventory)
257
+ * along with metadata needed for monitor and orchestrator.
258
+ */
259
+ async createRebalancers(actionTracker, metrics) {
260
+ const rebalancers = [];
261
+ let externalBridgeRegistry = {};
262
+ let inventoryConfig;
263
+ // Check if any chains use movableCollateral execution type
264
+ const hasMovableCollateral = this.hasMovableCollateralChains();
265
+ if (hasMovableCollateral) {
266
+ const rebalancer = this.createMovableCollateralRebalancer(actionTracker, metrics);
267
+ rebalancers.push(rebalancer);
268
+ }
269
+ // Check if any chains use inventory execution type
270
+ const inventoryComponents = await this.createInventoryRebalancerAndConfig(actionTracker);
271
+ if (inventoryComponents) {
272
+ rebalancers.push(inventoryComponents.inventoryRebalancer);
273
+ externalBridgeRegistry = inventoryComponents.externalBridgeRegistry;
274
+ inventoryConfig = inventoryComponents.inventoryConfig;
275
+ }
276
+ return { rebalancers, externalBridgeRegistry, inventoryConfig };
277
+ }
278
+ /**
279
+ * Creates a RebalancerOrchestrator with all required dependencies.
280
+ */
281
+ createOrchestrator(options) {
282
+ this.logger.debug({ warpRouteId: this.config.warpRouteId }, 'Creating RebalancerOrchestrator');
283
+ return new RebalancerOrchestrator({
284
+ strategy: options.strategy,
285
+ actionTracker: options.actionTracker,
286
+ inflightContextAdapter: options.inflightContextAdapter,
287
+ rebalancerConfig: this.config,
288
+ logger: this.logger,
289
+ rebalancers: options.rebalancers,
290
+ externalBridgeRegistry: options.externalBridgeRegistry,
291
+ metrics: options.metrics,
292
+ });
293
+ }
294
+ hasMovableCollateralChains() {
295
+ return getStrategyChainNames(this.config.strategyConfig).some((chainName) => {
296
+ const chainConfig = getStrategyChainConfig(this.config.strategyConfig, chainName);
297
+ return (chainConfig?.executionType === ExecutionType.MovableCollateral ||
298
+ chainConfig?.executionType === undefined); // Default is movableCollateral
299
+ });
300
+ }
148
301
  async getInitialTotalCollateral() {
149
302
  let initialTotalCollateral = 0n;
150
303
  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
@@ -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, PreparedTransaction, RebalanceRoute, RebalanceExecutionResult, } from './interfaces/IRebalancer.js';
24
- export type { IStrategy, StrategyRoute, RawBalances, InflightContext, } from './interfaces/IStrategy.js';
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
@@ -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,EACd,wBAAwB,GACzB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,SAAS,EACT,aAAa,EACb,WAAW,EACX,eAAe,GAChB,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,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,YAAY,EACV,wBAAwB,EACxB,YAAY,GACb,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,GAChB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,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,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
@@ -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;AAoBvD,OAAO,EACL,gBAAgB,EAEhB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAGlC,QAAQ;AACR,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAKzD,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;AAY9E,UAAU;AACV,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,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,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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IExternalBridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IExternalBridge.js","sourceRoot":"","sources":["../../src/interfaces/IExternalBridge.ts"],"names":[],"mappings":""}
@@ -19,6 +19,7 @@ export type MonitorEvent = {
19
19
  bridgedSupply?: bigint;
20
20
  }[];
21
21
  confirmedBlockTags: ConfirmedBlockTags;
22
+ inventoryBalances?: ChainMap<bigint>;
22
23
  };
23
24
  /**
24
25
  * Interface for a monitoring service that tracks token information across different chains.
@@ -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;CACxC,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
+ {"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 { StrategyRoute } from './IStrategy.js';
3
- /**
4
- * RebalanceRoute extends StrategyRoute with a required intentId for tracking.
5
- * The intentId is assigned by RebalancerService before execution and links
6
- * to the corresponding RebalanceIntent in the tracking system.
7
- */
8
- export type RebalanceRoute = StrategyRoute & {
9
- /** Links to the RebalanceIntent that this route fulfills */
10
- intentId: string;
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: RebalanceRoute;
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,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG;IAC3C,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,OAAO,CAClB,UAAU,CAAC,2BAA2B,CAAC,qBAAqB,CAAC,CAAC,CAC/D,CAAC;IACF,KAAK,EAAE,cAAc,CAAC;IACtB,iBAAiB,EAAE,WAAW,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,cAAc,CAAC;IACtB,iBAAiB,EAAE,WAAW,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC;CAC1E"}
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"}
@@ -1,22 +1,55 @@
1
1
  import { type ChainMap, type ChainName } from '@hyperlane-xyz/sdk';
2
2
  import type { Address } from '@hyperlane-xyz/utils';
3
+ import { ExternalBridgeType } from '../config/types.js';
4
+ import { ExecutionMethod } from '../tracking/types.js';
3
5
  export type RawBalances = ChainMap<bigint>;
4
6
  export interface Route {
5
7
  origin: ChainName;
6
8
  destination: ChainName;
7
9
  amount: bigint;
10
+ /** Execution method used for this rebalance */
11
+ executionMethod?: ExecutionMethod;
8
12
  }
9
- export interface StrategyRoute extends Route {
13
+ export interface RouteWithContext extends Route {
14
+ /** For inventory intents: sum of complete inventory_deposit actions (message delivered) */
15
+ deliveredAmount?: bigint;
16
+ /** For inventory intents: sum of in_progress inventory_deposit actions (tx confirmed, message pending) */
17
+ awaitingDeliveryAmount?: bigint;
18
+ }
19
+ /**
20
+ * Route using movable collateral execution (on-chain rebalance via bridge)
21
+ */
22
+ export interface MovableCollateralRoute extends Route {
23
+ executionType: 'movableCollateral';
10
24
  bridge: Address;
11
25
  }
26
+ /**
27
+ * Route using inventory execution (external bridge + transferRemote)
28
+ */
29
+ export interface InventoryRoute extends Route {
30
+ executionType: 'inventory';
31
+ externalBridge: ExternalBridgeType;
32
+ }
33
+ /**
34
+ * Discriminated union of route types by executionType
35
+ */
36
+ export type StrategyRoute = MovableCollateralRoute | InventoryRoute;
37
+ /**
38
+ * Type guard to check if a route is a MovableCollateralRoute
39
+ */
40
+ export declare function isMovableCollateralRoute(route: StrategyRoute): route is MovableCollateralRoute;
41
+ /**
42
+ * Type guard to check if a route is an InventoryRoute
43
+ */
44
+ export declare function isInventoryRoute(route: StrategyRoute): route is InventoryRoute;
12
45
  export type InflightContext = {
13
46
  /**
14
47
  * In-flight rebalances from ActionTracker.
15
48
  * Uses Route[] because recovered intents (from Explorer startup recovery)
16
49
  * don't have bridge information. Some routes may have bridge at runtime.
17
50
  */
18
- pendingRebalances: Route[];
19
- pendingTransfers: Route[];
51
+ pendingRebalances: RouteWithContext[];
52
+ pendingTransfers: RouteWithContext[];
20
53
  /** Routes from earlier strategies - always have bridge */
21
54
  proposedRebalances?: StrategyRoute[];
22
55
  };