/**
 * TyDatePicker Web Component
 * PORTED FROM: cljs/ty/components/date_picker.cljs
 *
 * A date picker component with read-only input and calendar dropdown.
 * Supports date-only and date+time modes with smart time input.
 *
 * Architecture:
 * - Read-only input stub (displays formatted date)
 * - Calendar dropdown (modal dialog with ty-calendar)
 * - Optional time input (with smart digit navigation)
 * - Form participation via ElementInternals
 * - UTC output, local display
 *
 * Features:
 * - Date selection with calendar dropdown
 * - Optional time input with smart navigation
 * - Form integration (works with FormData)
 * - UTC value output for server communication
 * - Localized display formatting (Intl API)
 * - Clearable with clear button
 * - Keyboard navigation (Escape to close)
 * - Outside click handling
 *
 * @example
 * ```html
 * <!-- Basic date picker -->
 * <ty-date-picker
 *   label="Select Date"
 *   placeholder="Choose a date">
 * </ty-date-picker>
 *
 * <!-- With time -->
 * <ty-date-picker
 *   with-time="true"
 *   label="Select Date & Time">
 * </ty-date-picker>
 *
 * <!-- Form integration -->
 * <form>
 *   <ty-date-picker name="booking-date"></ty-date-picker>
 *   <button type="submit">Submit</button>
 * </form>
 *
 * <!-- Pre-filled value (UTC) -->
 * <ty-date-picker value="2024-09-21T08:30:00.000Z"></ty-date-picker>
 * ```
 */
/**
 * Change event detail
 */
export interface DatePickerChangeDetail {
    value: string | null;
    localValue: string | null;
    milliseconds: number | null;
    formatted: string | null;
    source: 'selection' | 'time-change' | 'clear' | 'external';
}
export declare class TyDatePicker extends HTMLElement {
    private _state;
    private _internals?;
    private _clickListener?;
    private _keydownListener?;
    private _dialogClickListener?;
    private _timeInput?;
    private _localeObserver?;
    /**
     * Form-associated custom element
     */
    static formAssociated: boolean;
    /**
     * Observed attributes
     */
    static get observedAttributes(): string[];
    constructor();
    connectedCallback(): void;
    disconnectedCallback(): void;
    attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
    /**
     * Initialize component state from attributes
     *
     * PORTED FROM: init-component-state! in date_picker.cljs
     */
    private initializeState;
    /**
     * Update internal state
     *
     * PORTED FROM: update-component-state! in date_picker.cljs
     */
    private updateState;
    /**
     * Sync form value with current state
     */
    private syncFormValue;
    /**
     * Handle value attribute changes from external sources
     */
    private handleValueChange;
    /**
     * Handle time input changes from TimeInput class
     *
     * PORTED FROM: handle-time-change! in date_picker.cljs
     */
    handleTimeInputChange(hour: number, minute: number): void;
    /**
     * Emit change event
     *
     * PORTED FROM: emit-change-event! in date_picker.cljs
     */
    private emitChangeEvent;
    /**
     * Get current value (UTC ISO string)
     */
    get value(): string;
    /**
     * Set value (UTC ISO string or Date object)
     */
    set value(val: string | Date);
    /**
     * Build CSS classes for the stub element
     *
     * PORTED FROM: build-stub-classes in date_picker.cljs
     */
    private buildStubClasses;
    /**
     * Render the date picker stub (input display)
     *
     * PORTED FROM: render-date-picker-stub in date_picker.cljs
     */
    private renderStub;
    /**
     * Create time input element
     *
     * PORTED FROM: create-time-input in date_picker.cljs
     */
    private createTimeInputElement;
    /**
     * Render time input section
     */
    private renderTimeSection;
    /**
     * Render calendar dropdown with dialog
     *
     * PORTED FROM: render-calendar-dropdown in date_picker.cljs
     */
    private renderCalendarDropdown;
    /**
     * Calculate calendar position
     *
     * PORTED FROM: calculate-calendar-position! in date_picker.cljs
     */
    private calculateCalendarPosition;
    /**
     * Render container structure
     *
     * PORTED FROM: render-container-structure in date_picker.cljs
     */
    private renderContainer;
    /**
     * Main render method
     *
     * PORTED FROM: render! in date_picker.cljs
     */
    private render;
    /**
     * Update display without destroying DOM (for open dialog)
     *
     * PORTED FROM: update-display! in date_picker.cljs
     */
    private updateDisplay;
    /**
     * Setup document-level event listeners
     */
    private setupEventListeners;
    private handleStubClick;
    private handleClearClick;
    /**
     * Handle calendar date selection
     *
     * PORTED FROM: handle-calendar-change! in date_picker.cljs
     */
    private handleCalendarChange;
    /**
     * Handle dialog backdrop clicks
     *
     * PORTED FROM: handle-dialog-click! in date_picker.cljs
     */
    private handleDialogClick;
    /**
     * Handle clicks outside the date picker
     *
     * PORTED FROM: handle-outside-click! in date_picker.cljs
     */
    private handleOutsideClick;
    /**
     * Handle Escape key press
     *
     * PORTED FROM: handle-escape-key! in date_picker.cljs
     */
    private handleEscapeKey;
    /**
     * Open calendar dropdown
     *
     * PORTED FROM: open-dropdown! in date_picker.cljs
     */
    private openDropdown;
    /**
     * Close calendar dropdown
     *
     * PORTED FROM: close-dropdown! in date_picker.cljs
     */
    private closeDropdown;
    /**
     * Clean up event listeners and state
     *
     * PORTED FROM: cleanup! in date_picker.cljs
     */
    private cleanup;
}
//# sourceMappingURL=date-picker.d.ts.map