// Property Types
export interface Property {
  id: string;
  title: string;
  description: string;
  price: string;
  type: 'buy' | 'rent';
  propertyType: 'house' | 'apartment' | 'villa' | 'land';
  location: string;
  latitude?: string | null;
  longitude?: string | null;
  bedrooms?: number | null;
  bathrooms?: number | null;
  sqft?: number | null;
  features?: string[];
  images?: string[];
  ownerId: string;
  isActive: boolean;
  createdAt?: Date;
  updatedAt?: Date;
}

// Moving Service Types
export interface MovingService {
  id: string;
  name: string;
  description: string;
  price: string;
  category: 'residential' | 'commercial' | 'packing' | 'storage';
  location: string;
  phone: string;
  email: string;
  features?: string[];
  images?: string[];
  rating?: number;
  isActive: boolean;
  createdAt?: Date;
  updatedAt?: Date;
}

// User Types
export interface User {
  id: string;
  name: string;
  email: string;
  phone?: string | null;
  role: 'buyer' | 'renter' | 'property_owner';
  profileCompleted: boolean | null;
  createdAt?: Date | null;
  updatedAt?: Date | null;
}

// API Response Types
export interface ApiResponse<T> {
  data: T;
  message?: string;
  status: 'success' | 'error';
}

// Filter Types
export interface PropertyFilters {
  type?: 'buy' | 'rent';
  propertyType?: 'house' | 'apartment' | 'villa' | 'land';
  location?: string;
  minPrice?: number;
  maxPrice?: number;
  limit?: number;
  offset?: number;
  search?: string;
}

export interface MovingServiceFilters {
  category?: 'residential' | 'commercial' | 'packing' | 'storage';
  location?: string;
  limit?: number;
  offset?: number;
}

// Booking Types
export interface Booking {
  id: string;
  serviceId: string;
  customerName: string;
  customerEmail: string;
  customerPhone: string;
  serviceDate: string;
  notes?: string;
  status: 'pending' | 'confirmed' | 'completed' | 'cancelled';
  totalPrice: string;
  createdAt?: Date;
  updatedAt?: Date;
}