import type { EngagementEvent, EngagementAction, EngagementEntityType } from '../entities/EngagementEvent';

export interface IEngagementRepository {
  save(event: EngagementEvent): Promise<void>;
  findById(id: string): Promise<EngagementEvent | null>;
  findByEntityId(entityType: EngagementEntityType, entityId: string): Promise<EngagementEvent[]>;
  findByAction(action: EngagementAction): Promise<EngagementEvent[]>;
  findByDateRange(startDate: Date, endDate: Date): Promise<EngagementEvent[]>;
  countByAction(action: EngagementAction, entityId?: string, since?: Date): Promise<number>;
  getSponsorClicksForEntity(entityId: string, since?: Date): Promise<number>;
}
