import type { NotificationEntity, NotificationCreationData, NotificationUpdateData } from '../entities/Notification';

/**
 * Port interface for Notification domain
 * This interface defines the contract that adapters must implement
 */
export interface NotificationPort {
  /**
   * Get all notification entities
   */
  getAll(): Promise<NotificationEntity[]>;

  /**
   * Get a notification entity by ID
   */
  getById(id: string): Promise<NotificationEntity>;

  /**
   * Create a new notification entity
   */
  create(data: NotificationCreationData): Promise<NotificationEntity>;

  /**
   * Update an existing notification entity
   */
  update(id: string, data: NotificationUpdateData): Promise<NotificationEntity>;

  /**
   * Delete a notification entity
   */
  delete(id: string): Promise<void>;
}