import type { Dayjs } from "dayjs";
import type { TimeValue } from "../TimePicker/types";
export declare const coerceDateValue: (value: unknown, type: "date" | "range") => Date | [Date | null, Date | null] | null;
/**
 * 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 toDayjs: (date: Date) => Dayjs;
export declare const getDisplayFormat: (dateFormat: string, timeFormat: string, showTime: boolean) => 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;
