/** Длительность в «ч:мм:сс» (часы — только когда есть); null — прочерк. */
export function formatDuration(seconds: number | null): string {
  if (seconds == null) return '—'
  const total = Math.round(seconds)
  const h = Math.floor(total / 3600)
  const m = Math.floor((total % 3600) / 60)
  const s = total % 60
  const pad = (n: number) => String(n).padStart(2, '0')
  return h > 0 ? `${h}:${pad(m)}:${pad(s)}` : `${m}:${pad(s)}`
}

/**
 * Оценка «сколько ещё ждать» — часами и минутами, без секунд. Точность здесь была бы мнимой: оценка
 * строится на среднем времени обработки, и «13:27:42» обещало бы то, чего никто не гарантирует.
 * Меньше минуты — не разбиваем на части, вернём нули: подпись всё равно скажет «меньше минуты».
 */
export function splitEta(seconds: number | null): { hours: number; minutes: number } | null {
  if (seconds == null) return null
  const total = Math.max(0, Math.round(seconds))
  return { hours: Math.floor(total / 3600), minutes: Math.round((total % 3600) / 60) }
}
