import { ICalendarEvent } from '../types/CalendarTypes'; /** * Operation for the sync queue */ export interface IQueueOperation { id: string; type: 'create' | 'update' | 'delete'; eventId: string; data: Partial | ICalendarEvent; timestamp: number; retryCount: number; } /** * IndexedDB Service for Calendar App * Handles local storage of events and sync queue */ export declare class IndexedDBService { private static readonly DB_NAME; private static readonly DB_VERSION; private static readonly EVENTS_STORE; private static readonly QUEUE_STORE; private static readonly SYNC_STATE_STORE; private db; private initialized; /** * Initialize and open the database */ initialize(): Promise; /** * Check if database is initialized */ isInitialized(): boolean; /** * Ensure database is initialized */ private ensureDB; /** * Get a single event by ID */ getEvent(id: string): Promise; /** * Get all events */ getAllEvents(): Promise; /** * Save an event (create or update) */ saveEvent(event: ICalendarEvent): Promise; /** * Delete an event */ deleteEvent(id: string): Promise; /** * Add operation to queue */ addToQueue(operation: Omit): Promise; /** * Get all queue operations (sorted by timestamp) */ getQueue(): Promise; /** * Remove operation from queue */ removeFromQueue(id: string): Promise; /** * Clear entire queue */ clearQueue(): Promise; /** * Save sync state value */ setSyncState(key: string, value: any): Promise; /** * Get sync state value */ getSyncState(key: string): Promise; /** * Serialize event for IndexedDB storage (convert Dates to ISO strings) */ private serializeEvent; /** * Deserialize event from IndexedDB (convert ISO strings to Dates) */ private deserializeEvent; /** * Close database connection */ close(): void; /** * Delete entire database (for testing/reset) */ static deleteDatabase(): Promise; /** * Seed IndexedDB with mock data if empty */ seedIfEmpty(mockDataUrl?: string): Promise; }