UNPKG

notification-kit

Version:

A unified notification library for React + Capacitor apps. One API for push notifications, in-app notifications, and local notifications across Web, iOS, and Android.

244 lines 6.25 kB
import { WeekDay, RepeatInterval } from './notification'; export interface ScheduleOptions { at?: Date; in?: TimeInterval; every?: RepeatOptions; count?: number; until?: Date; on?: DateComponents; days?: WeekDay[]; timezone?: string; allowWhileIdle?: boolean; exact?: boolean; wakeDevice?: boolean; priority?: SchedulePriority; category?: string; identifier?: string; triggerInBackground?: boolean; skipIfBatteryLow?: boolean; respectQuietHours?: boolean; } export interface TimeInterval { seconds?: number; minutes?: number; hours?: number; days?: number; weeks?: number; months?: number; years?: number; } export interface RepeatOptions { interval: RepeatInterval; count?: number; until?: Date; frequency?: number; byDay?: WeekDay[]; byMonth?: number[]; byMonthDay?: number[]; byYearDay?: number[]; byWeekNo?: number[]; byHour?: number[]; byMinute?: number[]; bySecond?: number[]; bySetPos?: number[]; wkst?: WeekDay; } export interface DateComponents { year?: number; month?: number; day?: number; hour?: number; minute?: number; second?: number; weekday?: WeekDay; weekOfYear?: number; dayOfYear?: number; quarter?: number; era?: number; timeZone?: string; } export type SchedulePriority = 'low' | 'normal' | 'high' | 'urgent'; export interface ScheduledNotification { id: string; scheduledAt: Date; nextTrigger?: Date; lastTrigger?: Date; triggerCount: number; status: ScheduleStatus; options: ScheduleOptions; notification: any; error?: string; metadata?: ScheduleMetadata; } export type ScheduleStatus = 'pending' | 'active' | 'paused' | 'completed' | 'cancelled' | 'failed'; export interface ScheduleMetadata { createdAt: Date; updatedAt: Date; createdBy?: string; tags?: string[]; source?: string; version?: string; platform?: string; deviceId?: string; userId?: string; sessionId?: string; } export interface ScheduleBatch { notifications: ScheduledNotification[]; options?: ScheduleBatchOptions; } export interface ScheduleBatchOptions { atomic?: boolean; continueOnError?: boolean; maxConcurrency?: number; timeout?: number; priority?: SchedulePriority; metadata?: Record<string, any>; } export interface ScheduleQuery { status?: ScheduleStatus[]; from?: Date; to?: Date; tags?: string[]; limit?: number; offset?: number; sortBy?: 'createdAt' | 'scheduledAt' | 'nextTrigger'; sortOrder?: 'asc' | 'desc'; includeCompleted?: boolean; includeMetadata?: boolean; } export interface ScheduleStatistics { total: number; pending: number; active: number; paused: number; completed: number; cancelled: number; failed: number; triggeredToday: number; triggeredThisWeek: number; triggeredThisMonth: number; averageDelay: number; successRate: number; failureRate: number; nextTriggers: NextTrigger[]; } export interface NextTrigger { id: string; scheduledAt: Date; title: string; body: string; timeUntil: number; } export interface ScheduleValidation { valid: boolean; errors: ValidationError[]; warnings: ValidationWarning[]; nextTriggers: Date[]; } export interface ValidationError { code: string; message: string; field?: string; value?: any; } export interface ValidationWarning { code: string; message: string; field?: string; value?: any; severity: 'low' | 'medium' | 'high'; } export interface SchedulePerformance { processingTime: number; memoryUsage: number; cpuUsage: number; batteryImpact: number; networkRequests: number; storageUsage: number; cacheHitRate: number; errorRate: number; } export interface ScheduleOptimization { recommendations: OptimizationRecommendation[]; potentialSavings: ResourceSavings; impact: OptimizationImpact; } export interface OptimizationRecommendation { type: 'batch' | 'timing' | 'frequency' | 'cleanup' | 'caching'; priority: 'low' | 'medium' | 'high'; description: string; implementation: string; estimatedBenefit: string; } export interface ResourceSavings { battery: number; memory: number; cpu: number; network: number; storage: number; } export interface OptimizationImpact { userExperience: 'improved' | 'neutral' | 'degraded'; performance: 'improved' | 'neutral' | 'degraded'; reliability: 'improved' | 'neutral' | 'degraded'; maintenance: 'simplified' | 'neutral' | 'complex'; } export interface QuietHours { enabled: boolean; start: TimeOfDay; end: TimeOfDay; timezone?: string; days?: WeekDay[]; exceptions?: QuietHoursException[]; behavior?: QuietHoursBehavior; } export interface TimeOfDay { hour: number; minute: number; second?: number; } export interface QuietHoursException { date: Date; disabled: boolean; reason?: string; } export interface QuietHoursBehavior { action: 'suppress' | 'delay' | 'silent'; priority?: SchedulePriority; allowUrgent?: boolean; allowInteractive?: boolean; maxDelay?: number; } export interface ScheduleExportOptions { format: 'json' | 'csv' | 'xml' | 'ical'; includeMetadata?: boolean; includeHistory?: boolean; dateRange?: { from: Date; to: Date; }; filter?: ScheduleQuery; compression?: boolean; encryption?: boolean; } export interface ScheduleImportOptions { format: 'json' | 'csv' | 'xml' | 'ical'; overwrite?: boolean; validateOnly?: boolean; batchSize?: number; skipInvalid?: boolean; updateExisting?: boolean; preserveIds?: boolean; defaultOptions?: Partial<ScheduleOptions>; } export type NotificationSchedule = ScheduleOptions; export type ScheduleAt = Date; export type ScheduleOn = DateComponents; export type ScheduleEvery = RepeatOptions; export interface ScheduleResult { notifications: ScheduledNotification[]; success: boolean; errors?: ValidationError[]; } //# sourceMappingURL=scheduling.d.ts.map