export declare enum DaysOfWeek {
    Sunday = 0,
    Monday = 1,
    Tuesday = 2,
    Wednesday = 3,
    Thursday = 4,
    Friday = 5,
    Saturday = 6
}
/**
 * @param year
 * @param month
 * @param day
 * @returns a new Date object
 */
export declare function createDate(year: string, month: string, day: string): Date;
/**
 * @param value date string in ISO format YYYY-MM-DD
 * @returns an ISO Date object
 */
export declare function parseISODate(value: string): Date;
/**
 * print date in format YYYY-MM-DD
 * @param date
 * @returns an iso date string
 */
export declare function printISODate(date: Date): string;
/**
 * Compare if two dates are equal in terms of day, month, and year
 * @param a date to compare
 * @param b date to compare
 * @returns boolean
 */
export declare function isEqual(a: Date, b: Date): boolean;
/**
 * Add days to a date
 * @param date
 * @param days
 * @returns a new Date
 */
export declare function addDays(date: Date, days: number): Date;
/**
 * Add months to a date
 * @param date
 * @param months
 * @returns a new Date
 */
export declare function addMonths(date: Date, months: number): Date;
/**
 * Add years to a date
 * @param date
 * @param years
 * @returns a new Date
 */
export declare function addYears(date: Date, years: number): Date;
/**
 * Takes a date and a day enum and finds the first day of that date's week
 * @param date
 * @param firstDayOfWeek
 * @returns the first day of a date's week
 */
export declare function startOfWeek(date: Date, firstDayOfWeek?: DaysOfWeek): Date;
/**
 * Takes a date and a day enum and finds the last day of that date's week
 * @param date
 * @param firstDayOfWeek
 * @returns the last day of that date's week
 */
export declare function endOfWeek(date: Date, firstDayOfWeek?: DaysOfWeek): Date;
/**
 * Get the date of the start of the month
 * @param date
 * @returns start of the month Date
 */
export declare function startOfMonth(date: Date): Date;
/**
 * Get the date of the end of the month
 * @param date
 * @returns end of the month Date
 */
export declare function endOfMonth(date: Date): Date;
/**
 * Changes a dates' month
 * @param date
 * @param month
 * @returns a new Date with the new month set
 */
export declare function setMonth(date: Date, month: number): Date;
/**
 * Changes a dates' year
 * @param date
 * @param year
 * @returns a new Date with the new year set
 */
export declare function setYear(date: Date, year: number): Date;
/**
 * Check if date is within a min and max
 * @param date
 * @param min
 * @param max
 * @returns boolean
 */
export declare function inRange(date: Date, min?: Date, max?: Date): boolean;
/**
 * Ensures date is within range, returns min or max if out of bounds
 * @param date
 * @param min
 * @param max
 * @returns the clamped date
 */
export declare function dateClamp(date: Date, min?: Date, max?: Date): Date;
/**
 * Given a date, return an array of dates from a calendar perspective
 * @param date
 * @param firstDayOfWeek
 * @returns an array of Date objects in the month range
 */
export declare function getViewOfMonth(date: Date, firstDayOfWeek?: DaysOfWeek): Date[];
