import { z } from "zod";
import {
  validateMintelEnv,
  mintelEnvSchema,
  withMintelRefinements,
} from "@mintel/next-utils";

/**
 * Environment variable schema.
 * Extends the default Mintel environment schema which already includes:
 * - Directus (URL, TOKEN, INTERNAL_URL, etc.)
 * - Mail (HOST, PORT, etc.)
 * - Gotify
 * - Logging
 * - Analytics
 */
const envExtension = {
  // Project specific overrides or additions
  AUTH_COOKIE_NAME: z.string().default("mb_gatekeeper_session"),
  NEXT_PUBLIC_SENTRY_DSN: z.string().optional(),
  SENTRY_DSN: z.string().optional(),
};

/**
 * Full schema including Mintel base and refinements
 */
export const envSchema = withMintelRefinements(
  z.object(mintelEnvSchema).extend(envExtension),
);

/**
 * Validated environment object.
 */
export const env = validateMintelEnv(envExtension);

/**
 * For legacy compatibility with existing code.
 */
export function getRawEnv() {
  return env;
}
