declare type TVehicle = {
  plateNumber: string;
  plates?: TPlateNumber[]; // For display purposes, the API will return an array of plate numbers if there are multiple associated with the same vehicle record
  type: TVehicleType;
  category: "resident" | "visitor";
  direction: "entry" | "exit" | "both" | "none";
  name: string;
  phoneNumber?: string;
  block: { 
    _id: string;
    name: string;
  }
  level: {
    _id: string;
    name: string;
  }
  unit: string;
  unitName?: string; // For display purposes, the API will return the unit name if available
  nric?: string | null;
  remarks?: string;
  seasonPassType?: string;
  start?: string; // ISO date string
  end?: string; // ISO date string
  site?: string;
  org?: string;
  _id?: string;
  recNo?: string;
  status?: TVehicleStatus;
  peopleId?: string; // For linking to a people record, if applicable
};

declare type TVehicleType = "whitelist" | "blocklist";
declare type TVehicleStatus = "active" | 'inactive' | "pending" | "deleted" | "rejected" ;

declare type TVehiclePayload = Pick<
  TVehicle,
  | "type"
  | "category"
  | "direction"
  | "name"
  | "phoneNumber"
  | "unit"
  | "nric"
  | "remarks"
  | "seasonPassType"
  | "start"
  | "end"
  | "site"
  | "org"
  | "peopleId"
> & { plateNumber?: string | string[], block?: string, level?: string };
