@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.
Files changed (213) 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 +8 -2
  6. package/dist/config/RebalancerConfig.d.ts.map +1 -1
  7. package/dist/config/RebalancerConfig.js +9 -4
  8. package/dist/config/RebalancerConfig.js.map +1 -1
  9. package/dist/config/RebalancerConfig.test.js +135 -1
  10. package/dist/config/RebalancerConfig.test.js.map +1 -1
  11. package/dist/config/types.d.ts +1023 -304
  12. package/dist/config/types.d.ts.map +1 -1
  13. package/dist/config/types.js +113 -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 +892 -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 +1382 -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 +719 -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 +74 -110
  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/ForkIndexer.d.ts.map +1 -1
  51. package/dist/e2e/harness/ForkIndexer.js +1 -0
  52. package/dist/e2e/harness/ForkIndexer.js.map +1 -1
  53. package/dist/e2e/harness/TestHelpers.d.ts.map +1 -1
  54. package/dist/e2e/harness/TestHelpers.js +1 -4
  55. package/dist/e2e/harness/TestHelpers.js.map +1 -1
  56. package/dist/e2e/harness/TestRebalancer.d.ts +1 -1
  57. package/dist/e2e/harness/TestRebalancer.d.ts.map +1 -1
  58. package/dist/e2e/harness/TestRebalancer.js +9 -9
  59. package/dist/e2e/harness/TestRebalancer.js.map +1 -1
  60. package/dist/e2e/minAmount.e2e-test.js +0 -1
  61. package/dist/e2e/minAmount.e2e-test.js.map +1 -1
  62. package/dist/e2e/weighted.e2e-test.js +0 -1
  63. package/dist/e2e/weighted.e2e-test.js.map +1 -1
  64. package/dist/factories/RebalancerContextFactory.d.ts +48 -6
  65. package/dist/factories/RebalancerContextFactory.d.ts.map +1 -1
  66. package/dist/factories/RebalancerContextFactory.js +171 -17
  67. package/dist/factories/RebalancerContextFactory.js.map +1 -1
  68. package/dist/index.d.ts +6 -6
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +2 -2
  71. package/dist/index.js.map +1 -1
  72. package/dist/interfaces/IExternalBridge.d.ts +101 -0
  73. package/dist/interfaces/IExternalBridge.d.ts.map +1 -0
  74. package/dist/interfaces/IExternalBridge.js +2 -0
  75. package/dist/interfaces/IExternalBridge.js.map +1 -0
  76. package/dist/interfaces/IMonitor.d.ts +1 -0
  77. package/dist/interfaces/IMonitor.d.ts.map +1 -1
  78. package/dist/interfaces/IRebalancer.d.ts +25 -25
  79. package/dist/interfaces/IRebalancer.d.ts.map +1 -1
  80. package/dist/interfaces/IStrategy.d.ts +36 -3
  81. package/dist/interfaces/IStrategy.d.ts.map +1 -1
  82. package/dist/interfaces/IStrategy.js +12 -1
  83. package/dist/interfaces/IStrategy.js.map +1 -1
  84. package/dist/metrics/PriceGetter.js +1 -1
  85. package/dist/metrics/PriceGetter.js.map +1 -1
  86. package/dist/metrics/scripts/metrics.d.ts +3 -3
  87. package/dist/monitor/Monitor.d.ts +12 -2
  88. package/dist/monitor/Monitor.d.ts.map +1 -1
  89. package/dist/monitor/Monitor.js +46 -1
  90. package/dist/monitor/Monitor.js.map +1 -1
  91. package/dist/service.js +40 -17
  92. package/dist/service.js.map +1 -1
  93. package/dist/strategy/BaseStrategy.d.ts +12 -6
  94. package/dist/strategy/BaseStrategy.d.ts.map +1 -1
  95. package/dist/strategy/BaseStrategy.js +56 -21
  96. package/dist/strategy/BaseStrategy.js.map +1 -1
  97. package/dist/strategy/CollateralDeficitStrategy.d.ts +1 -1
  98. package/dist/strategy/CollateralDeficitStrategy.d.ts.map +1 -1
  99. package/dist/strategy/CollateralDeficitStrategy.js +19 -11
  100. package/dist/strategy/CollateralDeficitStrategy.js.map +1 -1
  101. package/dist/strategy/CollateralDeficitStrategy.test.js +135 -2
  102. package/dist/strategy/CollateralDeficitStrategy.test.js.map +1 -1
  103. package/dist/strategy/CompositeStrategy.test.js +13 -0
  104. package/dist/strategy/CompositeStrategy.test.js.map +1 -1
  105. package/dist/strategy/MinAmountStrategy.test.js +4 -0
  106. package/dist/strategy/MinAmountStrategy.test.js.map +1 -1
  107. package/dist/strategy/StrategyFactory.d.ts +2 -1
  108. package/dist/strategy/StrategyFactory.d.ts.map +1 -1
  109. package/dist/strategy/StrategyFactory.js +24 -8
  110. package/dist/strategy/StrategyFactory.js.map +1 -1
  111. package/dist/strategy/WeightedStrategy.test.js +6 -0
  112. package/dist/strategy/WeightedStrategy.test.js.map +1 -1
  113. package/dist/test/helpers.d.ts +8 -7
  114. package/dist/test/helpers.d.ts.map +1 -1
  115. package/dist/test/helpers.js +23 -5
  116. package/dist/test/helpers.js.map +1 -1
  117. package/dist/test/lifiMocks.d.ts +51 -0
  118. package/dist/test/lifiMocks.d.ts.map +1 -0
  119. package/dist/test/lifiMocks.js +130 -0
  120. package/dist/test/lifiMocks.js.map +1 -0
  121. package/dist/tracking/ActionTracker.d.ts +34 -1
  122. package/dist/tracking/ActionTracker.d.ts.map +1 -1
  123. package/dist/tracking/ActionTracker.js +233 -26
  124. package/dist/tracking/ActionTracker.js.map +1 -1
  125. package/dist/tracking/ActionTracker.test.js +380 -19
  126. package/dist/tracking/ActionTracker.test.js.map +1 -1
  127. package/dist/tracking/IActionTracker.d.ts +48 -3
  128. package/dist/tracking/IActionTracker.d.ts.map +1 -1
  129. package/dist/tracking/InflightContextAdapter.d.ts.map +1 -1
  130. package/dist/tracking/InflightContextAdapter.js +24 -7
  131. package/dist/tracking/InflightContextAdapter.js.map +1 -1
  132. package/dist/tracking/InflightContextAdapter.test.js +7 -4
  133. package/dist/tracking/InflightContextAdapter.test.js.map +1 -1
  134. package/dist/tracking/types.d.ts +33 -2
  135. package/dist/tracking/types.d.ts.map +1 -1
  136. package/dist/utils/ExplorerClient.d.ts +3 -1
  137. package/dist/utils/ExplorerClient.d.ts.map +1 -1
  138. package/dist/utils/ExplorerClient.js +16 -8
  139. package/dist/utils/ExplorerClient.js.map +1 -1
  140. package/dist/utils/bridgeUtils.d.ts +27 -4
  141. package/dist/utils/bridgeUtils.d.ts.map +1 -1
  142. package/dist/utils/bridgeUtils.js +38 -0
  143. package/dist/utils/bridgeUtils.js.map +1 -1
  144. package/dist/utils/bridgeUtils.test.js +9 -0
  145. package/dist/utils/bridgeUtils.test.js.map +1 -1
  146. package/dist/utils/gasEstimation.d.ts +65 -0
  147. package/dist/utils/gasEstimation.d.ts.map +1 -0
  148. package/dist/utils/gasEstimation.js +176 -0
  149. package/dist/utils/gasEstimation.js.map +1 -0
  150. package/dist/utils/tokenUtils.d.ts +9 -1
  151. package/dist/utils/tokenUtils.d.ts.map +1 -1
  152. package/dist/utils/tokenUtils.js +11 -0
  153. package/dist/utils/tokenUtils.js.map +1 -1
  154. package/package.json +9 -7
  155. package/src/bridges/LiFiBridge.ts +538 -0
  156. package/src/config/RebalancerConfig.test.ts +162 -0
  157. package/src/config/RebalancerConfig.ts +21 -3
  158. package/src/config/types.ts +147 -10
  159. package/src/core/InventoryRebalancer.test.ts +1721 -0
  160. package/src/core/InventoryRebalancer.ts +1265 -0
  161. package/src/core/Rebalancer.test.ts +84 -30
  162. package/src/core/Rebalancer.ts +144 -23
  163. package/src/core/RebalancerOrchestrator.test.ts +869 -0
  164. package/src/core/RebalancerOrchestrator.ts +146 -95
  165. package/src/core/RebalancerService.test.ts +86 -124
  166. package/src/core/RebalancerService.ts +67 -33
  167. package/src/e2e/collateral-deficit.e2e-test.ts +2 -4
  168. package/src/e2e/composite.e2e-test.ts +5 -5
  169. package/src/e2e/harness/BridgeSetup.ts +28 -1
  170. package/src/e2e/harness/ForkIndexer.ts +1 -0
  171. package/src/e2e/harness/TestHelpers.ts +1 -4
  172. package/src/e2e/harness/TestRebalancer.ts +10 -7
  173. package/src/e2e/minAmount.e2e-test.ts +1 -2
  174. package/src/e2e/weighted.e2e-test.ts +1 -2
  175. package/src/factories/RebalancerContextFactory.ts +294 -24
  176. package/src/index.ts +22 -5
  177. package/src/interfaces/IExternalBridge.ts +115 -0
  178. package/src/interfaces/IMonitor.ts +1 -0
  179. package/src/interfaces/IRebalancer.ts +45 -29
  180. package/src/interfaces/IStrategy.ts +50 -3
  181. package/src/metrics/PriceGetter.ts +1 -1
  182. package/src/monitor/Monitor.ts +81 -2
  183. package/src/service.ts +59 -18
  184. package/src/strategy/BaseStrategy.ts +77 -24
  185. package/src/strategy/CollateralDeficitStrategy.test.ts +181 -4
  186. package/src/strategy/CollateralDeficitStrategy.ts +42 -15
  187. package/src/strategy/CompositeStrategy.test.ts +13 -0
  188. package/src/strategy/MinAmountStrategy.test.ts +4 -0
  189. package/src/strategy/StrategyFactory.ts +33 -6
  190. package/src/strategy/WeightedStrategy.test.ts +6 -0
  191. package/src/test/helpers.ts +39 -14
  192. package/src/test/lifiMocks.ts +174 -0
  193. package/src/tracking/ActionTracker.test.ts +443 -19
  194. package/src/tracking/ActionTracker.ts +339 -28
  195. package/src/tracking/IActionTracker.ts +59 -3
  196. package/src/tracking/InflightContextAdapter.test.ts +7 -4
  197. package/src/tracking/InflightContextAdapter.ts +42 -9
  198. package/src/tracking/types.ts +45 -2
  199. package/src/utils/ExplorerClient.ts +27 -10
  200. package/src/utils/bridgeUtils.test.ts +9 -0
  201. package/src/utils/bridgeUtils.ts +75 -6
  202. package/src/utils/gasEstimation.ts +272 -0
  203. package/src/utils/tokenUtils.ts +12 -0
  204. package/dist/tracking/index.d.ts +0 -7
  205. package/dist/tracking/index.d.ts.map +0 -1
  206. package/dist/tracking/index.js +0 -6
  207. package/dist/tracking/index.js.map +0 -1
  208. package/dist/utils/index.d.ts +0 -5
  209. package/dist/utils/index.d.ts.map +0 -1
  210. package/dist/utils/index.js +0 -5
  211. package/dist/utils/index.js.map +0 -1
  212. package/src/tracking/index.ts +0 -36
  213. package/src/utils/index.ts +0 -4
