export type ReservationStatus =
  | "PENDING"
  | "CONFIRMED"
  | "CONVERTED"
  | "EXPIRED"
  | "CANCELED";

export interface ReservationCustomerSummary {
  id: string;
  name: string;
  document: string;
  phone?: string | null;
  email?: string | null;
}

export interface ReservationEquipmentSummary {
  id: string;
  code: string;
  assetTag: string;
  brand: string;
  model: string;
  dailyRate: number;
}

export interface Reservation {
  id: string;
  companyId: string;
  code: string;
  customerId: string;
  equipmentId: string;
  startDate: string;
  endDate: string;
  depositAmount: number;
  validUntil: string;
  notes?: string | null;
  status: ReservationStatus;
  createdAt: string;
  updatedAt: string;
  customer?: ReservationCustomerSummary;
  equipment?: ReservationEquipmentSummary;
}

export interface CreateReservationDTO {
  customerId: string;
  equipmentId: string;
  startDate: string;
  endDate: string;
  depositAmount?: number;
  validUntil?: string;
  notes?: string;
  status?: ReservationStatus;
}

export type UpdateReservationDTO = Partial<CreateReservationDTO>;

export interface ReservationStats {
  total: number;
  confirmed: number;
  pending: number;
  converted: number;
  totalDeposit: number;
  conversionRate: number;
}

export interface ReservationFilterParams {
  search?: string;
  status?: ReservationStatus | "ALL";
  customerId?: string | "ALL";
  equipmentId?: string | "ALL";
  page?: number;
  limit?: number;
}
