package space.nstart.pcp.pcp_satellites_service.service

import space.nstart.pcp.pcp_types_lib.dto.requests.CoverageCalculationSource
import space.nstart.pcp.pcp_types_lib.dto.requests.slots.OccupiedIntervalDTO
import space.nstart.pcp.pcp_types_lib.dto.requests.slots.SlotCoverageStrategy
import space.nstart.pcp.pcp_types_lib.dto.requests.slots.SlotCoverageTargetDTO
import space.nstart.pcp.pcp_types_lib.dto.requests.slots.SlotDTO
import java.time.LocalDateTime

interface CoverageCalculationClient {
    val source: CoverageCalculationSource

    fun coverageModes(
        targets: List<SlotCoverageTargetDTO>,
        intervalStart: LocalDateTime,
        intervalEnd: LocalDateTime,
        satelliteIds: List<Long>,
        occupiedIntervals: List<OccupiedIntervalDTO> = emptyList(),
        sun: Double? = null,
        coverageStrategy: SlotCoverageStrategy? = null
    ): Map<Long, List<SlotDTO>>
}