@@ -4,8 +4,43 @@ import { ethers } from 'ethers';
4
4
  import { pino } from 'pino';
5
5
  import Sinon from 'sinon';
6
6
  import { HyperlaneCore } from '@hyperlane-xyz/sdk';
7
- import { buildTestRebalanceRoute, createRebalancerTestContext, } from '../test/helpers.js';
7
+ import { buildTestMovableCollateralRoute, createRebalancerTestContext, } from '../test/helpers.js';
8
8
  import { Rebalancer } from './Rebalancer.js';
9
+ function createMockActionTracker() {
10
+ return {
11
+ initialize: Sinon.stub().resolves(),
12
+ createRebalanceIntent: Sinon.stub().callsFake(async () => ({
13
+ id: `intent-${Date.now()}`,
14
+ status: 'not_started',
15
+ })),
16
+ createRebalanceAction: Sinon.stub().resolves(),
17
+ completeRebalanceAction: Sinon.stub().resolves(),
18
+ failRebalanceAction: Sinon.stub().resolves(),
19
+ completeRebalanceIntent: Sinon.stub().resolves(),
20
+ cancelRebalanceIntent: Sinon.stub().resolves(),
21
+ failRebalanceIntent: Sinon.stub().resolves(),
22
+ syncTransfers: Sinon.stub().resolves(),
23
+ syncRebalanceIntents: Sinon.stub().resolves(),
24
+ syncRebalanceActions: Sinon.stub().resolves(),
25
+ syncInventoryMovementActions: Sinon.stub().resolves({
26
+ completed: 0,
27
+ failed: 0,
28
+ }),
29
+ logStoreContents: Sinon.stub().resolves(),
30
+ getInProgressTransfers: Sinon.stub().resolves([]),
31
+ getActiveRebalanceIntents: Sinon.stub().resolves([]),
32
+ getTransfersByDestination: Sinon.stub().resolves([]),
33
+ getRebalanceIntentsByDestination: Sinon.stub().resolves([]),
34
+ getTransfer: Sinon.stub().resolves(undefined),
35
+ getRebalanceIntent: Sinon.stub().resolves(undefined),
36
+ getRebalanceAction: Sinon.stub().resolves(undefined),
37
+ getInProgressActions: Sinon.stub().resolves([]),
38
+ getPartiallyFulfilledInventoryIntents: Sinon.stub().resolves([]),
39
+ getActionsByType: Sinon.stub().resolves([]),
40
+ getActionsForIntent: Sinon.stub().resolves([]),
41
+ getInflightInventoryMovements: Sinon.stub().resolves(0n),
42
+ };
43
+ }
9
44
  chai.use(chaiAsPromised);
