/** * Example usage of the @stock-bot/config library */ import { databaseConfig, dataProviderConfigs, riskConfig, Environment, getEnvironment, marketDataGatewayConfig, riskGuardianConfig, ConfigurationError, validateConfig } from './index'; /** * Display current configuration values */ export function printCurrentConfig(): void { console.log('\n=== Stock Bot Configuration ==='); console.log('\nEnvironment:', getEnvironment()); console.log('\n--- Database Config ---'); console.log('Dragonfly Host:', databaseConfig.dragonfly.host); console.log('Dragonfly Port:', databaseConfig.dragonfly.port); console.log('QuestDB Host:', databaseConfig.questDB.host); console.log('QuestDB Database:', databaseConfig.questDB.database); console.log('MongoDB URI:', databaseConfig.mongodb.uri); console.log('MongoDB Database:', databaseConfig.mongodb.database); console.log('PostgreSQL Host:', databaseConfig.postgres.host); console.log('PostgreSQL Database:', databaseConfig.postgres.database); console.log('\n--- Data Provider Config ---'); console.log('Default Provider:', dataProviderConfigs.defaultProvider); console.log('Providers:'); dataProviderConfigs.providers.forEach((provider: { name: string; type: string; baseUrl?: string; wsUrl?: string; }) => { console.log(` - ${provider.name} (${provider.type})`); if (provider.baseUrl) console.log(` URL: ${provider.baseUrl}`); if (provider.wsUrl) console.log(` WebSocket: ${provider.wsUrl}`); }); console.log('\n--- Risk Config ---'); console.log('Max Drawdown:', riskConfig.maxDrawdown * 100, '%'); console.log('Max Position Size:', riskConfig.maxPositionSize * 100, '%'); console.log('Max Leverage:', riskConfig.maxLeverage, 'x'); console.log('Default Stop Loss:', riskConfig.stopLossDefault * 100, '%'); console.log('Default Take Profit:', riskConfig.takeProfitDefault * 100, '%'); console.log('\n--- Market Data Gateway Config ---'); console.log('Service Port:', marketDataGatewayConfig.service.port); console.log('WebSocket Enabled:', marketDataGatewayConfig.websocket.enabled); console.log('WebSocket Path:', marketDataGatewayConfig.websocket.path); console.log('Caching Enabled:', marketDataGatewayConfig.caching.enabled); console.log('Caching TTL:', marketDataGatewayConfig.caching.ttlSeconds, 'seconds'); console.log('\n--- Risk Guardian Config ---'); console.log('Service Port:', riskGuardianConfig.service.port); console.log('Pre-Trade Validation:', riskGuardianConfig.riskChecks.preTradeValidation); console.log('Portfolio Validation:', riskGuardianConfig.riskChecks.portfolioValidation); console.log('Alerting Enabled:', riskGuardianConfig.alerting.enabled); console.log('Critical Threshold:', riskGuardianConfig.alerting.criticalThreshold * 100, '%'); } // Execute example if this file is run directly if (require.main === module) { try { printCurrentConfig(); } catch (error: unknown) { if (error instanceof ConfigurationError) { console.error('Configuration Error:', error.message); } else if (error instanceof Error) { console.error('Error:', error.message); } else { console.error('Unknown error:', error); } process.exit(1); } }