export interface Renewal { id: string; renewalDate: string; endDate?: string; renewalPrice: number; notes?: string; } export interface LicenseFile { id: number; fileName: string; mimeType: string; fileSize: number; } export interface NotificationGroup { id: number; groupName: string; emails: string; created_at: string; } export interface Contact { id?: number; vendorName: string; contactName: string; contactEmail: string; contactPhone: string; } export interface AuditLog { id: number; user_id: number; username: string; action_type: 'CREATE' | 'UPDATE' | 'DELETE' | 'LOGIN' | 'LOGOUT'; entity_type: string; entity_id: string; entity_name: string; details: string; created_at: string; } export interface License { id:string; image?: string; licenseName: string; companyName: string; responsiblePerson: string; purchaseDate: string; endDate?: string; purchasePrice: number; vendorName: string; vendorContact: { name: string; email: string; phone: string; }; notificationGroupId?: number | null; comments: string; renewals: Renewal[]; files?: LicenseFile[]; tags?: string[]; isActive: boolean; } export interface User { id: number; username: string; email?: string; role: 'admin' | 'editor'; auth_source: 'local' | 'azure' | 'ldap'; created_at: string; } export interface AppSettings { fiscal_start_month: number; alert_days: number; smtp_host: string; smtp_port: string; smtp_user: string; smtp_pass: string; smtp_from: string; azure_enabled: boolean; azure_tenant_id: string; azure_client_id: string; azure_client_secret: string; ldap_enabled: boolean; ldap_host: string; ldap_port: string; ldap_base_dn: string; ldap_bind_dn: string; ldap_bind_pass: string; ldap_user_filter: string; allow_local_login: boolean; } export interface AIInsight { status: 'saving' | 'warning' | 'neutral'; advice: string; suggested_alternatives: string[]; }