import { DatePickerDateFormat, DatePickerPresetTime, DatePickerTimeFormat, DatePickerWeekStartDay, InputSize, InputVariant } from '../../shared/types';
export type LuksoInputDatePickerOnChangeEventDetail = {
    /** Resolved ISO 8601 date-time string, e.g. "2026-05-15T20:00". */
    value: string;
    /**
     * The active preset when a preset triggered the change.
     * Omitted when the user picks a date directly without a preset active.
     */
    preset?: DatePickerPresetTime;
    event: Event;
};
declare const LuksoInputDatePicker_base: typeof import('lit').LitElement;
/**
 * An input that opens a date picker dropdown when clicked.
 * Displays the selected date/time inline with customizable formatting.
 * Emits `on-change` with `{ value: string, preset?: DatePickerPresetTime, event }` where `value`
 * is a resolved ISO 8601 date-time string, or an empty string when `'forever'` is selected.
 *
 * When `presets` is provided the trigger becomes a preset selector.
 * Selecting `'now'` or `'forever'` immediately emits `on-change` without opening the calendar.
 * Selecting a relative object preset (`{ amount, unit }`) opens the calendar pre-navigated to
 * the resolved date so the user can adjust before confirming; the emitted event carries both
 * the chosen ISO date and the originating preset reference.
 * Selecting `{ time: 'pick' }` opens the calendar for fully manual date selection.
 *
 * @prop {InputVariant} variant - Visual variant. `'default'` uses `bg-neutral-100`; `'subtle'` uses `bg-neutral-97` for use on slightly darker surfaces.
 */
export declare class LuksoInputDatePicker extends LuksoInputDatePicker_base {
    /** ISO 8601 date-time string, e.g. "2026-05-15T20:00". Can also be a string sentinel ("now", "forever", "pick") to pre-select a matching preset when `presets` is configured. */
    value?: string;
    /** Minimum selectable date as ISO date string, e.g. "2026-01-01" */
    min?: string;
    /** Maximum selectable date as ISO date string, e.g. "2026-12-31" */
    max?: string;
    /** BCP-47 locale tag for Intl formatting. Defaults to the device locale. */
    locale: string;
    /** Component size preset. */
    size: InputSize;
    /** Placeholder text shown when no date is selected. */
    placeholder: string;
    /** Optional label shown above the input. */
    label?: string;
    /** Optional description shown below the label. */
    description?: string;
    /** Optional error message shown below the input. */
    error?: string;
    /** Whether to show the time picker and include time in the displayed value. */
    showTime: boolean;
    /** How to display the date in the input field. */
    dateFormat: DatePickerDateFormat;
    /** Time display format. "auto" detects the device preference via Intl. */
    timeFormat: DatePickerTimeFormat;
    /** First day of the week in the calendar grid. */
    weekStartDay: DatePickerWeekStartDay;
    /** Disables all interaction. */
    isDisabled: boolean;
    /** Makes the input read-only (display only, cannot open picker). */
    isReadonly: boolean;
    /** Stretches the input to full width. */
    isFullWidth: boolean;
    /** Removes the border from the input. */
    borderless: boolean;
    /** CSS color value for the selected day background. Forwarded to date picker. */
    selectedBgColor?: string;
    /** CSS color value for the selected day text. Forwarded to date picker. */
    selectedTextColor?: string;
    /** Opens the calendar above the input instead of below. */
    openTop: boolean;
    /** Aligns the calendar to the right edge of the input. */
    openRight: boolean;
    /**
     * JSON-stringified array of DatePickerPreset objects.
     * When provided, replaces the plain date input with a preset-selector dropdown.
     * Example: '[{"label":"Now","time":"now"},{"label":"Pick a date…","time":"pick"}]'
     * Preset time values: "now" | "forever" | "pick" | { amount: number, unit: "minute" | "hour" | "day" | "week" | "month" | "year" }.
     * Negative `amount` selects a past date. "forever" emits an empty string value (no date).
     */
    presets?: string;
    variant: InputVariant;
    private _isOpen;
    private _internalValue?;
    private _presetsParsed;
    private _activePreset;
    private _isPresetOpen;
    /** Holds the preset that triggered an open-calendar flow for relative presets, until the user confirms a date. */
    private _pendingPreset;
    /** Snapshot of `_internalValue` taken before a relative preset opens the calendar, used to restore on cancel. */
    private _internalValueBeforePending?;
    /** True once the user has interacted with the calendar (date or time change) while a pending preset is active. */
    private _presetDateConfirmed;
    private readonly _inputId;
    private _boundOutsideClick?;
    private wrapperStyles;
    private inputStyles;
    private iconStyles;
    connectedCallback(): void;
    disconnectedCallback(): void;
    willUpdate(changed: Map<string | number | symbol, unknown>): void;
    /**
     * Compares two preset time values for structural equality.
     * For object presets, compares amount and unit rather than stringified form
     * so that key-insertion order in persisted JSON does not cause mismatches.
     */
    private _presetTimesMatch;
    /**
     * Converts a preset time value into an ISO 8601 local-time string.
     * Uses local time (not UTC) to match lukso-date-picker's internal _buildIsoValue().
     */
    private _resolvePresetTime;
    private _formatDisplayValue;
    private _stopDropdownChange;
    private _handleOutsideClick;
    private _handleInputClick;
    /**
     * Handles preset selection from the dropdown.
     *
     * - `now` / `forever`: emit immediately without opening the calendar.
     * - `pick`: open blank calendar (existing behaviour).
     * - Relative object presets: open the calendar pre-navigated to the resolved
     *   date so the user can adjust before confirming. The preset is stored in
     *   `_pendingPreset` and adopted into `_activePreset` only once the user
     *   picks a date from the calendar.
     */
    private _handlePresetSelect;
    /**
     * Handles date selection from the calendar.
     *
     * When a `_pendingPreset` exists (i.e. the calendar was opened via a relative
     * preset), it is adopted into `_activePreset` on close so the round-trip guard
     * in `willUpdate` keeps the preset state stable.
     */
    private _handleDatePickerChange;
    private _renderStandardTrigger;
    private _renderPresetTrigger;
    render(): import('lit-html').TemplateResult<1>;
}
declare global {
    interface HTMLElementTagNameMap {
        'lukso-input-date-picker': LuksoInputDatePicker;
    }
}
export {};
//# sourceMappingURL=index.d.ts.map