"use client"

import { useEnterDetailsStore } from "@/stores/enter-details"

import TrackingSDK from "@/components/TrackingSDK"

import { getTracking } from "./tracking"

import type { SelectRateSearchParams } from "@/types/components/hotelReservation/selectRate/selectRate"
import type { Hotel } from "@/types/hotel"
import type { Room } from "@/types/providers/details/room"
import type { Lang } from "@/constants/languages"
import type { SelectHotelParams } from "@/utils/url"

interface TrackingWrapperProps {
  booking: SelectHotelParams<SelectRateSearchParams>
  hotel: Hotel
  rooms: Room[]
  city: string | undefined
  isMember: boolean
  lang: Lang
}

export default function EnterDetailsTrackingWrapper({
  booking,
  hotel,
  rooms,
  city,
  isMember,
  lang,
}: TrackingWrapperProps) {
  const { storedRooms, breakfastPackages } = useEnterDetailsStore((state) => ({
    storedRooms: state.rooms,
    breakfastPackages: state.breakfastPackages,
  }))

  const { hotelsTrackingData, pageTrackingData, ancillaries } = getTracking(
    booking,
    hotel,
    rooms,
    city,
    isMember,
    lang,
    storedRooms,
    breakfastPackages
  )
  return (
    <TrackingSDK
      hotelInfo={hotelsTrackingData}
      pageData={pageTrackingData}
      ancillaries={ancillaries}
    />
  )
}
