import type { Dayjs } from "dayjs"; import type { TimeValue } from "../TimePicker/types"; /** * Reverse timezone conversion: extract date/time values from a timezone-aware * dayjs and create a browser-local Date. This undoes applyTimezone so that * Calendar and input display the correct date after a controlled round-trip. */ export declare const toBrowserLocalDate: (date: Date) => Date; export declare const toNativeDate: (value: unknown) => Date | null; export declare const coerceDateValue: (value: unknown, type: "date" | "range") => Date | [Date | null, Date | null] | null; export declare const getInitialCalendarMonth: (value: unknown, defaultValue: unknown, type: "date" | "range") => Date; /** * Format a date for display using browser-local time. * Calendar and input always show browser-local dates. */ export declare const formatDate: (date: Date | null, formatStr: string) => string; /** * Parse a date string using browser-local pureDayjs (not timezone-aware). * The user types in browser-local time; timezone conversion happens * later in commitValue via applyTimezone. */ export declare const parseDate: (str: string, formatStr: string) => Date | null; export declare const applyTimeToDate: (date: Date, time: TimeValue) => Date; /** * Reinterpret a native Date's browser-local time values in the user's configured timezone. * Formats in browser-local time (pureDayjs), then reparses through timezone-aware dayjs. * Matches neetoUI's getTimezoneAppliedDateTime behavior. */ export declare const applyTimezone: (date: Date) => Date; export declare const toUserTzDayjs: (date: Date) => Dayjs; export declare const toDayjs: (date: Date) => Dayjs; export declare const getDisplayFormat: (dateFormat: string, timeFormat: string, showTime: boolean) => string; export declare const getDatePlaceholder: (dateFormat: string, timeFormat: string, showTime: boolean, type: "date" | "range") => string; export declare const isDatePartComplete: (part: string, maskEnabled: boolean, singleDateLen: number) => boolean; export declare const parseRangeText: (text: string, displayFormat: string, maskEnabled: boolean, singleDateLen: number) => [Date, Date] | null; export declare const startOfWeek: (date: Date, weekStartsOn?: number) => Date; export declare const weekDaysFrom: (start: Date) => Date[]; export declare const isMonthDisabled: (monthDate: Date, minDate?: Date, maxDate?: Date) => boolean; export declare const isYearDisabled: (yearDate: Date, minDate?: Date, maxDate?: Date) => boolean; export declare const buildMonth: (year: number, month: number) => Date; export declare const isSameMonth: (a: Date | null, b: Date) => boolean; export declare const isSameDay: (a: Date | null, b: Date | null) => boolean; export declare const orderRange: (from: Date | null, to: Date | null) => [Date | null, Date | null]; export declare const parseGridcellDay: (target: EventTarget | null) => Date | null; export declare const computeRangePreview: ({ pendingRange, committed, hoveredDate, rangeStep, }: { pendingRange: [Date | null, Date | null] | null; committed: [Date | null, Date | null] | null; hoveredDate: Date | null; rangeStep: "from" | "to"; }) => { from: Date | null; to: Date | null; }; export declare const decadeStartFor: (year: number) => number;