import { TimeRange } from "./time.interfaces";
/**
 * Time selection service interface
 * Handles time selection logic including single time and time range selection
 */
export interface ITimeSelectionService {
    /**
     * Select a specific time
     * @param time Time to select
     * @param currentSelectedTime Currently selected time
     * @param isRangeSelection Whether range selection is enabled
     * @param currentRange Current time range selection
     * @returns New selection state
     */
    selectTime(time: Date, currentSelectedTime: Date | null, isRangeSelection: boolean, currentRange: TimeRange): {
        selectedTime: Date | null;
        selectedTimeRange: TimeRange;
    };
    /**
     * Clear current time selection
     * @returns Cleared selection state
     */
    clearSelection(): {
        selectedTime: Date | null;
        selectedTimeRange: TimeRange;
    };
    /**
     * Check if a time is selected
     * @param time Time to check
     * @param selectedTime Currently selected time
     * @param selectedRange Currently selected range
     * @returns Whether the time is selected
     */
    isTimeSelected(time: Date, selectedTime: Date | null, selectedRange: TimeRange): boolean;
    /**
     * Check if a time is in the selected range
     * @param time Time to check
     * @param range Selected time range
     * @returns Whether the time is in range
     */
    isTimeInRange(time: Date, range: TimeRange): boolean;
    /**
     * Check if a time is the start of a range
     * @param time Time to check
     * @param range Selected time range
     * @returns Whether the time is range start
     */
    isRangeStart(time: Date, range: TimeRange): boolean;
    /**
     * Check if a time is the end of a range
     * @param time Time to check
     * @param range Selected time range
     * @returns Whether the time is range end
     */
    isRangeEnd(time: Date, range: TimeRange): boolean;
}
