package org.github.tess1o.geopulse.streaming;

import io.quarkus.runtime.annotations.RegisterForReflection;
import org.github.tess1o.geopulse.streaming.config.TimelineConfig;
import org.github.tess1o.geopulse.streaming.model.TimelineJobProgress;
import org.github.tess1o.geopulse.streaming.model.domain.LocationSource;
import org.github.tess1o.geopulse.streaming.model.domain.ProcessorMode;
import org.github.tess1o.geopulse.streaming.model.domain.TimelineEventType;
import org.github.tess1o.geopulse.streaming.model.dto.*;
import org.github.tess1o.geopulse.streaming.model.entity.*;
import org.github.tess1o.geopulse.streaming.model.shared.DataGapStayOverrideLocationStrategy;
import org.github.tess1o.geopulse.streaming.model.shared.MovementTypeSource;
import org.github.tess1o.geopulse.streaming.model.shared.TripType;

@RegisterForReflection(targets = {
        TimelineStayEntity.class,
        TimelineTripEntity.class,
        TimelineTripMovementOverrideEntity.class,
        TimelineDataGapStayOverrideEntity.class,
        TimelineRegenerationCampaignEntity.class,
        TimelineRegenerationCampaignUserEntity.class,
        TimelineRegenerationCampaignSource.class,
        TimelineRegenerationCampaignStatus.class,
        TimelineRegenerationCampaignUserStatus.class,
        TimelineDataGapEntity.class,
        LocationSource.class,
        ProcessorMode.class,
        TimelineEventType.class,
        TripType.class,
        DataGapStayOverrideLocationStrategy.class,
        MovementTypeSource.class,
        TimelineDataGapDTO.class,
        MovementTimelineDTO.class,
        TimelineStayLocationDTO.class,
        TimelineTripDTO.class,
        TripMovementTypeUpdateRequest.class,
        TripMovementTypeUpdateResponseDTO.class,
        DataGapStayOverrideRequest.class,
        DataGapStayOverrideResponseDTO.class,
        DataGapStayConversionPreviewDTO.class,
        TimelineDataGapDTO.class,
        CreateTimelineRegenerationCampaignRequest.class,
        TimelineRegenerationCampaignPreviewRequest.class,
        TimelineRegenerationCampaignPreviewDTO.class,
        TimelineRegenerationCampaignSummaryDTO.class,
        TimelineRegenerationCampaignDetailDTO.class,
        TimelineRegenerationCampaignUserDTO.class,
        TimelineConfig.class,
        TimelineJobProgress.class,
        TimelineJobProgress.JobStatus.class,
        PagedPlaceVisitsDTO.class,
        PlaceDetailsDTO.class,
        PlaceGeometryDTO.class,
        PlaceStatisticsDTO.class,
        PlaceVisitPatternsDTO.class,
        PlaceVisitDTO.class,
        FavoriteRelationDTO.class,
        TripClassificationDetailsDTO.class,
        BoatSetupStatusDTO.class,
        BoatSetupStartResponseDTO.class,
        // Location Analytics DTOs
        LocationStatisticsDTO.class,
        LocationAnalyticsMapPlaceDTO.class,
        TopPlaceInLocationDTO.class,
        CitySummaryDTO.class,
        CityDetailsDTO.class,
        CityInCountryDTO.class,
        CountrySummaryDTO.class,
        CountryDetailsDTO.class,
        LocationSearchResultDTO.class,
        MultiUserTimelineDTO.class,
        MultiUserTimelineDTO.UserTimelineDTO.class,
        MultiUserTimelineDTO.MultiUserTimelineDTOBuilder.class,
        MultiUserTimelineDTO.TimelineStats.class,
        PlacePhotoSearchWindowDTO.class,
        LocationLookupFavoriteDTO.class,
        LocationLookupVisitDTO.class,
        LocationLookupMatchDTO.class,
        LocationLookupResponseDTO.class
})
public class StreamingNativeConfig {
}
