import { type TemplateResult } from 'lit';
import { type CalendarHeaderOrientation, type DateRangeDescriptor, type WeekDays } from '../calendar/types.js';
import { type IgcCalendarResourceStrings } from '../common/i18n/calendar.resources.js';
import { IgcBaseComboBoxLikeComponent } from '../common/mixins/combo-box.js';
import type { AbstractConstructor } from '../common/mixins/constructor.js';
import { type DatePart } from '../date-time-input/date-util.js';
import type { ContentOrientation, PickerMode, RangeTextSelectMode, SelectionRangeDirection } from '../types.js';
export interface IgcDatePickerComponentEventMap {
    igcOpening: CustomEvent<void>;
    igcOpened: CustomEvent<void>;
    igcClosing: CustomEvent<void>;
    igcClosed: CustomEvent<void>;
    igcChange: CustomEvent<Date>;
    igcInput: CustomEvent<Date>;
}
declare const IgcDatePickerComponent_base: import("../common/mixins/constructor.js").Constructor<import("../common/mixins/forms/types.js").FormRequiredInterface & import("../common/mixins/forms/types.js").FormAssociatedElementInterface> & import("../common/mixins/constructor.js").Constructor<import("../common/mixins/event-emitter.js").EventEmitterInterface<IgcDatePickerComponentEventMap>> & AbstractConstructor<IgcBaseComboBoxLikeComponent>;
/**
 * igc-date-picker is a feature rich component used for entering a date through manual text input or
 * choosing date values from a calendar dialog that pops up.
 *
 * @element igc-date-picker
 *
 * @slot prefix - Renders content before the input.
 * @slot suffix - Renders content after the input.
 * @slot helper-text - Renders content below the input.
 * @slot bad-input - Renders content when the value is in the disabledDates ranges.
 * @slot value-missing - Renders content when the required validation fails.
 * @slot range-overflow - Renders content when the max validation fails.
 * @slot range-underflow - Renders content when the min validation fails.
 * @slot custom-error - Renders content when setCustomValidity(message) is set.
 * @slot invalid - Renders content when the component is in invalid state (validity.valid = false).
 * @slot title - Renders content in the calendar title.
 * @slot header-date - Renders content instead of the current date/range in the calendar header.
 * @slot clear-icon - Renders a clear icon template.
 * @slot calendar-icon - Renders the icon/content for the calendar picker.
 * @slot calendar-icon-open - Renders the icon/content for the picker in open state.
 * @slot actions - Renders content in the action part of the picker in open state.
 *
 * @fires igcOpening - Emitted just before the calendar dropdown is shown.
 * @fires igcOpened - Emitted after the calendar dropdown is shown.
 * @fires igcClosing - Emitted just before the calendar dropdown is hidden.
 * @fires igcClosed - Emitted after the calendar dropdown is hidden.
 * @fires igcChange - Emitted when the user modifies and commits the elements's value.
 * @fires igcInput - Emitted when when the user types in the element.
 *
 * @csspart label - The label wrapper that renders content above the target input.
 * @csspart container - The main wrapper that holds all main input elements.
 * @csspart input - The native input element.
 * @csspart prefix - The prefix wrapper.
 * @csspart suffix - The suffix wrapper.
 * @csspart calendar-icon - The calendar icon wrapper for closed state.
 * @csspart calendar-icon-open - The calendar icon wrapper for opened state.
 * @csspart clear-icon - The clear icon wrapper.
 * @csspart actions - The actions wrapper.
 * @csspart helper-text - The helper-text wrapper that renders content below the target input.
 * @csspart header - The calendar header element.
 * @csspart header-title - The calendar header title element.
 * @csspart header-date - The calendar header date element.
 * @csspart calendar-content - The calendar content element which contains the views and navigation elements.
 * @csspart navigation - The calendar navigation container element.
 * @csspart months-navigation - The calendar months navigation button element.
 * @csspart years-navigation - The calendar years navigation button element.
 * @csspart years-range - The calendar years range element.
 * @csspart navigation-buttons - The calendar navigation buttons container.
 * @csspart navigation-button - The calendar previous/next navigation button.
 * @csspart days-view-container - The calendar days view container element.
 * @csspart days-view - The calendar days view element.
 * @csspart months-view - The calendar months view element.
 * @csspart years-view - The calendar years view element.
 * @csspart days-row - The calendar days row element.
 * @csspart calendar-label - The calendar week header label element.
 * @csspart week-number - The calendar week number element.
 * @csspart week-number-inner - The calendar week number inner element.
 * @csspart date - The calendar date element.
 * @csspart date-inner - The calendar date inner element.
 * @csspart first - The calendar first selected date element in range selection.
 * @csspart last - The calendar last selected date element in range selection.
 * @csspart inactive - The calendar inactive date element.
 * @csspart hidden - The calendar hidden date element.
 * @csspart weekend - The calendar weekend date element.
 * @csspart range - The calendar range selected element.
 * @csspart special - The calendar special date element.
 * @csspart disabled - The calendar disabled date element.
 * @csspart single - The calendar single selected date element.
 * @csspart preview - The calendar range selection preview date element.
 * @csspart month - The calendar month element.
 * @csspart month-inner - The calendar month inner element.
 * @csspart year - The calendar year element.
 * @csspart year-inner - The calendar year inner element.
 * @csspart selected - The calendar selected state for element(s). Applies to date, month and year elements.
 * @csspart current - The calendar current state for element(s). Applies to date, month and year elements.
 */