10
45
  const testLogger = pino({ level: 'silent' });
11
46
  describe('Rebalancer', () => {
@@ -19,7 +54,7 @@ describe('Rebalancer', () => {
19
54
  describe('rebalance()', () => {
20
55
  it('should return empty array for empty routes', async () => {
21
56
  const ctx = createRebalancerTestContext();
22
- const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, testLogger);
57
+ const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, createMockActionTracker(), testLogger);
23
58
  const results = await rebalancer.rebalance([]);
24
59
  expect(results).to.deep.equal([]);
25
60
  });
@@ -30,26 +65,24 @@ describe('Rebalancer', () => {
30
65
  id: '0x1111111111111111111111111111111111111111111111111111111111111111',
31
66
  },
32
67
  ]);
33
- const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, testLogger);
34
- const route = buildTestRebalanceRoute({
68
+ const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, createMockActionTracker(), testLogger);
69
+ const route = buildTestMovableCollateralRoute({
35
70
  origin: 'ethereum',
36
71
  destination: 'arbitrum',
37
72
  });
38
73
  const results = await rebalancer.rebalance([route]);
39
74
  expect(results).to.have.lengthOf(1);
40
75
  expect(results[0].success).to.be.true;
41
- expect(results[0].route).to.deep.equal(route);
42
76
  });
43
77
  it('should return failure results for routes that fail preparation', async () => {
44
78
  const ctx = createRebalancerTestContext(['ethereum', 'arbitrum'], {
45
79
  ethereum: { isRebalancer: false },
46
80
  });
47
- const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, testLogger);
48
- const route = buildTestRebalanceRoute();
81
+ const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, createMockActionTracker(), testLogger);
82
+ const route = buildTestMovableCollateralRoute();
49
83
  const results = await rebalancer.rebalance([route]);
50
84
  expect(results).to.have.lengthOf(1);
51
85
  expect(results[0].success).to.be.false;
52
- expect(results[0].route).to.deep.equal(route);
53
86
  });
