import { EventSchema } from '../../schemas/Event'; import { EventId } from 'teambition-types'; export declare type Timeframe = { startDate: Date; endDate: Date; }; export interface DateInfo { startDate: string; endDate: string; recurrence?: string[]; } export declare type InstanceCreator = (source: T, timeframe?: Timeframe) => T; export declare class RecurrenceFactory implements IterableIterator { readonly type: string; protected readonly source: T; private startDateCursor; private done; private readonly makeInst; private duration; private isRecurrence; private rruleSet; [Symbol.iterator]: () => this; protected constructor(source: T, type: string, makeInst: InstanceCreator); protected makeInstance(timeframe?: Timeframe): T; isRecurrent(): boolean; next(): IteratorResult; private getOneTimeframeAfter; private takePred; private slice; takeUntil(startDateUntil: Date, endDateUntil?: Date): T[]; takeFrom(fromDate: Date, startDateTo: Date, endDateTo?: Date): T[]; after(date: Date): T | null; findByTimestamp(timestamp: number): T | null; } export declare class EventGenerator extends RecurrenceFactory { private static makeInst; constructor(event: EventSchema); findByEventId(eventId: EventId): EventSchema | null; } export declare class Recurrence extends RecurrenceFactory { private static makeInst; constructor(dateInfo: DateInfo); }