import dotenv from 'dotenv';
import { resolve } from 'path';

dotenv.config({ path: resolve(process.cwd(), '.env') });

export interface AppConfig {
  port: number;
  nodeEnv: string;
  openrouterApiKey: string;
  kieApiKey: string;
  geminiApiKey: string;
  encryptionKey: string;
  dataDir: string;
  webhookBaseUrl: string;
  telegramApiId: number;
  telegramApiHash: string;
}

export function loadConfig(): AppConfig {
  return {
    port: parseInt(process.env.PORT || '3001', 10),
    nodeEnv: process.env.NODE_ENV || 'development',
    openrouterApiKey: process.env.OPENROUTER_API_KEY || '',
    kieApiKey: process.env.KIE_API_KEY || '',
    geminiApiKey: process.env.GEMINI_API_KEY || '',
    encryptionKey: process.env.ENCRYPTION_KEY || '',
    dataDir: resolve(process.cwd(), 'data'),
    webhookBaseUrl: process.env.WEBHOOK_BASE_URL || '',
    telegramApiId: parseInt(process.env.TELEGRAM_API_ID || '0', 10),
    telegramApiHash: process.env.TELEGRAM_API_HASH || '',
  };
}

export function validateConfig(config: AppConfig): string[] {
  const errors: string[] = [];
  if (!config.encryptionKey) {
    errors.push('ENCRYPTION_KEY is required for secure storage');
  }
  if (config.port < 1 || config.port > 65535) {
    errors.push('PORT must be between 1 and 65535');
  }
  return errors;
}

export function validateConfigWarnings(config: AppConfig): string[] {
  const warnings: string[] = [];
  if (!config.webhookBaseUrl) {
    warnings.push('WEBHOOK_BASE_URL yapılandırılmamış — KIE görsel üretim webhook\'ları çalışmayacak');
  }
  if (!config.openrouterApiKey) {
    warnings.push('OPENROUTER_API_KEY yapılandırılmamış — AI yanıt üretimi çalışmayacak');
  }
  if (!config.kieApiKey && !config.geminiApiKey) {
    warnings.push('KIE_API_KEY veya GEMINI_API_KEY yapılandırılmamış — görsel üretim çalışmayacak');
  }
  return warnings;
}


export const config = loadConfig();