54
87
  it('should handle mixed success and failure results', async () => {
55
88
  const ctx = createRebalancerTestContext(['ethereum', 'arbitrum', 'optimism'], {
@@ -68,13 +101,13 @@ describe('Rebalancer', () => {
68
101
  name: 'optimism',
69
102
  domainId: 10,
70
103
  },
71
- }, ctx.tokensByChainName, ctx.multiProvider, testLogger);
104
+ }, ctx.tokensByChainName, ctx.multiProvider, createMockActionTracker(), testLogger);
72
105
  const routes = [
73
- buildTestRebalanceRoute({
106
+ buildTestMovableCollateralRoute({
74
107
  origin: 'ethereum',
75
108
  destination: 'arbitrum',
76
109
  }),
77
- buildTestRebalanceRoute({
110
+ buildTestMovableCollateralRoute({
78
111
  origin: 'optimism',
79
112
  destination: 'arbitrum',
80
113
  }),
@@ -90,8 +123,8 @@ describe('Rebalancer', () => {
90
123
  describe('validateRoute()', () => {
91
124
  it('should fail when origin token not found', async () => {
92
125
  const ctx = createRebalancerTestContext(['arbitrum']);
93
- const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, testLogger);
94
- const route = buildTestRebalanceRoute({
126
+ const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, createMockActionTracker(), testLogger);
127
+ const route = buildTestMovableCollateralRoute({
95
128
  origin: 'ethereum',
96
129
  destination: 'arbitrum',
97
130
  });
@@ -102,8 +135,8 @@ describe('Rebalancer', () => {
102
135
  });
103
136
  it('should fail when destination token not found', async () => {
104
137
  const ctx = createRebalancerTestContext(['ethereum']);
105
- const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, testLogger);
106
- const route = buildTestRebalanceRoute({
138
+ const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, createMockActionTracker(), testLogger);
139
+ const route = buildTestMovableCollateralRoute({
107
140
  origin: 'ethereum',
108
141
  destination: 'arbitrum',
109
142
  });
@@ -115,8 +148,8 @@ describe('Rebalancer', () => {
115
148
  const ctx = createRebalancerTestContext(['ethereum', 'arbitrum'], {
116
149
  ethereum: { isRebalancer: false },
117
150
  });
118
- const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, testLogger);
119
- const route = buildTestRebalanceRoute();
151
+ const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, createMockActionTracker(), testLogger);
152
+ const route = buildTestMovableCollateralRoute();
120
153
  const results = await rebalancer.rebalance([route]);
121
154
  expect(results).to.have.lengthOf(1);
122
155
  expect(results[0].success).to.be.false;
@@ -127,8 +160,8 @@ describe('Rebalancer', () => {
127
160
  allowedDestination: '0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF',
128
161
  },
129
162
  });
130
- const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, testLogger);
131
- const route = buildTestRebalanceRoute();
163
+ const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, createMockActionTracker(), testLogger);
164
+ const route = buildTestMovableCollateralRoute();
132
165
  const results = await rebalancer.rebalance([route]);
133
166
  expect(results).to.have.lengthOf(1);
134
167
  expect(results[0].success).to.be.false;
@@ -137,8 +170,8 @@ describe('Rebalancer', () => {
137
170
  const ctx = createRebalancerTestContext(['ethereum', 'arbitrum'], {
138
171
  ethereum: { isBridgeAllowed: false },
139
172
  });
140
- const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, testLogger);
141
- const route = buildTestRebalanceRoute();
173
+ const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, createMockActionTracker(), testLogger);
174
+ const route = buildTestMovableCollateralRoute();
142
175
  const results = await rebalancer.rebalance([route]);
143
176
  expect(results).to.have.lengthOf(1);
144
177
  expect(results[0].success).to.be.false;
@@ -149,8 +182,8 @@ describe('Rebalancer', () => {
149
182
  const ctx = createRebalancerTestContext(['ethereum', 'arbitrum'], {
150
183
  ethereum: { throwOnQuotes: new Error('Quote fetch failed') },
151
184
  });
152
- const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, testLogger);
153
- const route = buildTestRebalanceRoute();
185
+ const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, createMockActionTracker(), testLogger);
186
+ const route = buildTestMovableCollateralRoute();
154
187
  const results = await rebalancer.rebalance([route]);
155
188
  expect(results).to.have.lengthOf(1);
156
189
  expect(results[0].success).to.be.false;
@@ -159,8 +192,8 @@ describe('Rebalancer', () => {
159
192
  const ctx = createRebalancerTestContext(['ethereum', 'arbitrum'], {
160
193
  ethereum: { throwOnPopulate: new Error('Populate failed') },
161
194
  });
162
- const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, testLogger);
163
- const route = buildTestRebalanceRoute();
195
+ const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, createMockActionTracker(), testLogger);
196
+ const route = buildTestMovableCollateralRoute();
164
197
  const results = await rebalancer.rebalance([route]);
165
198
  expect(results).to.have.lengthOf(1);
166
199
  expect(results[0].success).to.be.false;
@@ -175,8 +208,8 @@ describe('Rebalancer', () => {
175
208
  id: '0xMessageId111111111111111111111111111111111111111111111111111111',
176
209
  },
177
210
  ]);
178
- const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, testLogger);
179
- const route = buildTestRebalanceRoute();
211
+ const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, createMockActionTracker(), testLogger);
212
+ const route = buildTestMovableCollateralRoute();
180
213
  const results = await rebalancer.rebalance([route]);
181
214
  expect(results).to.have.lengthOf(1);
182
215
  expect(results[0].success).to.be.false;
@@ -208,13 +241,13 @@ describe('Rebalancer', () => {
208
241
  name: 'optimism',
209
242
  domainId: 10,
210
243
  },
211
- }, { ...ctx.tokensByChainName, optimism: ctx.tokensByChainName.ethereum }, ctx.multiProvider, testLogger);
244
+ }, { ...ctx.tokensByChainName, optimism: ctx.tokensByChainName.ethereum }, ctx.multiProvider, createMockActionTracker(), testLogger);
212
245
  const routes = [
213
- buildTestRebalanceRoute({
246
+ buildTestMovableCollateralRoute({
214
247
  origin: 'ethereum',
215
248
  destination: 'arbitrum',
216
249
  }),
217
- buildTestRebalanceRoute({
250
+ buildTestMovableCollateralRoute({
218
251
  origin: 'optimism',
219
252
  destination: 'arbitrum',
220
253
  }),
@@ -246,17 +279,17 @@ describe('Rebalancer', () => {
246
279
  id: '0x1111111111111111111111111111111111111111111111111111111111111111',
247
280
  },
248
281
  ]);
249
- const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, testLogger);
282
+ const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, createMockActionTracker(), testLogger);
250
283
  const routes = [
251
- buildTestRebalanceRoute({
284
+ buildTestMovableCollateralRoute({
252
285
  origin: 'ethereum',
253
286
  destination: 'arbitrum',
254
287
  }),
255
- buildTestRebalanceRoute({
288
+ buildTestMovableCollateralRoute({
256
289
  origin: 'ethereum',
257
290
  destination: 'optimism',
258
291
  }),
259
- buildTestRebalanceRoute({
292
+ buildTestMovableCollateralRoute({
260
293
  origin: 'optimism',
261
294
  destination: 'arbitrum',
262
295
  }),
@@ -269,8 +302,8 @@ describe('Rebalancer', () => {
269
302
  it('should return error result when send fails', async () => {
270
303
  const ctx = createRebalancerTestContext(['ethereum', 'arbitrum']);
271
304
  ctx.multiProvider.sendTransaction = Sinon.stub().rejects(new Error('Send failed'));
272
- const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, testLogger);
273
- const route = buildTestRebalanceRoute();
305
+ const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, createMockActionTracker(), testLogger);
306
+ const route = buildTestMovableCollateralRoute();
274
307
  const results = await rebalancer.rebalance([route]);
275
308
  expect(results).to.have.lengthOf(1);
276
309
  expect(results[0].success).to.be.false;
@@ -295,12 +328,12 @@ describe('Rebalancer', () => {
295
328
  id: '0xMessageId111111111111111111111111111111111111111111111111111111',
296
329
  },
297
330
  ]);
298
- const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, testLogger);
331
+ const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, createMockActionTracker(), testLogger);
299
332
  const routes = [
300
- buildTestRebalanceRoute({
333
+ buildTestMovableCollateralRoute({
301
334
  amount: ethers.utils.parseEther('100').toBigInt(),
302
335
  }),
303
- buildTestRebalanceRoute({
336
+ buildTestMovableCollateralRoute({
304
337
  amount: ethers.utils.parseEther('200').toBigInt(),
305
338
  }),
306
339
  ];
@@ -330,14 +363,14 @@ describe('Rebalancer', () => {
330
363
  id: '0x1111111111111111111111111111111111111111111111111111111111111111',
331
364
  },
332
365
  ]);
333
- const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, testLogger);
366
+ const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, createMockActionTracker(), testLogger);
334
367
  const routes = [
335
- buildTestRebalanceRoute({
368
+ buildTestMovableCollateralRoute({
336
369
  origin: 'ethereum',
337
370
  destination: 'arbitrum',
338
371
  amount: ethers.utils.parseEther('100').toBigInt(),
339
372
  }),
340
- buildTestRebalanceRoute({
373
+ buildTestMovableCollateralRoute({
341
374
  origin: 'ethereum',
342
375
  destination: 'optimism',
343
376
  amount: ethers.utils.parseEther('200').toBigInt(),
@@ -354,8 +387,8 @@ describe('Rebalancer', () => {
354
387
  sandbox
355
388
  .stub(HyperlaneCore, 'getDispatchedMessages')
356
389
  .returns([{ id: expectedMessageId }]);
357
- const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, testLogger);
358
- const route = buildTestRebalanceRoute();
390
+ const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, createMockActionTracker(), testLogger);
391
+ const route = buildTestMovableCollateralRoute();
359
392
  const results = await rebalancer.rebalance([route]);
360
393
  expect(results).to.have.lengthOf(1);
361
394
  expect(results[0].success).to.be.true;
@@ -364,13 +397,13 @@ describe('Rebalancer', () => {
364
397
  it('should return success: false when no Dispatch event found', async () => {
365
398
  const ctx = createRebalancerTestContext(['ethereum', 'arbitrum']);
366
399
  sandbox.stub(HyperlaneCore, 'getDispatchedMessages').returns([]);
367
- const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, testLogger);
368
- const route = buildTestRebalanceRoute();
400
+ const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, createMockActionTracker(), testLogger);
401
+ const route = buildTestMovableCollateralRoute();
369
402
  const results = await rebalancer.rebalance([route]);
370
403
  expect(results).to.have.lengthOf(1);
371
404
  expect(results[0].success).to.be.false;
372
405
  expect(results[0].error).to.include('no Dispatch event found');
373
- expect(results[0].messageId).to.be.undefined;
406
+ expect(results[0].messageId).to.equal('');
374
407
  });
375
408
  it('should include txHash in result', async () => {
376
409
  const ctx = createRebalancerTestContext(['ethereum', 'arbitrum']);
@@ -380,8 +413,8 @@ describe('Rebalancer', () => {
380
413
  id: '0x2222222222222222222222222222222222222222222222222222222222222222',
381
414
  },
382
415
  ]);
383
- const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, testLogger);
384
- const route = buildTestRebalanceRoute();
416
+ const rebalancer = new Rebalancer(ctx.warpCore, ctx.chainMetadata, ctx.tokensByChainName, ctx.multiProvider, createMockActionTracker(), testLogger);
417
+ const route = buildTestMovableCollateralRoute();
385
418
  const results = await rebalancer.rebalance([route]);
386
419
  expect(results).to.have.lengthOf(1);
387
420
  expect(results[0].txHash).to.equal(expectedTxHash);
@@ -1 +1 @@
1
- {"version":3,"file":"Rebalancer.test.js","sourceRoot":"","sources":["../../src/core/Rebalancer.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Rebalancer.test.js","sourceRoot":"","sources":["../../src/core/Rebalancer.test.ts"],"names":[],"mappings":"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"}
@@ -1,35 +1,56 @@
1
1
  import { Logger } from 'pino';
2
- import { type MultiProvider } from '@hyperlane-xyz/sdk';
3
2
  import { RebalancerConfig } from '../config/RebalancerConfig.js';
3
+ import type { ExternalBridgeRegistry } from '../interfaces/IExternalBridge.js';
4
4
  import { type MonitorEvent } from '../interfaces/IMonitor.js';
5
5
  import type { IRebalancer } from '../interfaces/IRebalancer.js';
6
- import type { IStrategy } from '../interfaces/IStrategy.js';
6
+ import type { IStrategy, StrategyRoute } from '../interfaces/IStrategy.js';
7
7
  import { Metrics } from '../metrics/Metrics.js';
8
- import { type IActionTracker, InflightContextAdapter } from '../tracking/index.js';
8
+ import type { IActionTracker } from '../tracking/IActionTracker.js';
9
+ import { InflightContextAdapter } from '../tracking/InflightContextAdapter.js';
10
+ /**
11
+ * Result of a rebalancing cycle.
12
+ * executedCount/failedCount: Counts from movable_collateral execution ONLY
13
+ */
14
+ export interface CycleResult {
15
+ balances: Record<string, bigint>;
16
+ proposedRoutes: StrategyRoute[];
17
+ executedCount: number;
18
+ failedCount: number;
19
+ }
9
20
  export interface RebalancerOrchestratorDeps {
10
21
  strategy: IStrategy;
11
- rebalancer: IRebalancer | undefined;
12
22
  actionTracker: IActionTracker;
13
23
  inflightContextAdapter: InflightContextAdapter;
14
- multiProvider: MultiProvider;
15
24
  rebalancerConfig: RebalancerConfig;
16
25
  logger: Logger;
26
+ rebalancers: IRebalancer[];
27
+ externalBridgeRegistry?: Partial<ExternalBridgeRegistry>;
17
28
  metrics?: Metrics;
18
29
  }
19
30
  export declare class RebalancerOrchestrator {
20
31
  private readonly strategy;
21
- private readonly rebalancer;
22
32
  private readonly actionTracker;
23
33
  private readonly inflightContextAdapter;
24
- private readonly multiProvider;
25
34
  private readonly rebalancerConfig;
26
35
  private readonly logger;
36
+ private readonly rebalancersByType;
37
+ private readonly externalBridgeRegistry?;
27
38
  private readonly metrics?;
28
39
  constructor(deps: RebalancerOrchestratorDeps);
29
- executeCycle(event: MonitorEvent): Promise<void>;
40
+ /**
41
+ * Execute a single rebalancing cycle.
42
+ * Processes monitor event, evaluates strategy, and executes routes.
43
+ */
44
+ executeCycle(event: MonitorEvent): Promise<CycleResult>;
45
+ /**
46
+ * Sync action tracker with current chain state.
47
+ */
30
48
  private syncActionTracker;
49
+ /**
50
+ * Get inflight context for strategy decision-making
51
+ */
31
52
  private getInflightContext;
32
53
  private executeWithTracking;
33
- private processExecutionResults;
54
+ private executeRoutes;
34
55
  }
35
56
  //# sourceMappingURL=RebalancerOrchestrator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RebalancerOrchestrator.d.ts","sourceRoot":"","sources":["../../src/core/RebalancerOrchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,8BAA8B,CAAC;AAChF,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EACL,KAAK,cAAc,EACnB,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAG9B,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,SAAS,CAAC;IACpB,UAAU,EAAE,WAAW,GAAG,SAAS,CAAC;IACpC,aAAa,EAAE,cAAc,CAAC;IAC9B,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,aAAa,EAAE,aAAa,CAAC;IAC7B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0B;IACrD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAC/C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAyB;IAChE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAU;gBAEvB,IAAI,EAAE,0BAA0B;IAWtC,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;YAwDxC,iBAAiB;YAkBjB,kBAAkB;YAIlB,mBAAmB;YAwDnB,uBAAuB;CAuCtC"}
1
+ {"version":3,"file":"RebalancerOrchestrator.d.ts","sourceRoot":"","sources":["../../src/core/RebalancerOrchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAEV,WAAW,EAEZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAK3E,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAK/E;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,SAAS,CAAC;IACpB,aAAa,EAAE,cAAc,CAAC;IAC9B,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IAEf,WAAW,EAAE,WAAW,EAAE,CAAC;IAE3B,sBAAsB,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACzD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAC/C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAyB;IAChE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmC;IACrE,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAkC;IAC1E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAU;gBAEvB,IAAI,EAAE,0BAA0B;IAa5C;;;OAGG;IACG,YAAY,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IAyE7D;;OAEG;YACW,iBAAiB;IA0B/B;;OAEG;YACW,kBAAkB;YAIlB,mBAAmB;YA8BnB,aAAa;CAwD5B"}