/**
 * CurrencyDisplay
 * 
 * Deterministic currency formatting for display.
 * Avoids Intl and toLocaleString to prevent SSR/hydration mismatches.
 */

export class CurrencyDisplay {
  /**
   * Formats an amount as currency (e.g., "$10.00").
   * Default currency is USD.
   */
  static format(amount: number, currency: string = 'USD'): string {
    const symbol = currency === 'USD' ? '$' : currency + ' ';
    const formattedAmount = amount.toFixed(2);
    
    // Add thousands separators
    const parts = formattedAmount.split('.');
    parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
    
    return `${symbol}${parts.join('.')}`;
  }

  /**
   * Formats an amount as a compact currency (e.g., "$10").
   */
  static formatCompact(amount: number, currency: string = 'USD'): string {
    const symbol = currency === 'USD' ? '$' : currency + ' ';
    const roundedAmount = Math.round(amount);
    
    // Add thousands separators
    const formattedAmount = roundedAmount.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
    
    return `${symbol}${formattedAmount}`;
  }
}
