Skip to content

Latest commit

 

History

History
20 lines (17 loc) · 1.34 KB

File metadata and controls

20 lines (17 loc) · 1.34 KB

I implemented depositor concentration risk alerts and a withdrawal queue with fair ordering as requested.

For depositor concentration alerts:

Created RiskService in src/analytics/risk.service.ts that calculates depositor concentration hourly using SQL aggregation Added depositorConcentrationThreshold column to Vault entity (default 0.5 for 50% threshold) Extended NotificationType enum with DEPOSITOR_CONCENTRATION type Integrated RiskService into AnalyticsModule and exposed via GET /vaults/:id/risk-metrics endpoint Service sends notifications to vault owners when any depositor exceeds the threshold For withdrawal queue with fair ordering:

Added QUEUED status to WithdrawalStatus enum Created WithdrawalQueueService to manage FIFO processing of withdrawals when liquidity is insufficient Modified VaultsService.withdrawFromVault to: Process withdrawals immediately when sufficient liquidity exists Queue withdrawals (set status QUEUED) when insufficient liquidity Process queue after successful deposits Added controller endpoints for queue position and estimated wait time Updated VaultsModule to include WithdrawalQueueService The validation pipe was already properly configured in main.ts with ValidationPipe({ whitelist: true, forbidNonWhitelisted: true, transform: true, transformOptions: { enableImplicitConversion: true } }), so no changes were needed there.