import "dotenv/config";

function required(name: string): string {
  const v = process.env[name];
  if (!v) throw new Error(`Variable d'environnement manquante : ${name}`);
  return v;
}

export const env = {
  nodeEnv: process.env.NODE_ENV ?? "development",
  port: Number(process.env.PORT ?? 4002),
  corsOrigin: process.env.CORS_ORIGIN ?? "https://leperelion.fr",
  databaseUrl: required("DATABASE_URL"),

  jwt: {
    accessSecret: process.env.JWT_ACCESS_SECRET ?? "dev-access-secret",
    refreshSecret: process.env.JWT_REFRESH_SECRET ?? "dev-refresh-secret",
    accessExpires: process.env.JWT_ACCESS_EXPIRES ?? "15m",
    refreshExpires: process.env.JWT_REFRESH_EXPIRES ?? "30d",
  },
  cookie: {
    domain: process.env.COOKIE_DOMAIN ?? "leperelion.fr",
    secure: (process.env.COOKIE_SECURE ?? "true") === "true",
  },
  encryptionKey: process.env.LEPERELION_ENCRYPTION_KEY ?? "",

  google: {
    clientId: process.env.GOOGLE_CLIENT_ID ?? "",
    clientSecret: process.env.GOOGLE_CLIENT_SECRET ?? "",
    redirectUri:
      process.env.GOOGLE_REDIRECT_URI ??
      "https://leperelion.fr/backend/google/oauth/callback",
  },

  evolution: {
    url: process.env.EVOLUTION_URL ?? "http://localhost:4003",
    apiKey: process.env.EVOLUTION_API_KEY ?? "",
    instance: process.env.EVOLUTION_INSTANCE ?? "leperelion",
  },
};
