export type OrderStatus =
  | "WAITING_FOR_PAYMENT"
  | "ORDER_CREATED"
  | "CALCULATING_ROUTE_RECEIVE"
  | "ROUTE_ASSIGNED_RECEIVE"
  | "IN_TRANSIT_FOR_PACKAGE"
  | "ORDER_RECEIVED_FROM_CUSTOMER"
  | "IN_SORTING_CENTER"
  | "CALCULATING_ROUTE_DELIVERY"
  | "ROUTE_ASSIGNED_DELIVERY"
  | "IN_TRANSIT_TO_CUSTOMER"
  | "DELIVERY_COMPLETED"
  | "ORDER_CANCELED";

export interface LocationRequestDTO {
  streetAddress: string;
  postalCode: string;
  city: string;
  country: string;
}

export interface LocationResponseDTO {
  latitude: number;
  longitude: number;
  streetAddress: string;
  postalCode: string;
  city: string;
  country: string;
}

export interface CourierInfoDTO {
  id: string;
  firstName: string;
  lastName: string;
  email: string;
  phoneNumber?: string;
}

export interface OrderRequestDTO {
  customerId: string;
  weight: number;
  volume: number;
  recipientFirstName: string;
  recipientLastName: string
  recipientEmail: string;
  recipientPhone: string;
  pickupLocation: LocationRequestDTO;
  deliveryLocation: LocationRequestDTO;
}

export interface OrderResponseDTO {
  id: string;
  trackingNumber: string;
  customerId: string;
  status: OrderStatus;
  weight: number;
  volume: number;
  createdAt: string;
  recipientFirstName: string;
  recipientLastName: string
  recipientEmail: string;
  recipientPhone: string;
  pickupLocation: LocationResponseDTO;
  deliveryLocation: LocationResponseDTO;
  courierInfo?: CourierInfoDTO;
}

export interface TrackedOrder {
  trackingNumber: string;
  status: string;
  weight: number;
}