export interface ToastChannelConfig { provider?: 'mantine' | 'react-hot-toast' | 'react-toastify'; position?: string; autoClose?: number; hideProgressBar?: boolean; closeOnClick?: boolean; pauseOnHover?: boolean; draggable?: boolean; maxToasts?: number; } export interface BellChannelConfig { storage?: 'local' | 'firebase' | 'supabase' | 'custom'; maxNotifications?: number; retentionDays?: number; groupByDate?: boolean; showBadge?: boolean; sound?: boolean; } export interface PushChannelConfig { provider?: 'firebase' | 'onesignal' | 'pusher'; vapidKey?: string; serviceWorkerPath?: string; requestPermissionOnLoad?: boolean; fallbackToToast?: boolean; } export interface EmailChannelConfig { service?: any; // Email service instance templateMap?: { [notificationType: string]: string; }; batchDelay?: number; maxBatchSize?: number; } export interface ChannelInterface { send(notification: any): Promise; update?(id: string, updates: any): Promise; dismiss?(id: string): Promise; clear?(): Promise; } export interface ChannelStatus { channel: string; enabled: boolean; available: boolean; permission?: 'granted' | 'denied' | 'default'; error?: string; } export interface ChannelPreferences { toast: boolean; bell: boolean; push: boolean; email: boolean; } export interface ChannelSchedule { channel: string; enabled: boolean; quietHours?: { start: string; // "22:00" end: string; // "08:00" timezone?: string; }; daysOfWeek?: number[]; // 0-6, Sunday-Saturday }