export default class IgcDatePickerComponent extends IgcDatePickerComponent_base {
    static readonly tagName = "igc-date-picker";
    static styles: import("lit").CSSResult[];
    static register(): void;
    private static readonly _increment;
    protected _inputId: string;
    private readonly _themes;
    protected get __validators(): import("../common/validators.js").Validator<IgcDatePickerComponent>[];
    private _activeDate;
    private _min;
    private _max;
    private _disabledDates?;
    private _dateConstraints?;
    private _displayFormat?;
    private _inputFormat?;
    protected readonly _formValue: import("../common/mixins/forms/form-value.js").FormValue<Date | null>;
    protected readonly _rootClickController: import("../common/controllers/root-click.js").RootClickController;
    private readonly _input;
    private readonly _calendar;
    private readonly _prefixes;
    private readonly _suffixes;
    private readonly _actions;
    private readonly _headerSlotItems;
    private get _isDropDown();
    /**
     * Sets the state of the datepicker dropdown.
     * @attr
     */
    open: boolean;
    /**
     * The label of the datepicker.
     * @attr label
     */
    label: string;
    /**
     * Determines whether the calendar is opened in a dropdown or a modal dialog
     * @attr mode
     */
    mode: PickerMode;
    /**
     * Whether to allow typing in the input.
     * @attr non-editable
     */
    nonEditable: boolean;
    /**
     * Makes the control a readonly field.
     * @attr readonly
     */
    readOnly: boolean;
    /**
     * The value of the picker
     * @attr
     */
    set value(value: Date | string | null | undefined);
    get value(): Date | null;
    /**
     * Gets/Sets the date which is shown in the calendar picker and is highlighted.
     * By default it is the current date.
     */
    set activeDate(value: Date | string | null | undefined);
    get activeDate(): Date;
    /**
     * The minimum value required for the date picker to remain valid.
     * @attr
     */
    set min(value: Date | string | null | undefined);
    get min(): Date | null;
    /**
     * The maximum value required for the date picker to remain valid.
     * @attr
     */
    set max(value: Date | string | null | undefined);
    get max(): Date | null;
    /**
     * The orientation of the calendar header.
     * @attr header-orientation
     */
    headerOrientation: CalendarHeaderOrientation;
    /**
     * The orientation of the multiple months displayed in the calendar's days view.
     *  @attr
     */
    orientation: ContentOrientation;
    /**
     * Determines whether the calendar hides its header.
     * @attr hide-header
     */
    hideHeader: boolean;
    /**
     * Controls the visibility of the dates that do not belong to the current month.
     * @attr hide-outside-days
     */
    hideOutsideDays: boolean;
    /** Gets/sets disabled dates. */
    set disabledDates(dates: DateRangeDescriptor[]);
    get disabledDates(): DateRangeDescriptor[];
    /** Gets/sets special dates. */
    specialDates: DateRangeDescriptor[];
    /**
     * Whether the control will have outlined appearance.
     * @attr
     */
    outlined: boolean;
    /**
     * The placeholder attribute of the control.
     * @attr
     */
    placeholder: string;
    /**
     * The number of months displayed in the calendar.
     * @attr visible-months
     */
    visibleMonths: number;
    /**
     * Whether to show the number of the week in the calendar.
     * @attr show-week-numbers
     */
    showWeekNumbers: boolean;
    /**
     * Format to display the value in when not editing.
     * Defaults to the input format if not set.
     * @attr display-format
     */
    set displayFormat(value: string);
    get displayFormat(): string;
    /**
     * The date format to apply on the input.
     * Defaults to the current locale Intl.DateTimeFormat
     * @attr input-format
     */
    set inputFormat(value: string);
    get inputFormat(): string;
    /**
     * The locale settings used to display the value.
     * @attr
     */
    locale: string;
    /** The prompt symbol to use for unfilled parts of the mask.
     *  @attr
     */
    prompt: string;
    /** The resource strings of the calendar. */
    resourceStrings: IgcCalendarResourceStrings;
    /** Sets the start day of the week for the calendar. */
    weekStart: WeekDays;
    protected _openChange(): void;
    constructor();
    protected createRenderRoot(): HTMLElement | DocumentFragment;
    private _setDateConstraints;
    private _shouldCloseCalendarDropdown;
    protected _onEscapeKey(): Promise<void>;
    protected _handleFocusOut({ relatedTarget }: FocusEvent): void;
    protected _handlerCalendarIconSlotPointerDown(event: PointerEvent): void;
    protected _handleInputClick(event: Event): void;
    protected handleAnchorClick(): Promise<void>;
    protected _handleInputChangeEvent(event: CustomEvent<Date>): void;
    protected _handleCalendarChangeEvent(event: CustomEvent<Date>): Promise<void>;
    protected _handleInputEvent(event: CustomEvent<Date>): void;
    protected _handleClosing(): void;
    protected _handleDialogClosing(event: Event): void;
    protected _handleDialogClosed(event: Event): void;
    /** Clears the input part of the component of any user input */
    clear(): void;
    /** Increments the passed in date part */
    stepUp(datePart?: DatePart, delta?: number): void;
    /** Decrements the passed in date part */
    stepDown(datePart?: DatePart, delta?: number): void;
    /** Selects the text in the input of the component */
    select(): void;
    /** Sets the text selection range in the input of the component */
    setSelectionRange(start: number, end: number, direction?: SelectionRangeDirection): void;
    setRangeText(replacement: string, start: number, end: number, mode?: RangeTextSelectMode): void;
    private _renderClearIcon;
    private _renderCalendarIcon;
    private _renderCalendarSlots;
    private _renderCalendar;
    protected _renderActions(): TemplateResult<1>;
    protected _renderPicker(id: string): TemplateResult<1>;
    private _renderLabel;
    private _renderHelperText;
    protected _renderInput(id: string): TemplateResult<1>;
    protected render(): TemplateResult<1>;
}
declare global {
    interface HTMLElementTagNameMap {
        'igc-date-picker': IgcDatePickerComponent;
    }
}
export {};
