export interface Family { id: string; name: string; unitNumber: string; // Internal apartment number contactEmail?: string; balance: number; // Calculated balance (positive = credit, negative = debt) } export interface Payment { id: string; familyId: string; amount: number; datePaid: string; // ISO Date string forMonth: number; // 1-12 forYear: number; notes?: string; } export interface SmtpConfig { host: string; port: number; user: string; pass: string; secure: boolean; fromEmail: string; } export interface AlertDefinition { id: string; subject: string; body: string; daysOffset: number; // Number of days offsetType: 'before_next_month' | 'after_current_month'; sendHour: number; // 0-23 active: boolean; lastSent?: string; // ISO Date of last execution } export interface AppSettings { defaultMonthlyQuota: number; condoName: string; currentYear: number; // The active fiscal year smtpConfig?: SmtpConfig; } export enum PaymentStatus { PAID = 'PAID', UNPAID = 'UNPAID', // Past due UPCOMING = 'UPCOMING', // Future PENDING = 'PENDING' } export interface MonthStatus { monthIndex: number; // 0-11 status: PaymentStatus; payment?: Payment; } export interface User { id: string; email: string; name?: string; role?: 'admin' | 'poweruser' | 'user'; phone?: string; familyId?: string | null; receiveAlerts?: boolean; } export interface AuthResponse { token: string; user: User; }