export interface UserContactData {
  firstName: string;
  lastName?: string;
  email: string;
  phone: string;
  city?: string;
  zip?: string;
}

export interface AssessmentData {
  goal: string;
  currentLevel: string;
  blocker: string;
  availability?: string;
  timeline?: string;
  preferredFormat?: string;
}

export interface MetaTrackingData {
  fbclid?: string | null;
  fbc?: string | null;
  fbp?: string | null;
  utm_source?: string | null;
  utm_medium?: string | null;
  utm_campaign?: string | null;
  utm_content?: string | null;
  utm_term?: string | null;
  ad_id?: string | null;
  campaign_id?: string | null;
  pageUrl?: string;
  referrer?: string;
  userAgent?: string;
}

export interface CAPIEventRecord {
  id: string;
  timestamp: string;
  eventName: string;
  eventId: string;
  status: 'sent_to_meta' | 'simulated_success' | 'failed';
  matchedParameters: string[];
  eventMatchQuality: number;
  rawPayload: any;
  metaResponse?: any;
  error?: string;
}

export interface RawLeadRecord {
  id: number;
  event_id: string;
  created_at: string;
  first_name: string;
  last_name: string;
  email: string;
  phone: string;
  goal: string;
  blocker: string;
  current_level: string;
  fbclid: string;
  fbc: string;
  fbp: string;
  utm_source: string;
  utm_medium: string;
  utm_campaign: string;
  utm_content: string;
  utm_term: string;
  ip_address: string;
  user_agent: string;
  page_url: string;
  emq_score: number;
  raw_json?: string;
}

export interface FormFieldSetting {
  visible: boolean;
  required: boolean;
  label: string;
  placeholder: string;
}

export interface FormConfig {
  businessName: string;
  enableQuestion1: boolean; // Question 1: Objectif
  enableQuestion2: boolean; // Question 2: Blocage & Niveau
  fields: {
    firstName: FormFieldSetting;
    lastName: FormFieldSetting;
    email: FormFieldSetting;
    phone: FormFieldSetting;
  };
}

export const DEFAULT_FORM_CONFIG: FormConfig = {
  businessName: 'Apex English Academy',
  enableQuestion1: true,
  enableQuestion2: true,
  fields: {
    firstName: {
      visible: true,
      required: true,
      label: 'Prénom',
      placeholder: 'Alexandre',
    },
    lastName: {
      visible: false,
      required: false,
      label: 'Nom de famille',
      placeholder: 'Dupont',
    },
    email: {
      visible: true,
      required: true,
      label: 'Email pro ou personnel',
      placeholder: 'alexandre@domaine.com',
    },
    phone: {
      visible: true,
      required: false,
      label: 'Numéro de mobile',
      placeholder: '06 12 34 56 78',
    },
  },
};
