/**
 * Environment Configuration
 * Centralized access to environment variables for Next.js
 */

const detectedAppEnv = process.env.NEXT_PUBLIC_APP_ENV || process.env.NODE_ENV || 'production';

export const env = {
  // App Configuration
  appName: process.env.NEXT_PUBLIC_APP_NAME || 'CodeframeAI',
  appVersion: process.env.NEXT_PUBLIC_APP_VERSION || '0.0.20',
  appEnv: detectedAppEnv,

  // API Configuration
  apiBaseUrl: process.env.NEXT_PUBLIC_API_BASE_URL || 'https://apiv2.codeframeai.com/api',
  apiBaseUrlDev: process.env.NEXT_PUBLIC_API_BASE_URL_DEV || (typeof window !== 'undefined' ? `http://${window.location.hostname}:8080/api` : 'http://localhost:8080/api'),

  // Authentication API Endpoints
  authApiUrl: process.env.NEXT_PUBLIC_AUTH_API_URL || 'https://apiv2.codeframeai.com/api',

  // Document APIs
  translationApiUrl: process.env.NEXT_PUBLIC_TRANSLATION_API_URL || 'https://api.codeframeai.com/translate',
  documentApiUrl: process.env.NEXT_PUBLIC_DOCUMENT_API_URL || 'https://api.codeframeai.com/documents',

  // Social Authentication (Client IDs are safe to be public)
  googleClientId: process.env.NEXT_PUBLIC_GOOGLE_CLIENT_ID || '27324056865-u01vkb2ucictgujtgbis9hqq64gfjr1j.apps.googleusercontent.com',
  facebookAppId: process.env.NEXT_PUBLIC_FACEBOOK_APP_ID || '1201906694905662',

  // Feature Flags
  enableSocialLogin: process.env.NEXT_PUBLIC_ENABLE_SOCIAL_LOGIN === 'true',

  // Support
  supportEmail: process.env.NEXT_PUBLIC_SUPPORT_EMAIL || 'support@codeframeai.com',
  supportPhone: process.env.NEXT_PUBLIC_SUPPORT_PHONE || '+1-234-567-8900',

  // Server-side ONLY Secrets (NO NEXT_PUBLIC_ prefix, so they won't leak to the browser)
  geminiApiKey: process.env.GEMINI_API_KEY || '',
  geminiModel: process.env.GEMINI_MODEL || 'gemini-pro',
  transcriptApiKey: process.env.TRANSCRIPT_API_KEY ||
    'sk_9lu107ofTJ8S_vWMF87qgmWKAnjJmLHd1VHMCqAGP9Q',
};

// Mode checks
export const isDevelopment = env.appEnv === 'development';
export const isProduction = env.appEnv === 'production';

// API helper functions
export const getApiUrl = (endpoint: string) => {
  return isDevelopment
    ? `${env.apiBaseUrlDev}${endpoint}`
    : `${env.apiBaseUrl}${endpoint}`;
};

export const getAuthApiUrl = (endpoint: string) => {
  return `${env.authApiUrl}${endpoint}`;
};
