/**
 * @license
 * Copyright 2023 Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { DayOfWeek } from '../../calendar/calendar-constants';
import { BaseComponent, IBaseComponent } from '../../core/base/base-component';
import { DatePickerFormatCallback, DatePickerParseCallback, DatePickerPrepareMaskCallback, DatePickerValueMode } from './base-date-picker-constants';
import { BaseDatePickerFoundation } from './base-date-picker-foundation';
import { IBaseDatePickerAdapter } from './base-date-picker-adapter';
export interface IBaseDatePickerComponent<TValue> extends IBaseComponent {
    value: TValue | null | undefined;
    min: Date | string | null | undefined;
    max: Date | string | null | undefined;
    disabledDates: Date | Date[] | null | undefined;
    open: boolean;
    parseCallback: DatePickerParseCallback;
    formatCallback: DatePickerFormatCallback;
    prepareMaskCallback: DatePickerPrepareMaskCallback;
    disableDayCallback: (date: Date) => boolean;
    popupClasses: string | string[];
    disabled: boolean;
    masked: boolean;
    maskFormat: string;
    showMaskFormat: boolean;
    valueMode: DatePickerValueMode;
    notifyInputValueChanges: boolean;
    allowInvalidDate: boolean;
    showToday: boolean;
    showClear: boolean;
    disabledDaysOfWeek: DayOfWeek[];
    yearRange: string;
    locale: string | undefined;
}
export declare abstract class BaseDatePickerComponent<TPublicValue, TPrivateValue, TFoundation extends BaseDatePickerFoundation<IBaseDatePickerAdapter, TPublicValue, TPrivateValue>> extends BaseComponent implements IBaseDatePickerComponent<TPublicValue> {
    protected _foundation: TFoundation;
    constructor();
    connectedCallback(): Promise<void>;
    disconnectedCallback(): void;
    attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
    /** Gets/sets the value of the component. */
    value: TPublicValue | null | undefined;
    /** Gets/sets the minimum date the calendar will allow. */
    min: Date | string | null | undefined;
    /** Gets/sets the maximum date the calendar will allow. */
    max: Date | string | null | undefined;
    /** Gets/sets the dates that are restricted from being selected. */
    disabledDates: Date | Date[] | null | undefined;
    /** Gets/sets whether the calendar dropdown is open. */
    open: boolean;
    /** Gets/sets the CSS classes that are applied to the popup element. */
    popupClasses: string | string[];
    /** Gets/sets whether the date picker is disabled or not. */
    disabled: boolean;
    /** Gets/sets whether the input mask is applied or not. */
    masked: boolean;
    /** Gets/sets the mask format that displayed in the input. Default is `MM/DD/YYYY` */
    maskFormat: string;
    /** Gets/sets whether the mask format is displayed in the input or not. Only applies if `masked` is `true`. */
    showMaskFormat: boolean;
    /** Gets/sets the type for the `value` property and `forge-date-picker-change` event. */
    valueMode: DatePickerValueMode;
    /** Gets/sets whether the native input will be notified of value changes via the `input` and `change` events. */
    notifyInputValueChanges: boolean;
    /** Gets/sets whether to allow an invalid date to be input. When true, the date picker will not clear out the value of the input if the date was invalid (i.e. could not be parsed). */
    allowInvalidDate: boolean;
    /** Gets/sets whether the today button is visible in the popup. */
    showToday: boolean;
    /** Gets/sets whether the clear button is visible in the popup. */
    showClear: boolean;
    /** Sets the callback to use for parsing a date value string to a `Date` object. */
    parseCallback: DatePickerParseCallback;
    /** Sets the callback to use for formatting `Date` value to a custom string format. */
    formatCallback: DatePickerFormatCallback;
    /** Sets the callback to use when altering default mask entry. */
    prepareMaskCallback: DatePickerPrepareMaskCallback;
    /** Sets the days of the week to disable from selection. */
    disabledDaysOfWeek: DayOfWeek[];
    /** Sets the callback to use for testing whether a specific date should be disabled or not. */
    disableDayCallback: (date: Date) => boolean;
    /** Sets the year range. */
    yearRange: string;
    /** Sets the locale to use. */
    locale: string | undefined;
}
