/** App currency is coins — never show a currency symbol. */

export function formatCoins(
  n: number | string | null | undefined,
  opts?: { digits?: number; suffix?: boolean }
): string {
  const v = Number(n || 0);
  const digits = opts?.digits ?? (Number.isInteger(v) ? 0 : 2);
  const formatted = v.toLocaleString('en-IN', {
    maximumFractionDigits: digits,
    minimumFractionDigits: 0,
  });
  return opts?.suffix === false ? formatted : `${formatted} coins`;
}

/** Compact signed amount for ledgers: +12 coins / -5 coins */
export function formatCoinsSigned(n: number | string | null | undefined): string {
  const v = Number(n || 0);
  const abs = formatCoins(Math.abs(v));
  if (v > 0) return `+${abs}`;
  if (v < 0) return `-${formatCoins(Math.abs(v), { suffix: false })} coins`;
  return abs;
}
