import { IDateSelectionService } from '../interfaces/date-selection.service.interfaces';
/**
 * Implementation of DateSelectionService
 * Responsible for handling date selection and ranges
 */
export declare class DateSelectionService implements IDateSelectionService {
    /**
     * Select a single date
     * @param date Date to select
     * @returns Selected date
     */
    selectDate(date: Date): Date;
    /**
   * Select a date for a range
   * @param date Date being selected
   * @param currentRange Current date range
   * @returns Updated date range
   */
    selectDateRange(date: Date, currentRange: {
        startDate?: Date | null;
        endDate?: Date | null;
        start?: Date | null;
        end?: Date | null;
    }): {
        startDate: Date | null;
        endDate: Date | null;
    };
    /**
     * Clear the current selection
     * @param isRangeMode Whether in range selection mode
     * @returns Updated selection state
     */
    clearSelection(): {
        selectedDate: Date | null;
        selectedDateRange: {
            startDate: Date | null;
            endDate: Date | null;
        };
    };
    /**
     * Clear the date range selection
     * @returns Empty date range
     */
    clearDateRange(): {
        startDate: Date | null;
        endDate: Date | null;
    };
    /**
     * Check if a date is selected
     * @param date Date to check
     * @param selectedDate Currently selected date
     * @returns Boolean indicating if date is selected
     */
    isDateSelected(date: Date, selectedDate: Date | null): boolean;
    /**
   * Check if a date is in the selected range
   * @param date Date to check
   * @param range Currently selected range
   * @returns Object with range info
   */
    isDateInRange(date: Date, range: {
        startDate: Date | null;
        endDate: Date | null;
    }): {
        isInRange: boolean;
        isRangeStart: boolean;
        isRangeEnd: boolean;
    };
    /**
     * Check if a date is in the selected range (simplified version)
     * @param date Date to check
     * @param range Currently selected range
     * @returns Boolean indicating if the date is in range
     */
    isDateInSelectedRange(date: Date, range: {
        startDate: Date | null;
        endDate: Date | null;
    }): boolean;
}
