using System;
using System.Threading.Tasks;
namespace DesktopNotifications
{
///
/// Interface for notification managers that handle the presentation and lifetime of notifications.
///
public interface INotificationManager : IDisposable
{
///
/// The action identifier the process was launched with.
///
/// "default" denotes the platform-specific default action.
/// On Windows this means the user simply clicked the notification body.
///
///
string? LaunchActionId { get; }
///
/// Raised when a notification was activated. The notion of "activation" varies from platform to platform.
///
event EventHandler NotificationActivated;
///
/// Raised when a notification was dismissed. The exact reason can be found in
/// .
///
event EventHandler NotificationDismissed;
///
/// Initialized the notification manager.
///
///
Task Initialize();
///
/// Schedules a notification for presentation.
///
/// The notification to present.
/// The expiration time marking the point when the notification gets removed.
Task ShowNotification(Notification notification, DateTimeOffset? expirationTime = null);
///
///
///
///
///
///
Task ScheduleNotification(
Notification notification,
DateTimeOffset deliveryTime,
DateTimeOffset? expirationTime = null);
}
}