import { DateInput } from '@rschedule/core'; import { Dates } from './dates'; import { CollectionIterator, ICollectionsArgs, IOccurrencesArgs, IRunArgs, OccurrenceGenerator, OccurrenceGeneratorRunResult, OccurrenceIterator, } from './occurrence-generator'; import { RuleBase } from './rule-base'; declare type UnwrapArray< T extends ReadonlyArray > = T extends ReadonlyArray ? R : never; export interface IScheduleBaseArgs { timezone?: string | null; data?: Data; maxDuration?: number; } export declare abstract class ScheduleBase< Data = any > extends OccurrenceGenerator { abstract readonly rrules: ReadonlyArray>; abstract readonly exrules: ReadonlyArray>; abstract readonly rdates: Dates; abstract readonly exdates: Dates; /** * Convenience property for holding arbitrary data. */ data: Data; abstract readonly isInfinite: boolean; abstract readonly hasDuration: boolean; protected abstract readonly occurrenceStream: OccurrenceGenerator; /** * Create a new Schedule object with the specified options. * * The order of precidence for rrules, rdates, exrules, and exdates is: * * 1. rrules are included * 2. exrules are excluded * 3. rdates are included * 4. exdates are excluded * */ constructor(options: IScheduleBaseArgs); occurrences( args?: IOccurrencesArgs, ): OccurrenceIterator<[this, UnwrapArray | this['rdates']]>; collections( args?: ICollectionsArgs, ): CollectionIterator<[this, UnwrapArray | this['rdates']]>; abstract add( prop: 'rrule' | 'exrule', value: RuleBase, ): ScheduleBase; abstract add(prop: 'rdate' | 'exdate', value: DateInput): ScheduleBase; abstract remove( prop: 'rrule' | 'exrule', value: RuleBase, ): ScheduleBase; abstract remove( prop: 'rdate' | 'exdate', value: DateInput, ): ScheduleBase; abstract set( prop: 'timezone', value: string | null, options?: { keepLocalTime?: boolean; }, ): ScheduleBase; abstract set( prop: 'rrules' | 'exrules', value: RuleBase[], ): ScheduleBase; abstract set(prop: 'rdates' | 'exdates', value: Dates): ScheduleBase; _run(args?: IRunArgs): OccurrenceGeneratorRunResult; } export {};