export interface NotificationCategory {
  id: string;
  slug: string;
  name: string;
  description: string | null;
  is_system: boolean;
}

export type CampaignStatus = 'draft' | 'scheduled' | 'processing' | 'sent' | 'active' | 'paused' | 'completed' | 'cancelled';

export interface Campaign {
  id: string;
  name: string;
  category_id: string;
  category_slug?: string;
  category_name?: string;
  segment_rules: SegmentRules;
  status: CampaignStatus;
  send_mode: 'immediate' | 'scheduled' | 'timezone_aware' | 'recurring';
  scheduled_at: string | null;
  audience_count: number;
  processed_count: number;
  total_count: number;
  created_by: string;
  created_at: string;
  updated_at: string;
}

export interface CampaignVariant {
  id: string;
  campaign_id: string;
  name: string;
  title: string | null;
  body: string | null;
  deep_link: string | null;
  image_url: string | null;
  traffic_pct: number;
  is_control: boolean;
}

export interface SegmentRules {
  operator?: 'AND' | 'OR';
  rules?: SegmentRule[];
}

export interface SegmentRule {
  field: string;
  op: "eq" | "neq" | "gt" | "gte" | "lt" | "lte" | "in" | "is";
  value: string | string[] | number;
}

export interface CampaignDeliveryStats {
  total: number;
  queued: number;
  sent: number;
  delivered: number;
  failed: number;
  tapped: number;
  converted: number;
}

export interface CampaignWithStats extends Campaign {
  variant: CampaignVariant | null;
  stats: CampaignDeliveryStats;
}

export interface CreateCampaignInput {
  name: string;
  category_id: string;
  segment_rules: SegmentRules;
  variant_title: string;
  variant_body: string;
  variant_deep_link?: string;
}
