/** * Repository Interface: IEngagementRepository * * Defines persistence operations for EngagementEvent entities. */ import type { EngagementEvent, EngagementAction, EngagementEntityType } from '../entities/EngagementEvent'; export interface IEngagementRepository { save(event: EngagementEvent): Promise; findById(id: string): Promise; findByEntityId(entityType: EngagementEntityType, entityId: string): Promise; findByAction(action: EngagementAction): Promise; findByDateRange(startDate: Date, endDate: Date): Promise; countByAction(action: EngagementAction, entityId?: string, since?: Date): Promise; getSponsorClicksForEntity(entityId: string, since?: Date): Promise; }