import { toIsoSqlUTC as coreToIsoSqlUTC, normalizeTime as coreNormalizeTime, ymdUTC, ymdInTZ as coreYmdInTZ } from '../../../../../src/utils/datetime';

/**
 * Serializa una fecha en UTC al formato SQL ISO "YYYY-MM-DD HH:MM:SS[.SSS]".
 * Mantiene exactamente la semántica previa basada en toISOString().replace().
 */
export function toIsoSqlUTC(d: Date = new Date()): string {
  return coreToIsoSqlUTC(d);
}

/**
 * Normaliza una hora 'HH:mm'. Devuelve null si no es válida.
 */
export function normalizeTime(input: string | null | undefined): string | null {
  return coreNormalizeTime(input);
}

export { ymdUTC };

export function ymdInTZ(d: Date, tz: string): string {
  return coreYmdInTZ(d, tz);
}

/**
 * Suma meses en UTC preservando día (ajustado por desbordes de fin de mes por el propio motor).
 */
export function addMonthsUTC(date: Date, months: number): Date {
  const d = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()));
  d.setUTCMonth(d.getUTCMonth() + months);
  return d;
}
