/**
 * Cost record generator.
 *
 * Produces Cost records with types, amounts, currencies, and dates
 * spread across 24 months.
 */

import type { SeededRng } from '@/lib/mock-data/seed';
import type { Cost } from '@/lib/mock-data/types';

const COST_TYPES: Cost['type'][] = ['administration', 'ownership-purchase', 'other'];

const CURRENCIES = ['USD', 'EUR', 'GBP', 'JPY', 'BRL', 'AUD', 'CAD', 'MXN'] as const;

/**
 * Generate Cost records.
 *
 * @param rng   - Seeded PRNG instance
 * @param count - Number of cost records to generate (≥100 recommended)
 */
export function generateCosts(rng: SeededRng, count: number): Cost[] {
  const costs: Cost[] = [];
  const startDate = new Date('2024-01-01');
  const endDate = new Date('2025-12-31');

  for (let i = 0; i < count; i++) {
    const id = `CST-${String(i + 1).padStart(4, '0')}`;

    costs.push({
      id,
      type: rng.pick(COST_TYPES),
      amount: Math.round(rng.randomFloat(100, 25000) * 100) / 100,
      currency: rng.pick(CURRENCIES),
      date: rng.randomDate(startDate, endDate),
    });
  }

  return costs;
}
