99 type RebalanceExecutionConfig
1010} from './dex.js'
1111import { getFeatureFlags } from '../config/featureFlags.js'
12+ import { rebalanceHistoryService , riskManagementService } from './serviceContainer.js'
1213
1314interface StoredPortfolio {
1415 id : string
@@ -195,22 +196,18 @@ export class StellarService {
195196 const { portfolioStorage } = await import ( './portfolioStorage.js' )
196197 const { CircuitBreakers } = await import ( './circuitBreakers.js' )
197198 const { ReflectorService } = await import ( './reflector.js' )
198- const { RebalanceHistoryService } = await import ( './rebalanceHistory.js' )
199- const { RiskManagementService } = await import ( './riskManagements.js' )
200199
201200 const portfolio = await portfolioStorage . getPortfolio ( portfolioId ) as StoredPortfolio | undefined
202201 if ( ! portfolio ) {
203202 throw new Error ( 'Portfolio not found' )
204203 }
205204
206205 const reflector = new ReflectorService ( )
207- const rebalanceHistory = new RebalanceHistoryService ( )
208- const riskService = new RiskManagementService ( )
209206 const prices = await reflector . getCurrentPrices ( )
210207
211- const riskCheck = riskService . shouldAllowRebalance ( portfolio , prices )
208+ const riskCheck = riskManagementService . shouldAllowRebalance ( portfolio , prices )
212209 if ( ! riskCheck . allowed ) {
213- await rebalanceHistory . recordRebalanceEvent ( {
210+ await rebalanceHistoryService . recordRebalanceEvent ( {
214211 portfolioId,
215212 trigger : 'Risk Management Block' ,
216213 trades : 0 ,
@@ -228,7 +225,7 @@ export class StellarService {
228225 const hourInMs = 60 * 60 * 1000
229226
230227 if ( now - lastRebalance < hourInMs ) {
231- await rebalanceHistory . recordRebalanceEvent ( {
228+ await rebalanceHistoryService . recordRebalanceEvent ( {
232229 portfolioId,
233230 trigger : 'Cooldown Period Active' ,
234231 trades : 0 ,
@@ -243,7 +240,7 @@ export class StellarService {
243240
244241 const marketCheck = await CircuitBreakers . checkMarketConditions ( prices )
245242 if ( ! marketCheck . safe ) {
246- await rebalanceHistory . recordRebalanceEvent ( {
243+ await rebalanceHistoryService . recordRebalanceEvent ( {
247244 portfolioId,
248245 trigger : 'Circuit Breaker Triggered' ,
249246 trades : 0 ,
@@ -258,7 +255,7 @@ export class StellarService {
258255
259256 const needed = await this . checkRebalanceNeeded ( portfolioId )
260257 if ( ! needed ) {
261- await rebalanceHistory . recordRebalanceEvent ( {
258+ await rebalanceHistoryService . recordRebalanceEvent ( {
262259 portfolioId,
263260 trigger : 'No Rebalance Needed' ,
264261 trades : 0 ,
@@ -276,7 +273,7 @@ export class StellarService {
276273 throw new Error ( 'No executable trades generated from current drift' )
277274 }
278275
279- await rebalanceHistory . recordRebalanceEvent ( {
276+ await rebalanceHistoryService . recordRebalanceEvent ( {
280277 portfolioId,
281278 trigger : 'Rebalance Started' ,
282279 trades : 0 ,
@@ -323,7 +320,7 @@ export class StellarService {
323320 const failureReasons = dexResult . failedTrades . map ( t => t . failureReason ) . filter ( Boolean ) as string [ ]
324321 const historyStatus = dexResult . status === 'failed' ? 'failed' : 'completed'
325322
326- const event = await rebalanceHistory . recordRebalanceEvent ( {
323+ const event = await rebalanceHistoryService . recordRebalanceEvent ( {
327324 portfolioId,
328325 trigger : dexResult . status === 'failed'
329326 ? `Execution Failed: ${ dexResult . failureReason || 'unknown reason' } `
@@ -362,15 +359,10 @@ export class StellarService {
362359 totalSlippageBps : dexResult . totalSlippageBps
363360 }
364361 } catch ( error ) {
365- // Bubble up concurrency conflicts without wrapping so callers can
366- // distinguish a 409 Conflict from a generic 500 failure.
367- if ( error instanceof ConflictError ) throw error
368362
369- const { RebalanceHistoryService } = await import ( './rebalanceHistory.js' )
370- const rebalanceHistory = new RebalanceHistoryService ( )
371363 const message = error instanceof Error ? error . message : String ( error )
372364
373- await rebalanceHistory . recordRebalanceEvent ( {
365+ await rebalanceHistoryService . recordRebalanceEvent ( {
374366 portfolioId,
375367 trigger : 'Execution Failed' ,
376368 trades : 0 ,
0 commit comments