export interface PulseXConfig {
  apiEndpoint: string;
  interval: number;
  maxQueueSize?: number;
}

export interface EngagementTrackingTask {
  element: HTMLElement;
  threshold?: number;
}

export interface EventPayload {
  _id: string;
  sessionId: string;
  type: string;
  pageUrl: string;
  referrer: string;
  data: any;
  createdAt: string;
}

export interface SectionEngagement {
  sectionId: string;
  startTime: number;
  endTime: number;
  totalDuration: number;
}

// New Types for Additional Events

export interface ClickEvent {
  elementId: string;
  textContent: string;
  timestamp: number;
  x: number;
  y: number;
  button: number; // 0 = Left, 1 = Middle, 2 = Right
}

export interface HoverEvent {
  elementId: string;
  startTime: number;
  endTime: number;
  hoverDuration: number;
  clicked: boolean;
  clickData: ClickEvent | null;
}

export interface FormSubmissionEvent {
  formId: string;
  timestamp: number;
  inputValues: Record<string, string | boolean | number>;
}
