export declare type DurationUnit = 'year' | 'years' | 'quarter' | 'quarters' | 'month' | 'months' | 'week' | 'weeks' | 'day' | 'days' | 'hour' | 'hours' | 'minute' | 'minutes' | 'second' | 'seconds' | 'millisecond' | 'milliseconds';
export interface TDuration {
    years?: number;
    months?: number;
    weeks?: number;
    days?: number;
    hours?: number;
    minutes?: number;
    seconds?: number;
    milliseconds?: number;
}
export declare const UNITS_PLURAL: Record<DurationUnit, DurationUnit>;
export declare class Duration {
    values: TDuration;
    private matrix;
    constructor(dur?: number | TDuration | Duration, exact?: boolean);
    /** Get the years. */
    get years(): number;
    /** Get the months. */
    get months(): number;
    /** Get the weeks. */
    get weeks(): number;
    /** Get the days. */
    get days(): number;
    /** Get the hours. */
    get hours(): number;
    /** et the minutes. */
    get minutes(): number;
    /** Get the seconds. */
    get seconds(): number;
    /** Get the milliseconds. */
    get milliseconds(): number;
    /**
     * Get the value of unit.
     * @param {string} unit - a unit such as 'minute' or 'day'
     * @example Duration.fromObject({years: 2, days: 3}).get('years') // 2
     * @example Duration.fromObject({years: 2, days: 3}).get('months') // 0
     * @example Duration.fromObject({years: 2, days: 3}).get('days') // 3
     * @return {number}
     */
    get(unit: any): any;
    add(duration: TDuration): Duration;
    /**
     * Make this Duration shorter by the specified amount. Return a newly-constructed Duration.
     * @param {Duration|Object|number} duration - The amount to subtract.
     * @return {Duration}
     */
    subtract(duration: any): Duration;
    /**
     * Return the negative of this Duration.
     * @example
  ```js
  new Duration({ hours: 1, seconds: 30 }).negated().toObject()
  // { hours: -1, seconds: -30 }
  ```
     * @returns {Duration}
     */
    negated(): Duration;
    /**
     * Return the absolute values of this Duration.
     * @example
  ```js
  new Duration({ hours: 1, seconds: -30 }).abs().toObject()
  // { hours: 1, seconds: 30 }
  ```
     * @returns {Duration}
     */
    abs(): Duration;
    private shiftToAll;
    private shiftTo;
    total(unit: DurationUnit): number;
    exact(unit?: DurationUnit): number | this;
    toObject(): {
        years?: number;
        months?: number;
        weeks?: number;
        days?: number;
        hours?: number;
        minutes?: number;
        seconds?: number;
        milliseconds?: number;
    };
    normalize(): Duration;
    rescale(): Duration;
    /**
     * Returns an ISO 8601-compliant string representation of this Duration.
     * @see https://en.wikipedia.org/wiki/ISO_8601#Durations
     * @example Duration.fromObject({ years: 3, seconds: 45 }).toString() // 'P3YT45S'
     * @example Duration.fromObject({ months: 4, seconds: 45 }).toString() // 'P4MT45S'
     * @example Duration.fromObject({ months: 5 }).toString() // 'P5M'
     * @example Duration.fromObject({ minutes: 5 }).toString() // 'PT5M'
     * @example Duration.fromObject({ milliseconds: 6 }).toString() // 'PT0.006S'
     * @return {string}
     */
    toISOString(): string;
    toString(): string;
    /**
     * Create a Duration from an ISO 8601 duration string.
     *
     * @example
  ```js
  Duration.fromISO('P3Y6M1W4DT12H30M5S').toObject()
  // { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 }
  Duration.fromISO('PT23H').toObject()
  // { hours: 23 }
  Duration.fromISO('P5Y3M').toObject()
  // { years: 5, months: 3 }
  ```
     * @return {Duration}
     */
    static fromISO(text: string): Duration;
}
