import { VegaCalendarEventRepeatOptions } from '../../../../types';
import { CalendarEventBaseRepeatPattern } from './base-repeat-pattern';
/** This code snippet defines a TypeScript class `CalendarEventRepeatPatternFactory` that serves as a factory for creating different types of repeat patterns for calendar events. Here's a breakdown of what the class and its methods are doing: */
declare class CalendarEventRepeatPatternFactory {
  /**
   * This `getPattern` method within the `CalendarEventRepeatPatternFactory` class is a public method that is responsible for creating and returning a specific type of repeat pattern for a calendar event based on the input parameters provided. Here's a breakdown of what this method is doing:
   *
   * @param {Date} startDate repeat start date
   * @param {VegaCalendarEventRepeatOptions|undefined} repeatOptions repeat options
   * @param {string} timezone The timezone identifier (e.g., America/New_York).
   * @returns {CalendarEventBaseRepeatPattern} the match repeat pattern
   */
  getPattern(startDate: Date, repeatOptions: VegaCalendarEventRepeatOptions, timezone?: string): CalendarEventBaseRepeatPattern;
  /**
   * The `initDate` function initializes a `CalendarDate` object based on the input date string or Date object provided.
   *
   * @param {Nullable<string | Date>} date - The `date` parameter can be either a string or a Date object.
   * @param {string} timezone The timezone identifier (e.g., 'America/New_York').
   * @returns {Nullable<CalendarDate>} The function `initDate` returns a `Nullable<CalendarDate>`, which means it can return either a `CalendarDate` object or `null`.
   */
  private initDate;
  /**
   * The function `initRepeatPattern` initializes a repeat pattern based on the frequency specified for a calendar event.
   *
   * @param {VegaCalendarEventRepeatType} frequency event frequency
   * @param {CalendarDate} repeatStartDate event start date
   * @param {number} interval event repeat interval
   * @param {Nullable<number>} count the event repeat count
   * @param {Nullable<CalendarDate>} repeatEndDate repeat end date
   * @param {Nullable<VegaCalendarWeekDayType[]>} byWeekDay weekly week days
   * @returns {CalendarEventBaseRepeatPattern} calendar event repeat pattern instance
   */
  private initRepeatPattern;
}
declare const _default: CalendarEventRepeatPatternFactory;
export default _default;
