import '../domain/app_settings.dart'; import '../domain/course_occurrence.dart'; enum ReminderStatus { off, permissionDenied, exact, inexact, error } class ReminderResult { const ReminderResult( this.status, { this.scheduledCount = 0, this.message = '', }); final ReminderStatus status; final int scheduledCount; final String message; } abstract class NotificationService { Future reconcile( List occurrences, AppSettings settings, DateTime now, ); Future requestPermissions(); Future cancelOwned(); Future sendTestReminder({required bool scheduled}) async => '当前环境不支持通知测试'; Future> diagnose() async => {}; Future openSettings({required bool background}) async {} } class ReminderSetupException implements Exception { const ReminderSetupException(this.code, this.message); final String code, message; }