export interface FuelConfig { rendimientoKmL: number | null; precioPorLitro: number | null; } export function currencyForCountry(country: string | null | undefined): string { const normalized = (country ?? '') .normalize('NFD') .replace(/[\u0300-\u036f]/g, '') .replace(/[^a-z0-9]/gi, '') .toLowerCase(); if (!normalized) return '$'; if (['mexico', 'mx', 'cdmx', 'ciudaddemexico', 'mexicocity', 'estadosunidosmexicanos'].includes(normalized)) return 'MX$'; if (['republicadominicana', 'dominicana', 'rd', 'do', 'santodomingo'].includes(normalized)) return 'RD$'; return '$'; } export function isFuelConfigured(config: FuelConfig): boolean { return ( config.rendimientoKmL != null && config.precioPorLitro != null && Number.isFinite(config.rendimientoKmL) && Number.isFinite(config.precioPorLitro) && config.rendimientoKmL > 0 && config.precioPorLitro >= 0 ); } export function fuelLiters(distanceKm: number, rendimientoKmL: number): number { if (!Number.isFinite(distanceKm) || distanceKm <= 0) return 0; if (!Number.isFinite(rendimientoKmL) || rendimientoKmL <= 0) return 0; return distanceKm / rendimientoKmL; } export function fuelCost(distanceKm: number, config: FuelConfig): { liters: number; cost: number } { if (!isFuelConfigured(config)) return { liters: 0, cost: 0 }; const liters = fuelLiters(distanceKm, config.rendimientoKmL as number); return { liters, cost: liters * (config.precioPorLitro as number) }; } export function formatFuelCost(cost: number, currency: string): string { return `${currency} ${cost.toFixed(2)}`; }