import moment from 'moment';
import 'moment/locale/en-gb';
import { TimeUnits } from '../models';
import './object';
export { moment };
declare global {
    interface IDateExtents {
        from: number;
        to: number;
    }
    interface IDatePeriod {
        from: number;
        to: number;
        fraction?: number;
    }
    interface IFromPeriodsResult {
        joinedPeriods: IDatePeriod[];
        activePeriods: IDatePeriod[];
        inactivePeriods: IDatePeriod[];
        extents: IDateExtents;
    }
    interface DateConstructor {
        periods: {
            from(activePeriods: IDatePeriod[]): IFromPeriodsResult;
            from(activePeriods: IDatePeriod[], toTimeUnits: TimeUnits): IFromPeriodsResult;
            extents(periods: IDatePeriod[]): IDateExtents;
            doOverlap(period1: IDatePeriod, period2: IDatePeriod): boolean;
        };
        random(): Date;
        random(from: Date): Date;
        random(from: Date, to: Date): Date;
        min(...dates: Date[]): Date;
        toNumber(date: string): number;
        format(date: number): string;
        hasExpired(date: number): boolean;
        createExpiry(minutes: number): number;
        timeTaken(timeStarted: number): number;
        timeSince(time: number, unit: moment.unitOfTime.Diff): number;
    }
    interface Date {
        relationToNow(template?: string): string;
    }
}
