import type { _NSCoder } from "./NSCoder.js";
import type { _NSCopying } from "./NSCopying.js";
import type { _NSDate } from "./NSDate.js";
import type { _NSObject } from "./NSObject.js";
export declare class _NSDateInterval extends _NSObject {
    static alloc(): _NSDateInterval;
    static new(): _NSDateInterval;
    /**
     * This method initializes an NSDateInterval object with start and end dates set to the current date and the duration set to 0.
     */
    init(): _NSDateInterval;
    initWithCoder$(coder: _NSCoder): _NSDateInterval;
    /** This method will throw an exception if the duration is less than 0. */
    initWithStartDate$duration$(startDate: _NSDate, duration: number): _NSDateInterval;
    /**
     * This method will throw an exception if the end date comes before the start date.
     */
    initWithStartDate$endDate$(startDate: _NSDate, endDate: _NSDate): _NSDateInterval;
    /**
     * (NSComparisonResult)compare:(NSDateInterval *) prioritizes ordering by start date. If the start dates are equal, then it will order by duration. e.g. Given intervals a and b a. |-----| b. |-----| [a compare:b] would return NSOrderedAscending because a's startDate is earlier in time than b's start date. In the event that the start dates are equal, the compare method will attempt to order by duration. e.g. Given intervals c and d c. |-----| d. |---| [c compare:d] would result in NSOrderedDescending because c is longer than d. If both the start dates and the durations are equal, then the intervals are considered equal and NSOrderedSame is returned as the result.
     */
    compare$(dateInterval: _NSDateInterval): number;
    isEqualToDateInterval$(dateInterval: _NSDateInterval): boolean;
    intersectsDateInterval$(dateInterval: _NSDateInterval): boolean;
    /**
     * This method returns an NSDateInterval object that represents the interval where the given date interval and the current instance intersect. In the event that there is no intersection, the method returns nil.
     */
    intersectionWithDateInterval$(dateInterval: _NSDateInterval): _NSDateInterval | null;
    containsDate$(date: _NSDate): boolean;
    /**
     * NSDateInterval represents a closed date interval in the form of [startDate, endDate]. It is possible for the start and end dates to be the same with a duration of 0. NSDateInterval does not support reverse intervals i.e. intervals where the duration is less than 0 and the end date occurs earlier in time than the start date.
     */
    startDate(): _NSDate;
    endDate(): _NSDate;
    duration(): number;
}
export interface _NSDateInterval extends _NSCopying {
}
