import { type CalendarPeriodOptions, type DateFormatPrecision, type DateRangeInput, type NullableDateRange } from "@ryuzaki13/react-foundation-lib/formatters";
/**
 * Пресет даты по умолчанию для текстового поля.
 */
export declare const DEFAULT_DATE_INPUT_PRESET: "date";
/**
 * @deprecated Используйте `DEFAULT_DATE_INPUT_PRESET`.
 */
export declare const DEFAULT_DATE_INPUT_FORMAT = "dd.MM.yyyy";
export type DateInputValueOptions = {
    /**
     * Имя пресета форматирования даты.
     */
    datePreset?: string;
    /**
     * Точность календарного значения.
     */
    datePickerLevel?: DateFormatPrecision;
    /**
     * Размер периода, который выбирается и нормализуется полем.
     */
    selectionMode?: CalendarPeriodOptions["selectionMode"];
    /**
     * Последний включённый день недели для режима выбора недели.
     */
    weekEndDay?: CalendarPeriodOptions["weekEndDay"];
    /**
     * Опорная дата для пресетов без года, например `month-long`.
     */
    referenceDate?: Date;
};
export type DateInputValueOptionsInput = string | DateInputValueOptions | undefined;
/**
 * Приводит одиночную дату к началу выбранного календарного периода.
 */
export declare function normalizeSingleDateValue(date: Date | null, options?: DateInputValueOptions): Date | null;
/**
 * Приводит диапазон дат к границам выбранных календарных периодов.
 */
export declare function normalizeRangeDateValue(range: NullableDateRange | null, options?: DateInputValueOptions): NullableDateRange | null;
/**
 * Приводит конечную дату диапазона к концу выбранного календарного периода.
 */
export declare function normalizeRangeEndDateValue(date: Date | null, options?: DateInputValueOptions): Date | null;
/**
 * Сравнивает одиночные даты после нормализации к точности поля ввода.
 */
export declare function areSingleDateValuesEqual(left: Date | null, right: Date | null, options?: DateInputValueOptions): boolean;
/**
 * Сравнивает диапазоны дат после нормализации к границам выбранных периодов.
 */
export declare function areRangeDateValuesEqual(left: NullableDateRange | null, right: NullableDateRange | null, options?: DateInputValueOptions): boolean;
/**
 * Форматирует одиночную дату для текстового поля.
 */
export declare function formatSingleDateValue(date: Date | null, optionsOrPreset?: DateInputValueOptionsInput, datePickerLevel?: DateFormatPrecision): string;
/**
 * Форматирует диапазон дат для текстового поля.
 */
export declare function formatRangeDateValue(range: NullableDateRange | null, optionsOrPreset?: DateInputValueOptionsInput, datePickerLevel?: DateFormatPrecision): string;
/**
 * Унифицирует форматирование значения поля даты.
 */
export declare function formatDateInputValue(value: DateRangeInput, optionsOrPreset?: DateInputValueOptionsInput, datePickerLevel?: DateFormatPrecision): string;
/**
 * Парсит строку одиночной даты по заданному пресету.
 */
export declare function parseSingleDateValue(value: string, optionsOrPreset?: DateInputValueOptionsInput, datePickerLevel?: DateFormatPrecision): Date | null;
/**
 * Парсит строку диапазона дат по заданному пресету.
 */
export declare function parseRangeDateValue(value: string, optionsOrPreset?: DateInputValueOptionsInput, datePickerLevel?: DateFormatPrecision): NullableDateRange;
/**
 * Парсит конечную дату диапазона и нормализует её к концу суток.
 */
export declare function parseRangeEndDateValue(value: string, optionsOrPreset?: DateInputValueOptionsInput, datePickerLevel?: DateFormatPrecision): Date | null;
//# sourceMappingURL=dateInputValue.d.ts.map