Files
gridpilot.gg/apps/website/lib/view-data/BillingViewData.ts
2026-01-23 15:30:23 +01:00

53 lines
1.3 KiB
TypeScript

import { ViewData } from '../contracts/view-data/ViewData';
export interface PaymentMethodViewData extends ViewData {
id: string;
type: 'card' | 'bank' | 'sepa';
last4: string;
brand?: string;
isDefault: boolean;
expiryMonth?: number;
expiryYear?: number;
bankName?: string;
displayLabel: string;
expiryDisplay: string | null;
}
export interface InvoiceViewData extends ViewData {
id: string;
invoiceNumber: string;
date: string;
dueDate: string;
amount: number;
vatAmount: number;
totalAmount: number;
status: 'paid' | 'pending' | 'overdue' | 'failed';
description: string;
sponsorshipType: 'league' | 'team' | 'driver' | 'race' | 'platform';
pdfUrl: string;
formattedTotalAmount: string;
formattedVatAmount: string;
formattedDate: string;
isOverdue: boolean;
}
export interface BillingStatsViewData extends ViewData {
totalSpent: number;
pendingAmount: number;
nextPaymentDate: string;
nextPaymentAmount: number;
activeSponsorships: number;
averageMonthlySpend: number;
formattedTotalSpent: string;
formattedPendingAmount: string;
formattedNextPaymentAmount: string;
formattedAverageMonthlySpend: string;
formattedNextPaymentDate: string;
}
export interface BillingViewData extends ViewData {
paymentMethods: PaymentMethodViewData[];
invoices: InvoiceViewData[];
stats: BillingStatsViewData;
}