/**
 * This class consists exclusively of the static methods that operate on or return date/time values
 */
export declare class Dates {
    private static msPerDay;
    /**
     * Gets the current date and time
     * @returns Current date/time value
     */
    static getDate(): Date;
    /**
     * Calculates the number of days in the month
     * @param date Base date
     * @returns Count of days
     */
    static daysInMonth(date: Date): number;
    /**
     * Calculates the number of days in the `quarter`
     * @param year The number of the year.
     * @param quarter The number of the quarter.
     * @returns Count of days
     */
    static daysInQuarter(year?: number, quarter?: number): number;
    /**
     * Calculates the number of days in the `year`
     * @param year The number of the year. Default is the current year.
     * @returns Count of days
     */
    static daysInYear(year?: number): number;
    /**
     * Calculates the date of the first week's day in the month
     * @param day Day of the week in range 0 Sunday to 6 Saturday
     * @param month Month
     * @param year Year
     * @returns Date
     */
    static firstDayInMonth(day: 0 | 1 | 2 | 3 | 4 | 5 | 6, month: number, year: number): Date;
    /**
     * Calculates the date of n-th week's day in the month
     * @param n Ordered number
     * @param day Day of week in range 0 Sunday to 6 Saturday
     * @param month Month
     * @param year Year
     * @returns Date
     */
    static nthDayInMonth(n: number, day: 0 | 1 | 2 | 3 | 4 | 5 | 6, month: number, year: number): Date;
    /**
     * Calculates the number of days to fixed `day` number
     * @param day The day number in the current month
     * @returns Number of days
     */
    static daysFromFixedDay(day: number): number;
    /**
     * Determines the number of days one date occurs after another.
     * @param date1 A date value that is the start date of the interval being measured
     * @param date2 A date value that is the end date of the interval
     * @returns {number} Returns a number of days date2 occurs after date1. If date2 occurs before date1, DaysAfter returns a negative number. If any argument's value is null, DaysAfter returns null.
     */
    static daysAfter(date1: Date, date2: Date): number | null;
    /**
     * Determines the number of seconds one date occurs after another.
     * @param date1 A date value that is the start date of the interval being measured
     * @param date2 A date value that is the end date of the interval
     * @returns {number} Returns a number of seconds date2 occurs after date1. If date2 occurs before date1, DaysAfter returns a negative number. If any argument's value is null, DaysAfter returns null.
     */
    static secondsAfter(date1: Date, date2: Date): number | null;
    /**
     * Obtains the date that occurs a specified number of days after or before another date
     * @param date A value of type date
     * @param days An integer indicating a number of days
     * @returns The date that occurs `days` after date if `days` is greater than 0. Returns the date that occurs `days` before date if `days` is less than 0. If any argument's value is null, {@link relativeDate} returns null.
     * @see {@link relativeTime}
     */
    static relativeDate(date: Date, days: number): Date | null;
    /**
     * Obtains a time that occurs a specified number of seconds after or before another time within a 24-hour period
     * @param date A value of type time
     * @param secs A long number of seconds
     * @returns The time that occurs `secs` seconds after time if `secs` is greater than 0. Returns the time that occurs `secs` seconds before time if `secs` is less than 0. The maximum return value is 23:59:59. If any argument's value is null, {@link relativeTime} returns null
     * @see {@link relativeDate}
     */
    static relativeTime(date: Date, secs: number): Date | null;
    /**
     * Converts milliseconds to number of days
     * @param ms Number of milliseconds
     * @returns Number/interval of days
     */
    static toDays(ms: number): number;
    /**
     * Converts date to UTC
     * @param date The base date
     * @returns The number of milliseconds, or `NaN` if the `date` is _null_.
     */
    static toUTC(date: Date | null): number;
    /**
     * Converts Date to localized ISO-string
     */
    static toString(date: Date | null, showTime?: boolean): string | null;
    /**
     * Gets the first date of the month
     * @param date The base date. Default is the current date.
     * @returns The calculated date, or _null_ if the `date` is _null_
     * @see {@link dateEOM}
     */
    static dateBOM(date?: Date | null): Date | null;
    /**
     * Gets the last date of the month
     * @param date The base date. Default is the current date.
     * @returns The calculated date, or _null_ if the `date` is _null_.
     * @see {@link dateBOM}
     */
    static dateEOM(date?: Date | null): Date | null;
    /**
     * Gets the first date of the year
     * @param date The base date. Default is the current date.
     * @returns The calculated date, or _null_ if the `date` is _null_.
     * @see {@link dateEOY}
     */
    static dateBOY(date?: Date | null): Date | null;
    /**
     * Gets the last date of the year
     * @param date The base date. Default is the current date.
     * @returns The calculated date, or _null_ if the `date` is _null_.
     * @see {@link dateBOY}
     */
    static dateEOY(date?: Date | null): Date | null;
    /**
     * Gets the first date of quarter
     * @param date The base date. Default is the current date.
     * @returns The calculated date, or _null_ if the `date` is _null_.
     * @see {@link dateEOQ}
     */
    static dateBOQ(date?: Date | null): Date | null;
    /**
     * Gets the last date of the quarter
     * @param date The base date. Default is the current date.
     * @returns The calculated date, or _null_ if the `date` is _null_.
     * @see {@link dateBOQ}
     */
    static dateEOQ(date?: Date | null): Date | null;
    /**
     * Gets the quarter number to which the `date` belongs
     * @param date The base date. Default is the current date.
     * @returns The quarter number starting from 0, or _null_ if the `date` is _null_.
     */
    static getQuarter(date?: Date | null): number | null;
    /**
     * Return whether the provided year is a leap year
     * @param year Year number to check
     * @returns _true_ if `year` is a leap year, else _false_.
     */
    static isLeapYear(year: number): boolean;
    /**
     * Returns the result of checking whether the number of hours in the specified date is less than 12
     * @param date Date to check. Default is the current date
     * @returns _true_ if hours of `date` is less than 12, else _false_.
     */
    static isAM(date?: Date | null): boolean | null;
    /**
     * Returns the result of checking whether the number of hours in the specified date is greater than or equal to 12
     * @param date Date to check. Default is the current date
     * @returns _true_ if hours of `date` is greater than or equal to 12, else _false_.
     */
    static isPM(date?: Date | null): boolean | null;
    /**
     * Get ISO-8601 numeric representation of the day of the week
     * 1 (for Monday) through 7 (for Sunday)
     * @param  date Source date. Default is current date.
     * @returns The day of the week starting from 1, or _null_ if the `date` is _null_.
     * @since 0.5.0
     */
    static getDayOfWeek(date?: Date | null): number | null;
    /**
     * Gets a day number in year
     * @param date Source date. Default is the current date
     * @returns Day number in year, or _null_ if the `date` is _null_.
     * @since 0.5.0
     */
    static getDayOfYear(date?: Date): number | null;
    /**
     * Gets a week number of month
     * @param date Source date. Default is the current date
     * @returns Week number of month, or _null_ if the `date` is _null_.
     * @since 0.5.0
     */
    static getWeekOfMonth(date?: Date | null): number | null;
    /**
     * Get the ISO 8601 week number of year
     * Based on comments from
     * http://techblog.procurios.nl/k/n618/news/view/33796/14863/Calculate-ISO-8601-week-and-year-in-javascript.html
     *
     * @param  date Source date. Default is the current date
     * @returns ISO 8601 week number of year, or _null_ if the `date` is _null_.
     * @since 0.5.0
     */
    static getWeek(date?: Date | null): number | null;
}
