UNPKG

@everwhen/temporal

Version:
41 lines (40 loc) 1.77 kB
import { Duration } from './duration.js'; import { PlainDate } from './plain-date.js'; import { PlainYearMonth } from './plain-year-month.js'; import { ComparablePoints, type Point } from './point.js'; export type ComparableInterval<T extends Point, U extends Point> = ComparablePoints<T, U> extends true ? U : never; export type IntervalLike<T extends Point = Point> = { start: T; end: T; } | Interval<T>; export declare class Interval<T extends Point = Point> { readonly start: T; readonly end: T; constructor(start: T, end: T); static from<T extends Point = Point>(intervalLike: IntervalLike<T>): Interval<T>; static from(yearMonth: PlainYearMonth): Interval<PlainDate>; static overlaps<T extends Point>(a: IntervalLike<T>, b: IntervalLike<T>, options?: { inclusive?: boolean; }): boolean; validate(): void; isBefore(other: IntervalLike<T>): boolean; isBefore<U extends Point>(other: IntervalLike<ComparableInterval<T, U>>): boolean; isAfter(other: IntervalLike<T>): boolean; isAfter<U extends Point>(other: IntervalLike<ComparableInterval<T, U>>): boolean; equals(other: IntervalLike<T>): boolean; equals<U extends Point>(other: IntervalLike<ComparableInterval<T, U>>): boolean; overlaps(other: IntervalLike<T>, options?: { inclusive?: boolean; }): boolean; overlaps<U extends Point>(other: IntervalLike<ComparableInterval<T, U>>, options?: { inclusive?: boolean; }): boolean; contains(value: T | IntervalLike<T>): boolean; contains<U extends Point>(value: ComparableInterval<T, U> | IntervalLike<ComparableInterval<T, U>>): boolean; toJSON(): { start: string; end: string; }; toString(): string; get duration(): Duration; }