/**
 * Форматтеры биллинга — BillingView + TransactionsTable + InvoicesTable.
 *
 * Sprint 2 Plan C: status/format-функции (statusChipColor/statusLabel/
 * formatLabel/formatIcon) удалены — real-API транзакции не имеют статуса
 * (append-only ledger), счета — отдельный формат. txAmountClass
 * перетипизирован под знак суммы.
 */

/** «5000» → «5 000 ₽» (без знака). */
export function formatPlain(cost: number): string {
    return new Intl.NumberFormat('ru-RU').format(cost) + ' ₽';
}

/** Знаковый формат: «+ 5 000 ₽» / «− 6 600 ₽» / «0 ₽». */
export function formatCost(cost: number): string {
    const sign = cost > 0 ? '+ ' : cost < 0 ? '− ' : '';
    return sign + new Intl.NumberFormat('ru-RU').format(Math.abs(cost)) + ' ₽';
}

/** CSS-класс суммы транзакции по знаку. */
export function txAmountClass(amount: number): string {
    if (amount > 0) return 'tx-amount-up';
    if (amount < 0) return 'tx-amount-down';
    return 'tx-amount-neutral';
}

/** Человекочитаемые лейблы для feature-слагов tariff_plans.features. */
export const FEATURE_LABELS: Record<string, string> = {
    webhook: 'Webhook',
    kanban: 'Канбан',
    basic_analytics: 'Базовая аналитика',
    advanced_analytics: 'Расширенная аналитика',
    api: 'API',
    '2fa': 'Двухфакторная аутентификация',
    custom_domain: 'Свой домен',
};

/** Лейбл feature-слага; неизвестный слаг возвращается как есть. */
export function featureLabel(slug: string): string {
    return FEATURE_LABELS[slug] ?? slug;
}
