import { ITimeSelectionService, TimeRange } from "../interfaces";
/**
 * TimeSelectionService - Implementation of ITimeSelectionService
 * Handles time selection logic including single time and time range selection
 */
export declare class TimeSelectionService implements 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;
    /**
     * Helper method to check if two times are the same (to the second)
     * @param time1 First time
     * @param time2 Second time
     * @returns Whether times are the same
     */
    private isSameTime;
}
