import { type DateFormatPreset } from "@ryuzaki13/react-foundation-lib/formatters";
export type DateTimeInputMode = "date-time" | "time";
/**
 * Фиксированный формат нового поля даты-времени.
 */
export declare const DATE_TIME_INPUT_FORMAT = "dd.MM.yyyy HH:mm";
export declare const TIME_INPUT_FORMAT = "HH:mm";
/**
 * Создаёт техническую базовую дату для режима выбора только времени.
 */
export declare function createTimeOnlyBaseDate(hours?: number, minutes?: number): Date;
/**
 * Возвращает формат пользовательского ввода для выбранного режима.
 */
export declare function getDateTimeInputFormat(mode?: DateTimeInputMode): string;
/**
 * Создаёт временную предустановку форматирования для нового поля даты-времени.
 */
export declare function createDateTimeInputPreset(mode?: DateTimeInputMode): DateFormatPreset;
/**
 * Нормализует внешнее значение к валидному Date без timezone-сдвига.
 */
export declare function normalizeDateTimeValue(value: Date | null | undefined, mode?: DateTimeInputMode): Date | null;
/**
 * Форматирует значение поля даты-времени в фиксированный пользовательский формат.
 */
export declare function formatDateTimeInputValue(value: Date | null | undefined, mode?: DateTimeInputMode): string;
/**
 * Строго парсит строку пользовательского ввода в Date.
 */
export declare function parseDateTimeInputValue(value: string, mode?: DateTimeInputMode): Date | null;
/**
 * Проверяет, попадает ли дата-время в допустимый диапазон.
 */
export declare function isDateTimeWithinRange(value: Date, minDate?: Date, maxDate?: Date, mode?: DateTimeInputMode): boolean;
/**
 * Переносит дату выбранного дня, сохраняя часы и минуты базового значения.
 */
export declare function mergeDateWithTime(datePart: Date, timeSource?: Date | null): Date;
/**
 * Переносит часы и минуты в базовую календарную дату.
 */
export declare function mergeTimeIntoDate(baseDate: Date, hours: number, minutes: number, mode?: DateTimeInputMode): Date;
/**
 * Создаёт рабочую дату для picker-сценариев без выбранного значения.
 */
export declare function resolvePickerBaseDate(value: Date | null | undefined, fallbackDate: Date, mode?: DateTimeInputMode): Date;
/**
 * Возвращает границы часов и минут для выбранного календарного дня.
 */
export declare function getTimeRangeForDay(day: Date, minDate?: Date, maxDate?: Date, mode?: DateTimeInputMode): {
    disabled: boolean;
    minHour: number;
    maxHour: number;
    minMinuteByHour: (hour: number) => number;
    maxMinuteByHour: (hour: number) => number;
};
/**
 * Ограничивает часы и минуты допустимым диапазоном текущего дня.
 */
export declare function clampTimeForDay(day: Date, hours: number, minutes: number, minDate?: Date, maxDate?: Date, mode?: DateTimeInputMode): {
    hours: number;
    minutes: number;
};
//# sourceMappingURL=dateTimeValue.d.ts.map