import { CalendarDate } from '../../../../helpers/calendar';
import { Nullable } from '../../../../types/general';
import { DatePickerModeType, DatePickerValueType } from '../../types';
/** Calendar selection object. */
export declare class CalendarSelection {
  readonly startDate: Nullable<CalendarDate>;
  readonly endDate: Nullable<CalendarDate>;
  private readonly mode;
  constructor(startDate: Nullable<CalendarDate>, endDate: Nullable<CalendarDate>, mode: DatePickerModeType);
  /**
   * Creates a CalendarSelection from a selection value.
   *
   * @param {DatePickerValueType<DatePickerModeType>} selection - The selection value.
   * @param {DatePickerModeType} mode - The mode of the date picker.
   * @param {string} format - The date format to use for string conversion.
   * @returns {CalendarSelection} - The created CalendarSelection instance.
   */
  static fromSelection(selection: DatePickerValueType<DatePickerModeType>, mode: DatePickerModeType, format: string): CalendarSelection;
  /**
   * Check if the selection is valid.
   *
   * @param {DatePickerValueType<DatePickerModeType>} selection - The selection value.
   * @param {DatePickerModeType} mode - The mode of the date picker.
   * @param {string} format - The date format to use for string conversion.
   * @returns {boolean} - True if the selection is valid, false otherwise.
   */
  private static isValidSelection;
  /**
   * Check if a date string is valid.
   *
   * @param {Nullable<string>} dateString - The date string to check.
   * @param {string} format - The date format to use for string conversion.
   * @returns {boolean} - True if the date string is valid, false otherwise.
   */
  private static isValidDateString;
  /**
   * Gets the selection value based on the current calendar selection.
   *
   * @param {string} format - The date format to use for string conversion.
   * @returns {DatePickerValueType<DatePickerModeType>} - The selection value.
   */
  toSelection(format: string): DatePickerValueType<DatePickerModeType>;
  /**
   * Checks if this calendar selection is equal to another.
   *
   * @param {CalendarSelection} other - The other calendar selection to compare with.
   * @returns {boolean} - True if both selections are equal, false otherwise.
   */
  equals(other: CalendarSelection): boolean;
  /**
   * Checks if the calendar selection is completed.
   *
   * @returns {boolean} - True if the selection is completed, false otherwise.
   */
  isCompleted(): boolean;
  /**
   * Checks if the calendar selection is empty.
   *
   * @returns {boolean} - True if the selection is empty, false otherwise.
   */
  isEmpty(): boolean;
}
