<?php
namespace Booktics\Appointment\Schedule;

interface Time_Slot_Strategy {
    /**
     * Generate time slots for a given date and schedule entries.
     *
     * @param array $service_entries Array of service schedule entries
     * @param array $team_entries Array of team member schedule entries
     * @param array $default_entries Array of default schedule entries
     * @param Time_Slot_Manager $manager
     * @param \DateTime $date
     * @return array Array of time slots
     */
    public function generate_slots(
        array $service_entries,
        array $team_entries,
        array $default_entries,
        Time_Slot_Manager $manager,
        \DateTime $date
    ): array;
}
