import { TZDate } from '@date-fns/tz'; declare global { interface Window { pktTz: string; } } /** * Returns the current date in the specified timezone, with time set to 00:00:00 * @param tz - Timezone string (default: window.pktTz) * @returns Date object representing today's date in the specified timezone */ export declare const todayInTz: (tz?: string) => Date; /** * Parses an ISO date string and returns a Date object. * Handles "YYYY-MM-DD", "YYYY-MM", and "YYYY" formats as local dates. * @param date - The ISO date string to parse * @returns A Date object */ export declare function parseISODateString(date: string | null | undefined): Date; /** * Formats a Date or TZDate object to an ISO date string (YYYY-MM-DD). * Uses local time, not UTC. * @param date - The Date or TZDate object to format * @returns An ISO date string */ export declare const formatISODate: (date: Date | TZDate) => string; /** * Converts an ISO date string to a Date object * @param date - The ISO date string to convert * @returns A Date object or null if invalid */ export declare const fromISOToDate: (date: string | null) => Date | null; /** * Converts an ISO date string to a formatted date string * @param date - The ISO date string to convert * @param dateformat - The desired date format * @returns A formatted date string */ export declare const fromISOtoLocal: (date: string, dateformat: string) => string; /** * Creates a new Date object based on the provided date string or Date object. * Optionally sets the time to the start or end of the day. * @param date - The date string or Date object * @param timeOfDay - 'start' to set time to 00:00:00, 'end' to set time to 23:59:59 * @returns A Date object */ export declare const newDate: (date?: string | Date, timeOfDay?: "start" | "end") => Date; /** * Creates a new Date object based on the provided year, month, and day. * If the inputs are invalid, returns the current date. * @param year - The year * @param month - The month (0-11) * @param day - The day of the month (default: 1) * @returns A Date object */ export declare const newDateYMD: (year: number, month: number, day?: number) => Date; /** * Creates a new Date object based on the provided date string or Date object. * Sets the time to noon (12:00:00) to avoid timezone issues. * @param date - The date string or Date object * @returns A Date object with time set to noon */ export declare const newDateFromDate: (date: Date | TZDate | number) => Date; export declare const formatReadableDate: (date: Date | TZDate) => string; /** * Validates if a date is within the specified range * @param date - The date to validate * @param min - The minimum date (ISO string) * @param max - The maximum date (ISO string) * @returns boolean indicating if the date is in range */ export declare const isDateInRange: (date: Date, min?: string | null, max?: string | null) => boolean; /** * Checks if a date is in the list of excluded dates * @param date - The date to check * @param excludedDates - Array of excluded date strings (ISO format) * @returns boolean indicating if the date is excluded */ export declare const isDateExcluded: (date: Date, excludedDates: string[]) => boolean; /** * Checks if a date's weekday is excluded * @param date - The date to check * @param excludedWeekdays - Array of excluded weekdays (0 = Sunday, 1 = Monday, etc.) * @returns boolean indicating if the weekday is excluded */ export declare const isWeekdayExcluded: (date: Date, excludedWeekdays: string[]) => boolean; /** * Validates if a date can be selected based on all constraints * @param date - The date to validate * @param min - The minimum date (ISO string) * @param max - The maximum date (ISO string) * @param excludedDates - Array of excluded date strings (ISO format) * @param excludedWeekdays - Array of excluded weekdays (0 = Sunday, 1 = Monday, etc.) * @returns boolean indicating if the date is selectable */ export declare const isDateSelectable: (date: Date, min?: string | null, max?: string | null, excludedDates?: string[], excludedWeekdays?: string[]) => boolean; /** * Filters an array of date strings to only include selectable dates * @param dates - Array of date strings (ISO format) * @param min - The minimum date (ISO string) * @param max - The maximum date (ISO string) * @param excludedDates - Array of excluded date strings (ISO format) * @param excludedWeekdays - Array of excluded weekdays (0 = Sunday, 1 = Monday, etc.) * @returns Array of selectable date strings */ export declare const filterSelectableDates: (dates: string[], min?: string | null, max?: string | null, excludedDates?: string[], excludedWeekdays?: string[]) => string[]; /** * Sorts an array of ISO date strings chronologically * @param dates - Array of date strings (ISO format) * @returns Sorted array of date strings */ export declare const sortDateStrings: (dates: string[]) => string[]; /** * Validates a date range (start should be before or equal to end) * @param startDate - The start date (ISO string) * @param endDate - The end date (ISO string) * @returns boolean indicating if the date range is valid */ export declare const isValidDateRange: (startDate: string, endDate: string) => boolean; declare const _default: { todayInTz: (tz?: string) => Date; parseISODateString: typeof parseISODateString; formatISODate: (date: Date | TZDate) => string; fromISOToDate: (date: string | null) => Date | null; fromISOtoLocal: (date: string, dateformat: string) => string; newDate: (date?: string | Date, timeOfDay?: "start" | "end") => Date; newDateYMD: (year: number, month: number, day?: number) => Date; newDateFromDate: (date: Date | TZDate | number) => Date; formatReadableDate: (date: Date | TZDate) => string; isDateInRange: (date: Date, min?: string | null, max?: string | null) => boolean; isDateExcluded: (date: Date, excludedDates: string[]) => boolean; isWeekdayExcluded: (date: Date, excludedWeekdays: string[]) => boolean; isDateSelectable: (date: Date, min?: string | null, max?: string | null, excludedDates?: string[], excludedWeekdays?: string[]) => boolean; filterSelectableDates: (dates: string[], min?: string | null, max?: string | null, excludedDates?: string[], excludedWeekdays?: string[]) => string[]; sortDateStrings: (dates: string[]) => string[]; isValidDateRange: (startDate: string, endDate: string) => boolean; }; export default _default;