@everwhen/temporal
Version:
41 lines (40 loc) • 1.77 kB
TypeScript
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;
}