/**
 * Date and time utilities for working with market data
 */
export const dateUtils = {
  /**
   * Check if a date is a trading day (Monday-Friday, non-holiday)
   * This is a simplified implementation - a real version would check market holidays
   */
  isTradingDay(date: Date): boolean {
    const day = date.getDay();
    return day > 0 && day < 6; // Mon-Fri
  },

  /**
   * Get the next trading day from a given date
   */
  getNextTradingDay(date: Date): Date {
    const nextDay = new Date(date);
    nextDay.setDate(nextDay.getDate() + 1);

    while (!this.isTradingDay(nextDay)) {
      nextDay.setDate(nextDay.getDate() + 1);
    }

    return nextDay;
  },

  /**
   * Get the previous trading day from a given date
   */
  getPreviousTradingDay(date: Date): Date {
    const prevDay = new Date(date);
    prevDay.setDate(prevDay.getDate() - 1);

    while (!this.isTradingDay(prevDay)) {
      prevDay.setDate(prevDay.getDate() - 1);
    }

    return prevDay;
  },

  /**
   * Format a date as YYYY-MM-DD
   */
  formatDate(date: Date): string {
    const parts = date.toISOString().split('T');
    return parts[0] ?? '';
  },

  /**
   * Parse a date string in YYYY-MM-DD format
   */
  parseDate(dateStr: string): Date {
    return new Date(dateStr);
  },
};
