interface Facility {
  name: string;
  address: string;
  distance: string;
  coordinates: [number, number];
}

interface MapboxSuggestion {
  name: string;
  address: string;
  distance: string | number;
  coordinates: [number, number];
  mapbox_id?: string;
  category?: string;
}

interface MapboxApiResponse {
  suggestions?: MapboxSuggestion[];
}

interface ActiveCategoryIndices {
  [key: string]: number[];
}

interface PropertyArea {
  carpet: string;
  builtUp: string;
  super: string;
}

interface NearbyPlace {
  name: string;
  distance: string;
}

interface Property {
  propertyType: string;
  availableFor?: string;
  description: string;
  size: string;
  bathrooms: number;
  area: PropertyArea;
  parking: number;
  pricePerSqFt: string;
  furnishingStatus: string;
  floor: string;
  age: string;
  facing: string;
  balconies: number;
  possessionStatus: string;
  tags: string[];
  amenities: string[];
  nearbyPlaces: NearbyPlace[];
}

interface Prospect {
  id: number;
  name: string;
  avatar: string;
  phone: string;
  email: string;
  budget: string;
  requirements: string;
  projectName?: string;
  subcategoryNames?: string;
  unitName?: string;
  cityName?: string;
  status: string;
  updatedAt: string | Date;
  notes: string;
}
interface Activity {
  title: string;
  description: string;
  type: string;
  status: string;
  date: string;
  overdueBy?: number;
}

type PropertyHistoryItem = {
  date: string;
  action: string;
  statusText: string;
  user: {
    name: string;
    avatar: string;
  };
  notes: string;
};
interface individualProperties {
  id: string;
  title: string;
  description: string;
  status: string;
  propertyType: { id?: string; name?: string };
  propertySubtype: string;
  availableFor: string;
  subcategory: { id?: string; name?: string };
  price: string | number;
  carpetArea: string | number;
  builtUpArea?: string | number;
  superBuiltUpArea?: string | number;
  unitOfMeasurement?: string;
  length?: string | number;
  width?: string | number;
  bedrooms?: string | number;
  bathrooms?: string | number;
  balconies?: string | number;
  totalFloors?: string | number;
  floorNumber?: string | number;
  carParking?: string | number;
  furnishingStatus?: string;
  ownershipType?: string;
  ageOfProperty?: string;
  facing?: string;
  possessionStatus?: string;
  monthlyRent: string | number;
  address: string;
  locality: { id?: string; name?: string };
  configuration: { id?: string; name?: string };
  mediaUrls?: string[];
  city: { id?: string; name?: string };
  facilities?: { id?: string; name?: string }[];
  pincode: string;
  propertyTags?: { id?: string; name?: string }[];
  amenities?: { id?: string; name?: string }[];
  images?: string[];
  ownerName: string;
  ownerContact: string;
  media?: string[];
  parking?: string;
  ownerEmail?: string;
  tags?: string[];
  updatedBy?: string;
  listingType?: string;
  availability?: string;
  pantry?: string;
  brokerageAvailable?: string;
  washroom?: string;
  companyId?:
    | string
    | { id?: string; name?: string; logo?: string };
  project?: {
    _id?: string;
    projectName?: string;
    name?: string;
    mediaUrls?: string[];
  };
  cabin?: string;
  createdBy?: {
    _id?: string;
    firstName: string;
    lastName: string;
    avatar?: string;
  };
  createdAt?: string;
  updatedAt?: string;
  isSharing?: boolean;
  prospectCount?: number;
  brokerageAmount?: number;
}
