/**
 * Copyright (c) Cisco Systems, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 *
 */
import { LitElement, PropertyValues, TemplateResult } from "lit";
import { DateTime } from "luxon";
import "../input/Input";
import "../menu-overlay/MenuOverlay";
import { MenuOverlay } from "../menu-overlay/MenuOverlay";
import { Popover } from "../popover/Popover";
import { StrategyType } from "../popover/Popover.types";
import "./datepicker-calendar/DatePickerCalendar";
export interface DatePickerControlButton {
    value: string;
    ariaLabel?: string;
    disabled?: boolean;
}
export interface DatePickerControlButtons {
    apply?: DatePickerControlButton;
    cancel?: DatePickerControlButton;
}
export declare namespace DatePicker {
    const weekStartDays: string[];
    class ELEMENT extends LitElement {
        shouldCloseOnSelect: boolean;
        maxDate: string | undefined | null;
        minDate: string | undefined | null;
        value: string | null | undefined;
        weekStart: (typeof weekStartDays)[number];
        placeholder: string | undefined;
        locale: string | undefined;
        useISOFormat: boolean;
        validateDate: boolean;
        includesTime: boolean;
        disabled: boolean;
        htmlId: string;
        label: string;
        ariaLabel: string | null;
        displayValue: string | null;
        required: boolean;
        errorMessage: string;
        customTrigger: boolean;
        isMenuOverlayOpen: boolean;
        newMomentum?: boolean;
        disableUserTextInput: boolean;
        compactInput?: boolean;
        controlButtons?: DatePickerControlButtons;
        positioningStrategy?: StrategyType;
        showDefaultNowDate: boolean;
        usePopover: boolean;
        triggerID: string;
        animationFrame: boolean;
        isDatePickerMonthLoading: boolean;
        isDatePickerMonthError: boolean;
        errorMessages: Record<string, string>;
        selectedDate: DateTime;
        focusedDate: DateTime;
        filterDate: Function | undefined;
        onRetry: (() => void) | undefined;
        maxDateData: DateTime | undefined;
        minDateData: DateTime | undefined;
        private popoverController;
        private openedViaKeyboard;
        menuOverlay: MenuOverlay.ELEMENT;
        popoverElement: Popover;
        get computedNewMomentum(): boolean;
        static get styles(): import("lit").CSSResult;
        connectedCallback(): void;
        firstUpdated(changedProperties: PropertyValues): void;
        updated(changedProperties: PropertyValues): void;
        handleDateInputChange: (event: CustomEvent) => void;
        setOpen: (open: boolean) => void;
        handleSelect(e: CustomEvent): void;
        private getISODateTime;
        protected setSelected(date: DateTime, event: Event): void;
        setPreSelection: (date: DateTime) => void;
        private get isCalendarOpen();
        private focusDateInput;
        private focusCalendarDay;
        private handleOverlayOpened;
        private handleOverlayClosed;
        handleInputKeyDown: (event: KeyboardEvent) => void;
        handleKeyDown: (e: CustomEvent) => void;
        protected getDefaultAriaLabel: () => string;
        private readonly getValidRegexString;
        protected validateDateString(dateString: string | null | undefined): boolean;
        protected isValueValid(): boolean;
        private get messageArray();
        private onCancelClick;
        protected onApplyClick(): void;
        private renderControlButtons;
        protected getPlaceHolderString(): string;
        protected getFormattedDate(date: DateTime): string | null;
        private getAriaLabel;
        private get isAriaExpanded();
        renderPopover(): TemplateResult<1>;
        renderMenuOverlay(): TemplateResult<1>;
        render(): TemplateResult<1>;
    }
}
declare global {
    interface HTMLElementTagNameMap {
        "md-datepicker": DatePicker.ELEMENT;
    }
}
