import { registerAs } from '@nestjs/config'; export default registerAs('app', () => ({ port: parseInt(process.env.PORT || '3000', 10), database: { url: process.env.DATABASE_URL || 'file:./dev.db', }, moex: { baseUrl: process.env.MOEX_BASE_URL || 'https://iss.moex.com/iss', rateLimit: parseInt(process.env.MOEX_RATE_LIMIT || '10', 10), circuitBreakerThreshold: parseInt(process.env.MOEX_CIRCUIT_BREAKER_THRESHOLD || '5', 10), circuitBreakerResetSeconds: parseInt( process.env.MOEX_CIRCUIT_BREAKER_RESET_SECONDS || '30', 10, ), }, tbank: { token: process.env.T_BANK_TOKEN || '', baseUrl: process.env.T_BANK_BASE_URL || 'invest-public-api.tbank.ru:443', caCertPath: process.env.T_BANK_CA_CERT_PATH || '', appName: process.env.T_BANK_APP_NAME || 'ksv741.moex-vibe', rateLimitPerSecond: parseInt(process.env.T_BANK_RATE_LIMIT_PER_SECOND || '5', 10), instrumentsRateLimitPerSecond: parseInt(process.env.T_BANK_INSTRUMENTS_RATE_LIMIT || '20', 10), requestTimeoutMs: parseInt(process.env.T_BANK_REQUEST_TIMEOUT_MS || '10000', 10), }, cache: { marketDataTtl: parseInt(process.env.CACHE_MARKET_DATA_TTL || '900', 10), historyTtl: parseInt(process.env.CACHE_HISTORY_TTL || '3600', 10), candlesTtl: parseInt(process.env.CACHE_CANDLES_TTL || '3600', 10), securityTtl: parseInt(process.env.CACHE_SECURITY_TTL || '86400', 10), searchTtl: parseInt(process.env.CACHE_SEARCH_TTL || '3600', 10), dividendsTtl: parseInt(process.env.CACHE_DIVIDENDS_TTL || '86400', 10), tbankAccountsTtl: parseInt(process.env.CACHE_TBANK_ACCOUNTS_TTL || '3600', 10), tbankPortfolioTtl: parseInt(process.env.CACHE_TBANK_PORTFOLIO_TTL || '60', 10), tbankOperationsTtl: parseInt(process.env.CACHE_TBANK_OPERATIONS_TTL || '300', 10), tbankPositionsTtl: parseInt(process.env.CACHE_TBANK_POSITIONS_TTL || '60', 10), tbankInstrumentTtl: parseInt(process.env.CACHE_TBANK_INSTRUMENT_TTL || '86400', 10), }, auth: { jwtSecret: process.env.JWT_SECRET || 'dev-jwt-secret-change-in-production', jwtRefreshSecret: process.env.JWT_REFRESH_SECRET || 'dev-refresh-secret-change-in-production', jwtAccessExpires: process.env.JWT_ACCESS_EXPIRES || '15m', jwtRefreshExpires: process.env.JWT_REFRESH_EXPIRES || '7d', }, }));