/**
 * ROI tracking type definitions
 */

// ROI aggregate summary metrics
export interface RoiSummary {
  total_clicks_lift: number;
  avg_ctr_improvement: number;
  pages_improved: number;
  total_recommendations_tracked: number;
}

// Recommendation with ROI snapshot data
export interface RecommendationWithRoi {
  id: number;
  page_url: string;
  /** null when the stored action_type value doesn't match any known ActionType enum case */
  action_type: string | null;
  baseline_date: string;
  baseline_clicks: number;
  baseline_impressions: number;
  baseline_ctr: number;
  baseline_position: number;
  current_clicks: number;
  current_impressions: number;
  current_ctr: number;
  current_position: number;
  clicks_delta: number;
  impressions_delta: number;
  ctr_delta: number;
  position_delta: number;
  clicks_delta_pct: number;
  ctr_delta_pct: number;
  days_tracked: number;
  is_significant: boolean;
  last_calculated_at: string | null;
}

// ROI timeline chart data point
export interface TimelineDataPoint extends Record<string, unknown> {
  interval: string;
  clicks_lift: number;
  ctr_improvement: number;
}

// ROI dashboard filters
export interface RoiFilters {
  action_type: string | null;
  time_interval: string | null;
}

// ROI dashboard page props
export interface RoiDashboardPageProps {
  site: {
    id: number;
    name: string;
    domain: string;
  };
  summary: RoiSummary;
  recommendations: {
    data: RecommendationWithRoi[];
    links: Array<{ url: string | null; label: string; active: boolean }>;
    current_page: number;
    last_page: number;
    per_page: number;
    total: number;
  };
  timeline_data?: TimelineDataPoint[];
  filters: RoiFilters;
}
