/**
 * Mock-данные для BillingView. Заменятся на API-fetch:
 *   GET /api/billing/wallet     — баланс ₽ + леды + tariff.
 *   GET /api/billing/transactions?type={all|topup|charge|refund} — `balance_transactions`.
 *   GET /api/billing/invoices   — `invoices` table (счета + УПД).
 *
 * Mock-структуры соответствуют схеме v8.7:
 * - balance_transactions (§4.4): type ∈ {topup, lead_charge, refund, tariff_charge, manager_addon}.
 * - invoices (§4.5): type ∈ {invoice, upd}, format ∈ {pdf, xml_1c83}.
 */

type TxType = 'topup' | 'lead_charge' | 'refund' | 'tariff_charge';
export type TxStatus = 'pending' | 'completed' | 'rejected';

export interface BillingTransaction {
    id: number;
    code: string; // 'TX-89421'
    when: string; // '07.05 · 14:21'
    type: TxType;
    description: string;
    status: TxStatus;
    amount: number; // signed (+ topup/refund, − charge)
}

export const MOCK_TRANSACTIONS: BillingTransaction[] = [
    {
        id: 89421,
        code: 'TX-89421',
        when: '07.05 · 14:21',
        type: 'topup',
        description: 'Пополнение через ЮKassa',
        status: 'pending',
        amount: 5000,
    },
    {
        id: 89384,
        code: 'TX-89384',
        when: '07.05 · 11:14',
        type: 'lead_charge',
        description: 'Списание · 3 лида проект «Окна Москва»',
        status: 'completed',
        amount: -6600,
    },
    {
        id: 89370,
        code: 'TX-89370',
        when: '07.05 · 09:48',
        type: 'refund',
        description: 'Возврат лида #1018 · дубликат',
        status: 'completed',
        amount: 2200,
    },
    {
        id: 89312,
        code: 'TX-89312',
        when: '06.05 · 22:06',
        type: 'topup',
        description: 'Пополнение через ЮKassa',
        status: 'completed',
        amount: 10000,
    },
    {
        id: 89286,
        code: 'TX-89286',
        when: '06.05 · 18:32',
        type: 'lead_charge',
        description: 'Списание · 5 лидов проект «Натяжные потолки»',
        status: 'completed',
        amount: -9250,
    },
    {
        id: 89108,
        code: 'TX-89108',
        when: '05.05 · 12:00',
        type: 'tariff_charge',
        description: 'Списание абонентской платы тарифа «Команда»',
        status: 'completed',
        amount: -990,
    },
    {
        id: 88937,
        code: 'TX-88937',
        when: '04.05 · 16:42',
        type: 'topup',
        description: 'Попытка пополнения через банковский перевод',
        status: 'rejected',
        amount: 0,
    },
    {
        id: 88714,
        code: 'TX-88714',
        when: '03.05 · 09:18',
        type: 'refund',
        description: 'Возврат лида #998 · спам',
        status: 'completed',
        amount: 1850,
    },
];

export interface BillingTab {
    id: 'all' | 'topup' | 'lead_charge' | 'refund';
    label: string;
    types: TxType[] | null;
}

export const BILLING_TABS: BillingTab[] = [
    { id: 'all', label: 'Все', types: null },
    { id: 'topup', label: 'Пополнения', types: ['topup'] },
    { id: 'lead_charge', label: 'Списания', types: ['lead_charge', 'tariff_charge'] },
    { id: 'refund', label: 'Возвраты', types: ['refund'] },
];

export type InvoiceFormat = 'pdf' | 'xml_1c83';

export interface Invoice {
    id: number;
    when: string; // '07.05.2026'
    title: string; // 'Счёт № 2026-0512'
    sub: string; // 'Тариф «Команда» · май 2026'
    amountRub: number;
    format: InvoiceFormat;
}

export const MOCK_INVOICES: Invoice[] = [
    {
        id: 1,
        when: '07.05.2026',
        title: 'Счёт № 2026-0512',
        sub: 'Тариф «Команда» · май 2026',
        amountRub: 990,
        format: 'pdf',
    },
    {
        id: 2,
        when: '06.05.2026',
        title: 'УПД № УПД-2026-0492',
        sub: 'Списания за апрель · 18 лидов',
        amountRub: 29850,
        format: 'xml_1c83',
    },
    {
        id: 3,
        when: '05.05.2026',
        title: 'УПД № УПД-2026-0488',
        sub: 'Списания за март · 24 лида',
        amountRub: 38100,
        format: 'xml_1c83',
    },
    {
        id: 4,
        when: '01.04.2026',
        title: 'Счёт № 2026-0498',
        sub: 'Тариф «Команда» · апрель 2026',
        amountRub: 990,
        format: 'pdf',
    },
];

export interface PendingPayment {
    code: string;
    amount: number;
    method: string; // 'ЮKassa'
    startedAt: string; // '14:21'
    autoCancelAt: string; // '14:51'
    timeoutMinutes: number;
}

export const MOCK_PENDING: PendingPayment | null = {
    code: 'TX-89421',
    amount: 5000,
    method: 'ЮKassa',
    startedAt: '14:21',
    autoCancelAt: '14:51',
    timeoutMinutes: 30,
};
