import dotenv from "dotenv";
import { z } from "zod";

dotenv.config();

const envSchema = z.object({
  NODE_ENV: z.enum(["development", "test", "production"]).default("development"),
  API_PORT: z.coerce.number().default(4000),
  TCP_PORT: z.coerce.number().default(5001),
  DATABASE_URL: z.string().min(1),
  REDIS_URL: z.string().min(1).optional(),
  JWT_SECRET: z.string().min(16),
  JWT_EXPIRES_IN: z.string().default("12h"),
  ADMIN_EMAIL: z.string().email(),
  ADMIN_PASSWORD: z.string().min(8),
  APP_BASE_URL: z.string().default("http://localhost:3000"),
  API_BASE_URL: z.string().default("http://localhost:4000"),
  WS_BASE_URL: z.string().default("http://localhost:4000"),
  TCP_IDLE_TIMEOUT_MS: z.coerce.number().default(180000),
  LOG_TCP_FRAMES: z.coerce.boolean().default(false),
  LOG_TCP_FRAMES_FILE: z.string().default("/opt/tracker/tcp-frames.log"),
  DEVICE_ONLINE_SECONDS: z.coerce.number().default(90),
  DEVICE_DELAYED_SECONDS: z.coerce.number().default(300),
});

export const env = envSchema.parse(process.env);
