export interface Profile {
  id: string;
  name: string;
  age: number;
  location: string;
  matchPercentage: number;
  verified?: boolean;
  bio?: string;
  image?: string;
  avatar?: string;
  infoButtonText?: string;
  infoButtonColor?: "red" | "green" | "blue";
}

export interface HobbyItem {
  icon: string;
  color: string;
  label: string;
}

export interface InterestItem {
  icon: string;
  color: string;
  label: string;
}

export interface Photo {
  src: string;
  alt: string;
}

export interface AboutMeInfo {
  gender: string;
  age: number;
  occupation: string;
  relationship: string;
  location: string;
  heightRange: string;
  weightRange: string;
  religion: string;
  nationality: string;
}

export interface UserData {
  id: string;
  name: string;
  age: number;
  location: string;
  coverPhoto: string;
  profilePicture: string;
  bio: string;
  verified: boolean;
  matchPercentage: number;
  photos: Photo[];
  hobbies: HobbyItem[];
  interests: InterestItem[];
  aboutMe: AboutMeInfo;
  lookingFor: AboutMeInfo;
}

export interface EditProps {
  selectedStep: "edit" | "match";
  onUnmount?: (formData: FormData) => void;
  onCancel: () => void;
  onSave: () => void;
  formData: any;
  setFormData: React.Dispatch<React.SetStateAction<FormData>> | any;
  back?: () => void;
  weightOptions?: any;
  heightOptions?: any;
  maritalOptions?: any;
  genotypeOptions?: any;
  ethnicityOptions?: any;
  religionOptions?: any;
  languagesOption?: any;
  interestsOptions?: any;
  ageOptions?: any;
  relationshipOptions?: any;
  countryOptions?: any;
  stateOptions?: any;
  lgaOptions?: any;
  hobbiesOptions?: any;
}
export interface Customer {
  id: number;
  name: string;
  phoneNumber: string;
  email: string;
  subscribedAccounts: number;
  avatar: string;
  gender?: string;
  dateOfBirth?: string;
  occupation?: string;
  heightRange?: string;
  weightRange?: string;
  ethnicity?: string;
  genotype?: string;
  religion?: string;
  maritalStatus?: string;
  nationality?: string;
  state?: string;
  physicalAddress?: string;
  isAddressVerified?: boolean;
}

export interface FormsData {
  name?: string;
  mobileNumber?: string;
  dateOfBirth?: string;
  gender?: string;
  relationship?: string;
  physicalAddress?: string;
  city?: string;
  lga?: string; // Local Government Area
  landmark?: string;
  postalCode?: string;
  state?: string | string[];
  heightRange?: string | string[];
  weightRange?: string | string[];
  religion?: string;
  maritalStatus?: string;
  ethnicity?: string;
  genotype?: string;
  nationality?: string;
  languages?: string[];
  hobbies?: string[];
  interests?: string[];
  relationshipType?: string[];
  ageRange?: string[];
  // Add any additional fields that might exist in the object
  [key: string]: unknown;
}

export interface Option {
  label: string;
  value: string;
}

export interface LabelValue {
  label: string;
  value: string;
}

export interface Religion {
  id: number;
  user_preferred_match_id: string;
  religion: string;
  denomination: string;
  created_at: string;
  updated_at: string;
}

export interface PreferredMatch {
  id: number;
  user_id: string;
  relationship_type: string;
  gender: string[];
  age_range: LabelValue[];
  height_range: LabelValue[];
  marital_status: LabelValue[];
  ethnicity: LabelValue[];
  genotype: LabelValue[];
  nationality: LabelValue[];
  state: LabelValue[];
  created_at: string;
  updated_at: string;
  religions: Religion[];
}
[];

export interface UserType {
  user_id: string;
  first_name: string;
  last_name: string;
  middle_name: string;
  photo: string;
  photo_1: string | null;
  photo_2: string | null;
  photo_3: string | null;
  photo_4: string | null;
  cover_photo: string | null;
  state: string;
  age: number;
  short_bio: string | null;
  interest: string[];
  hobbies: string[];
  language_spoken: string[];
  about_me: {
    gender: string;
    occupation: string;
    marital_status: string;
    genotype: string;
    height_range: string;
    weight_range: string;
    religion: {
      id: number;
      user_bio_data_id: string;
      religion: string;
      denomination: string;
      created_at: string;
      updated_at: string;
    }[];
    nationality: string;
    age: number;
  };
  contact_details: {
    address: {
      id: number;
      user_id: string;
      house_number: string;
      street_name: string;
      land_mark: string;
      lga: string;
      postal_code: string;
      state: string;
      nationality: string;
      created_at: string; // ISO timestamp
      updated_at: string; // ISO timestamp
    };
    phone: string;
    email: string;
  };
  looking_for: any[]; // Update this if you know the structure
  available_retry: number;
  has_address_verified: boolean;
  is_favorite_by_me: boolean;
  is_subscribed_by_me: boolean;
  is_subscribed_to_me: boolean;

  is_blocked_by_me: boolean;

  is_mutual: boolean;
  verified_address: any;
}
