import { CalendarDate } from '../../../../../../helpers/calendar';
import { Nullable } from '../../../../../../types/general';
import { CalendarEventBaseRepeatPattern } from './base-repeat-pattern';
/** The `CalendarEventDailyRepeatPattern` class in TypeScript represents a daily repeating pattern for calendar events. */
export declare class CalendarEventDailyRepeatPattern extends CalendarEventBaseRepeatPattern {
  /**
   * The constructor initializes the current date for a given date range and interval.
   *
   * @param {CalendarDate} startDate - The `startDate` parameter is of type `CalendarDate` and represents the starting date for a specific interval or range.
   * @param {number} interval - The `interval` parameter represents the frequency at which the event
   * occurs. For example, if the interval is set to 1, it means the event occurs every day. If the
   * interval is set to 2, it means the event occurs every other day.
   * @param {Nullable<number>} count - The `count` parameter specifies the number of occurrences of the event. If `count`
   * is provided, the event will repeat `count` times within the specified interval. If `count` is
   * `null`, the event will repeat indefinitely until the `until` date is reached.
   * @param {Nullable<CalendarDate>} until - The `until` parameter in the constructor is of type `Nullable<CalendarDate>`, which
   * means it can either accept a `CalendarDate` object or be `null`. This parameter is used to specify
   * a date until which the recurring event should repeat. If `until` is provided, the event
   */
  constructor(startDate: CalendarDate, interval: number, count: Nullable<number>, until: Nullable<CalendarDate>);
  /**
   * Generate repeat display string.
   *
   * @returns {string} repeat display string
   */
  generateRepeatString(): string;
  /**
   * The function generates and caches repeated dates before a specified end date.
   *
   * @param {CalendarDate} endDate - The `endDate` parameter represents the date until which you want to
   * generate repeat dates in the cache. The function `generateRepeatDateCacheBeforeEndDate` is
   * responsible for populating the cache with repeat dates until the specified `endDate`. It checks the
   * last date in the cache and generates subsequent repeat dates until
   */
  protected generateRepeatDateCacheUntilEndDate(endDate: CalendarDate): void;
  /**
   * The function `initCache` initializes a cache array with the `startDate` value.
   */
  private initCache;
  /**
   * The function getNextRepeatStartDate calculates the next repeat start date based on a given date and certain conditions.
   *
   * @param {CalendarDate} date - The `date` parameter represents the current date for which you want to
   * calculate the next repeat start date. It is an instance of the `CalendarDate` class.
   * @returns {Nullable<CalendarDate>} The function `getNextRepeatStartDate` returns either a `CalendarDate` object if certain
   * conditions are met, or `null` if the conditions are not met.
   */
  private getNextRepeatStartDate;
}
