import { Notification, NotificationChannel } from '../entities/notification.entity';

/**
 * Abstract interface for notification delivery providers.
 * Each channel (PUSH, SMS, EMAIL) implements this interface.
 */
export interface INotificationProvider {
  /**
   * The channel this provider handles.
   */
  readonly channel: NotificationChannel;

  /**
   * Send a notification through this provider's channel.
   * @returns true if sent successfully, false otherwise.
   */
  send(notification: Notification): Promise<boolean>;
}

export const PUSH_NOTIFICATION_PROVIDER = Symbol('IPushNotificationProvider');
export const SMS_NOTIFICATION_PROVIDER = Symbol('ISmsNotificationProvider');
export const EMAIL_NOTIFICATION_PROVIDER = Symbol('IEmailNotificationProvider');
