import moment, { Moment, unitOfTime } from 'moment-mini';
export { Moment } from 'moment-mini';

declare type DateType = Date | string | number;
declare const weekDayNames: readonly ["SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "WEEKDAY", "WEEKEND"];
declare type WeekDayNames = typeof weekDayNames[number];
declare type GetDateFunctionOptions = {
    utc?: boolean;
    keepLocal?: boolean;
};
declare type GetDateFunction = {
    <DateInput extends DateType>(date: DateInput | undefined | null, options?: GetDateFunctionOptions): DateInput extends undefined | null ? undefined : moment.Moment;
    <DateInput extends DateType>(date: DateInput, options?: GetDateFunctionOptions): moment.Moment;
    <DateInput extends Moment>(date: DateInput, options?: GetDateFunctionOptions): moment.Moment;
};
declare const getDate: GetDateFunction;
declare const isValidDate: (unk: unknown) => unk is DateType;
declare const isDateOnWeekend: (date: DateType) => boolean;
declare const isDateOnDay: (date: DateType, isDay: WeekDayNames | WeekDayNames[]) => boolean;
declare const dateForceUtc: <T extends DateType>(unk: T) => T extends null | undefined ? Date | undefined : Date;
declare const getFormattedDate: (date: DateType | undefined, format?: string) => string;
declare const getDateInt: (date: DateType | undefined) => number;
declare const getStartEndOfTheDay: (date: DateType | undefined, opt: `END` | `START`) => Moment;
declare const getDateOffset: (date: DateType, offset?: number, unit?: unitOfTime.DurationConstructor) => Moment;
declare const offsettingDateWithTimezone: (date: DateType, timezone: number) => Moment;
declare const getCurrentUtcOffset: (date?: DateType) => number;
declare const getDateDifference: (date1: DateType, date2: DateType, unit?: unitOfTime.Diff) => number;
declare const getStartEndOfTheMonth: (date: DateType | undefined, opt: `END` | `START`) => Moment;
declare const getDateRangeArray: (start: DateType, end: DateType, unit?: unitOfTime.Diff) => DateType[];
declare const getAllDatesInMonth: (date: DateType) => DateType[];
declare const getDurations: (dateFrom: DateType, dateTo: DateType) => {
    days: number;
    hours: number;
    minutes: number;
    seconds: number;
};
declare const isTimeInBetween: (now: DateType, startTime: string, endTime: string, options?: {
    keepLocal?: boolean;
    utc?: boolean;
}) => boolean;

export { DateType, GetDateFunction, GetDateFunctionOptions, WeekDayNames, dateForceUtc, getAllDatesInMonth, getCurrentUtcOffset, getDate, getDateDifference, getDateInt, getDateOffset, getDateRangeArray, getDurations, getFormattedDate, getStartEndOfTheDay, getStartEndOfTheMonth, isDateOnDay, isDateOnWeekend, isTimeInBetween, isValidDate, offsettingDateWithTimezone, weekDayNames };
