import type { Inclusiveness } from '../types';
import type { LocalDate, LocalDateInput, LocalDateUnit } from './localDate';
export type DateIntervalConfig = DateInterval | DateIntervalString;
export type DateIntervalString = string;
/**
 * Class that supports ISO8601 "Time interval" standard that looks like `2022-02-24/2022-03-30`.
 *
 * @experimental
 */
export declare class DateInterval {
    start: LocalDate;
    end: LocalDate;
    private constructor();
    static of(start: LocalDateInput, end: LocalDateInput): DateInterval;
    /**
     * Parses string like `2022-02-24/2023-03-30` into a DateInterval.
     */
    static parse(d: DateIntervalConfig): DateInterval;
    isSame(d: DateIntervalConfig): boolean;
    isBefore(d: DateIntervalConfig, inclusive?: boolean): boolean;
    isSameOrBefore(d: DateIntervalConfig): boolean;
    isAfter(d: DateIntervalConfig, inclusive?: boolean): boolean;
    isSameOrAfter(d: DateIntervalConfig): boolean;
    /**
     * Ranges of DateInterval (start, end) are INCLUSIVE.
     */
    includes(d: LocalDateInput, incl?: Inclusiveness): boolean;
    intersects(int: DateIntervalConfig, inclusive?: boolean): boolean;
    /**
     * DateIntervals compare by start date.
     * If it's the same - then by end date.
     */
    cmp(d: DateIntervalConfig): -1 | 0 | 1;
    getDays(incl?: Inclusiveness): LocalDate[];
    /**
     * Returns an array of LocalDates that are included in the interval.
     */
    range(incl?: Inclusiveness, step?: number, stepUnit?: LocalDateUnit): LocalDate[];
    toString(): DateIntervalString;
    toJSON(): DateIntervalString;
}
