export interface User { id: number; email: string; praepedeutikum_done: boolean; is_admin: boolean; } export interface Entry { id: number; date: string; hours: number; minutes: number; praktikums_typ: string; entry_art: string; distance_km: number; beschreibung: string | null; kosten: number | null; start_time: string | null; end_time: string | null; lunch_break_minutes: number; zaehlt_als_fortbildung: boolean; kilometer_pauschale: number; } export type EntryInput = Omit; export interface Progress { typ: string; art: string; spent_minutes: number; target_minutes: number; remaining_minutes: number; percent: number; weekly_target: number; actual_weekly: number | null; estimated_end: string | null; } export interface Dashboard { total_minutes: number; target_minutes: number; remaining_minutes: number; completed_percent: number; total_distance_km: number; costs_by_year: { year: number; kilometer: number; fortbildung: number; selbsterfahrung: number; supervision: number; semester: number; total: number; }[]; last_entry: Entry | null; running_entry: Entry | null; enabled_praktikums_typen: string[]; mediation_presence_days: number; mediation_presence_days_required: number; progress: Progress[]; } export interface Settings { email: string; total_required_hours: number; weekly_target_hours: number; praepedeutikum_done: boolean; required_hours_matrix: Record>; weekly_target_matrix: Record>; praktikums_typen: string[]; enabled_praktikums_typen: string[]; praktikums_typ_labels: Record; entry_arten: string[]; entry_arten_by_typ: Record; } export interface MileageRate { id: number; year: number; rate_per_km: number; }