/**
 * Application Configuration
 * Centralized configuration management for the entire package
 */

/**
 * Get application name from environment variables
 * @returns {string} Application name
 */
export function getAppName() {
  return process.env.ZEN_NAME || 'ZEN';
}

/**
 * Get session cookie name from environment variables
 * @returns {string} Session cookie name
 */
export function getSessionCookieName() {
  return process.env.ZEN_AUTH_SESSION_COOKIE_NAME || 'zen_session';
}

/**
 * Public site origin for server-side absolute URLs (emails, redirects, PDF assets).
 * When NODE_ENV is development, NEXT_PUBLIC_URL_DEV is preferred, then NEXT_PUBLIC_URL.
 * Otherwise NEXT_PUBLIC_URL is used. Trailing slashes are stripped.
 * @returns {string}
 */
export function getPublicBaseUrl() {
  const fallback = 'http://localhost:3000';
  const isDev = process.env.NODE_ENV === 'development';
  const raw = isDev
    ? (process.env.NEXT_PUBLIC_URL_DEV || process.env.NEXT_PUBLIC_URL || fallback)
    : (process.env.NEXT_PUBLIC_URL || fallback);
  return String(raw).replace(/\/$/, '');
}

/**
 * Get application configuration
 * @returns {Object} Application configuration object
 */
export function getAppConfig() {
  return {
    name: getAppName(),
    sessionCookieName: getSessionCookieName(),
    timezone: process.env.ZEN_TIMEZONE || 'America/Toronto',
    dateFormat: process.env.ZEN_DATE_FORMAT || 'YYYY-MM-DD',
    defaultCurrency: process.env.ZEN_CURRENCY || 'CAD',
    currencySymbol: process.env.ZEN_CURRENCY_SYMBOL || '$',
  };
}

export function isDevkitEnabled() {
  return process.env.ZEN_DEVKIT === 'true';
}

export function isMediaEnabled() {
  return process.env.ZEN_MEDIA === 'true';
}
