import { type HTMLTemplateResult } from '@a11d/lit';
import { InputFieldComponent } from '@3mo/field';
import { type MaterialIcon } from '@3mo/icon';
import { FieldDateTimePrecision } from './FieldDateTimePrecision.js';
import type { Calendar } from './selection/index.js';
/**
 * @attr open - Whether the date picker is open
 * @attr pickerHidden - Hide the date picker
 * @attr shortcutReferenceDate - The date to use as a reference for shortcuts
 * @attr precision - The precision of the date picker. Defaults to 'minute'
 * @attr min - The minimum selectable date (inclusive). Dates before this are disabled.
 * @attr max - The maximum selectable date (inclusive). Dates after this are disabled.
 * @attr dateDisabled - A function that determines whether a date should be disabled. Receives a DateTime object and should return a boolean.
 */
export declare abstract class FieldDateTimeBase<T> extends InputFieldComponent<T> {
    open: boolean;
    pickerHidden: boolean;
    shortcutReferenceDate: import("@3mo/date-time/DateTime.js").DateTime;
    precision: FieldDateTimePrecision;
    min?: DateTime;
    max?: DateTime;
    dateDisabled?: (date: DateTime) => boolean;
    navigationDate: import("@3mo/date-time/DateTime.js").DateTime;
    protected readonly calendar?: Calendar;
    protected connected(): void;
    protected disconnected(): void;
    private handleLanguageChange;
    protected readonly calendarIconButtonIcon: MaterialIcon;
    protected abstract get selectedDate(): DateTime | undefined;
    protected get formatOptions(): Intl.DateTimeFormatOptions;
    protected valueUpdated(): void;
    protected abstract resetNavigationDate(): void;
    protected handleChange(value?: T, e?: Event): void;
    protected get isActive(): boolean;
    protected get placeholder(): string;
    static get styles(): import("@a11d/lit").CSSResult;
    protected get template(): HTMLTemplateResult;
    protected get endSlotTemplate(): HTMLTemplateResult;
    protected get inputTemplate(): HTMLTemplateResult;
    protected abstract inputValueToValue(value: string): T | undefined;
    protected abstract valueToInputValue(value: T | undefined): string;
    private get clearIconButtonTemplate();
    protected get calendarIconButtonTemplate(): HTMLTemplateResult;
    protected get popoverTemplate(): HTMLTemplateResult;
    protected get popoverSelectionTemplate(): HTMLTemplateResult;
    protected abstract get presetsTemplate(): HTMLTemplateResult;
    protected getPresetTemplate(label: string, value: () => T): HTMLTemplateResult;
    private isPresetDisabled;
    protected get dateTemplate(): HTMLTemplateResult;
    protected get calendarTemplate(): HTMLTemplateResult;
    protected abstract get calendarValue(): DateTimeRange | undefined;
    private get timeTemplate();
    private get hourListTemplate();
    private get minuteListTemplate();
    private get secondListTemplate();
    protected handleSelectedDateChange(date: DateTime, precision: FieldDateTimePrecision): void;
}
//# sourceMappingURL=FieldDateTimeBase.d.ts.map