export declare const WEEKDAYS: ReadonlyArray<'SU' | 'MO' | 'TU' | 'WE' | 'TH' | 'FR' | 'SA'>; export declare const MILLISECONDS_IN_SECOND = 1000; export declare const MILLISECONDS_IN_MINUTE: number; export declare const MILLISECONDS_IN_HOUR: number; export declare const MILLISECONDS_IN_DAY: number; export declare const MILLISECONDS_IN_WEEK: number; export interface IDateAdapter { /** Returns the date object this DateAdapter is wrapping */ readonly date: D; readonly timezone: string | null; readonly duration: number | undefined; /** * This property contains an ordered array of the generator objects * responsible for producing this IDateAdapter. * * - If this IDateAdapter was produced by a `Rule` object, this array * will just contain the `Rule` object. * - If this IDateAdapter was produced by a `Schedule` object, this * array will contain the `Schedule` object as well as the `Rule` * or `Dates` object which generated it. * - If this IDateAdapter was produced by a `Calendar` object, this * array will contain, at minimum, the `Calendar`, `Schedule`, and * `Rule`/`Dates` objects which generated it. */ readonly generators: unknown[]; valueOf(): number; toISOString(): string; toDateTime(): DateTime; toJSON(): IDateAdapter.JSON; assertIsValid(): boolean; } export declare namespace IDateAdapter { type Weekday = 'SU' | 'MO' | 'TU' | 'WE' | 'TH' | 'FR' | 'SA'; type TimeUnit = 'year' | 'month' | 'day' | 'hour' | 'minute' | 'second' | 'millisecond'; interface JSON { timezone: string | null; duration?: number; year: number; month: number; day: number; hour: number; minute: number; second: number; millisecond: number; } type Year = number; type YearDay = number; type Month = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12; type Day = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31; type Hour = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23; type Minute = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59; type Second = Minute; type Millisecond = number; } export declare class InvalidDateTimeError extends Error { } declare const DATETIME_ID: unique symbol; export declare class DateTime implements IDateAdapter { /** * Similar to `Array.isArray()`, `isInstance()` provides a surefire method * of determining if an object is a `DateTime` by checking against the * global symbol registry. */ static isInstance(object: any): object is DateTime; static fromJSON(json: IDateAdapter.JSON): DateTime; static fromDateAdapter(adapter: IDateAdapter): DateTime; readonly date: Date; /** * This property contains an ordered array of the generator objects * responsible for producing this DateAdapter. * * - If this DateAdapter was produced by a `Rule` object, this array * will just contain the `Rule` object. * - If this DateAdapter was produced by a `Schedule` object, this * array will contain the `Schedule` object as well as the `Rule` * or `Dates` object which generated it. * - If this DateAdapter was produced by a `Calendar` object, this * array will contain, at minimum, the `Calendar`, `Schedule`, and * `Rule`/`Dates` objects which generated it. */ readonly generators: unknown[]; readonly [DATETIME_ID] = true; readonly timezone: string | null; readonly duration: number | undefined; private _end; private constructor(); /** * Returns `undefined` if `this.duration` is falsey. Else returns * the `end` date. */ readonly end: DateTime | undefined; isEqual(object?: DateTime): boolean; isBefore(object: DateTime): boolean; isBeforeOrEqual(object: DateTime): boolean; isAfter(object: DateTime): boolean; isAfterOrEqual(object: DateTime): boolean; isOccurring(object: DateTime): boolean; add(amount: number, unit: IDateAdapter.TimeUnit | 'week'): DateTime; subtract(amount: number, unit: IDateAdapter.TimeUnit | 'week'): DateTime; get(unit: 'year'): IDateAdapter.Year; get(unit: 'yearday'): IDateAdapter.YearDay; get(unit: 'month'): IDateAdapter.Month; get(unit: 'weekday'): IDateAdapter.Weekday; get(unit: 'day'): IDateAdapter.Day; get(unit: 'hour'): IDateAdapter.Hour; get(unit: 'minute'): IDateAdapter.Minute; get(unit: 'second'): IDateAdapter.Second; get(unit: 'millisecond'): IDateAdapter.Millisecond; set(unit: IDateAdapter.TimeUnit | 'duration', value: number): DateTime; granularity(granularity: IDateAdapter.TimeUnit | 'week', opt?: { weekStart?: IDateAdapter.Weekday; }): DateTime; endGranularity(granularity: IDateAdapter.TimeUnit | 'week', opt?: { weekStart?: IDateAdapter.Weekday; }): DateTime; toISOString(): string; toDateTime(): this; toJSON(): IDateAdapter.JSON; valueOf(): number; assertIsValid(): boolean; private forkDateTime; } export declare function dateTimeSortComparer(a: DateTime, b: DateTime): 0 | 1 | -1; export declare function uniqDateTimes(dates: DateTime[]): DateTime[]; export declare function orderedWeekdays(wkst?: IDateAdapter.Weekday): ("SU" | "MO" | "TU" | "WE" | "TH" | "FR" | "SA")[]; export declare function isLeapYear(year: number): boolean; export declare function getDaysInYear(year: number): 366 | 365; export {}; //# sourceMappingURL=date-time.d.ts.map