export interface CalendarEvent { id: string; title: string; description?: string; date: string; time: string; duration?: number; location?: string; color?: string; isAllDay?: boolean; priority?: 'low' | 'medium' | 'high'; category?: string; tags?: string[]; attendees?: string[]; reminder?: number; recurring?: { type: 'daily' | 'weekly' | 'monthly' | 'yearly'; interval: number; endDate?: string; }; attachments?: { name: string; url: string; type: string; }[]; createdAt: number; updatedAt: number; } export interface Calendar { id: string; title: string; description?: string; events: CalendarEvent[]; createdAt: number; updatedAt: number; } export interface CreateEventData { title: string; description?: string; date: string; time: string; duration?: number; location?: string; color?: string; isAllDay?: boolean; priority?: 'low' | 'medium' | 'high'; category?: string; tags?: string[]; attendees?: string[]; reminder?: number; recurring?: { type: 'daily' | 'weekly' | 'monthly' | 'yearly'; interval: number; endDate?: string; }; attachments?: { name: string; url: string; type: string; }[]; } export interface CreateCalendarData { title: string; description?: string; events?: CreateEventData[]; } export type UpdateEventData = Partial; export type UpdateCalendarData = Partial; export interface Category { id: string; name: string; color: string; createdAt: number; } export interface Tag { id: string; name: string; color: string; createdAt: number; } export interface Reminder { id: string; eventId: string; calendarId: string; triggerTime: number; message: string; isShown: boolean; createdAt: number; } export interface RecurringEvent { id: string; baseEventId: string; calendarId: string; nextOccurrence: string; pattern: { type: 'daily' | 'weekly' | 'monthly' | 'yearly'; interval: number; endDate?: string; }; createdAt: number; }