/**
 * @license
 * Copyright Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { DateRange, DayOfWeek, ICalendarComponent } from '../../calendar';
import { ICalendarDropdown, ICalendarDropdownPopupConfig } from '../../calendar/calendar-dropdown';
import { BaseAdapter, IBaseAdapter, IDateInputMaskOptions } from '../../core';
import { BaseComponent } from '../../core/base/base-component';
export interface IBaseDatePickerAdapter extends IBaseAdapter {
    initialize(): void;
    initializeAccessibility(): void;
    destroy(): void;
    setActiveDescendant(id: string): void;
    initializeMask(options: IDateInputMaskOptions): void;
    destroyMask(): void;
    tryCreateToggle(): void;
    addToggleListener(type: string, listener: (event: Event) => void): void;
    removeToggleListener(type: string, listener: (event: Event) => void): void;
    addInputListener(type: string, listener: (event: Event) => void, capture?: boolean): void;
    removeInputListener(type: string, listener: (event: Event) => void, capture?: boolean): void;
    setInputValueChangedListener(context: any, listener: (value: any) => void): void;
    hasInputElement(): boolean;
    tryFocusInput(): void;
    tryBlurInput(): void;
    isInputDisabled(): boolean;
    isInputFocused(target?: EventTarget | null): boolean;
    setDisabled(value: boolean): void;
    getInputValue(): string;
    setInputValue(value: string, emitEvents: boolean): void;
    selectInputText(): void;
    emitInputEvent(type: string, data?: any): void;
    attachCalendar(calendarConfig: Partial<ICalendarComponent>, dropdownConfig?: ICalendarDropdownPopupConfig): void;
    detachCalendar(): void;
    goToCalendarDate(date: Date): void;
    addCalendarListener(type: keyof HTMLElementEventMap, listener: EventListener): void;
    removeCalendarListener(type: keyof HTMLElementEventMap, listener: EventListener): void;
    setCalendarValue(value: Date | DateRange | null | undefined): void;
    setCalendarMinDate(value: Date | null | undefined): void;
    setCalendarMaxDate(value: Date | null | undefined): void;
    setCalendarDisabledDates(value: Date | Date[] | null | undefined): void;
    setCalendarDisabledDaysOfWeek(value: DayOfWeek[]): void;
    setCalendarDisableDayCallback(disableDayCallback: (date: Date) => boolean): void;
    setCalendarActiveDate(date: Date): void;
    getCalendarActiveDate(): Date | undefined;
    setCalendarYearRange(value: string): void;
    setCalendarLocale(locale: string | undefined): void;
    propagateCalendarKey(evt: KeyboardEvent): void;
}
export declare abstract class BaseDatePickerAdapter<T extends BaseComponent> extends BaseAdapter<T> implements IBaseDatePickerAdapter {
    protected _identifier: string;
    protected _calendarDropdown?: ICalendarDropdown;
    protected _toggleElement?: HTMLElement;
    protected _valueChangeListeners: Array<() => void>;
    constructor(component: T);
    abstract initializeAccessibility(): void;
    protected abstract _initializeInput(): void;
    protected abstract _initializeCalendarDropdown(): void;
    abstract initializeMask(options: IDateInputMaskOptions): void;
    abstract destroyMask(): void;
    abstract setActiveDescendant(id: string): void;
    abstract hasInputElement(): boolean;
    abstract hasInputElement(): boolean;
    abstract tryFocusInput(): void;
    abstract tryBlurInput(): void;
    abstract isInputDisabled(): boolean;
    abstract isInputFocused(target?: EventTarget | null): boolean;
    abstract setDisabled(value: boolean): void;
    abstract addInputListener(type: string, listener: (event: Event) => void, capture?: boolean): void;
    abstract removeInputListener(type: string, listener: (event: Event) => void, capture?: boolean): void;
    abstract setInputValueChangedListener(context: any, listener: (value: any) => void): void;
    abstract getInputValue(): string;
    abstract setInputValue(value: string, emitEvents: boolean): void;
    abstract selectInputText(): void;
    abstract emitInputEvent(type: string, data?: any): void;
    initialize(): void;
    destroy(): void;
    destroyValueChangeListener(): void;
    addToggleListener(type: string, listener: (event: Event) => void): void;
    removeToggleListener(type: string, listener: (event: Event) => void): void;
    attachCalendar(calendarConfig: Partial<ICalendarComponent>, dropdownConfig?: ICalendarDropdownPopupConfig): void;
    detachCalendar(): void;
    goToCalendarDate(date: Date): void;
    addCalendarListener(type: keyof HTMLElementEventMap, listener: EventListener): void;
    removeCalendarListener(type: keyof HTMLElementEventMap, listener: EventListener): void;
    setCalendarValue(value: Date | DateRange | null | undefined): void;
    setCalendarMinDate(value: Date | null | undefined): void;
    setCalendarMaxDate(value: Date | null | undefined): void;
    setCalendarDisabledDates(value: Date | Date[] | null | undefined): void;
    setCalendarDisabledDaysOfWeek(value: DayOfWeek[]): void;
    setCalendarDisableDayCallback(disableDayCallback: (date: Date) => boolean): void;
    setCalendarActiveDate(date: Date): void;
    getCalendarActiveDate(): Date | undefined;
    setCalendarYearRange(value: string): void;
    setCalendarLocale(locale: string | undefined): void;
    propagateCalendarKey(evt: KeyboardEvent): void;
    tryCreateToggle(): void;
    protected _createToggleElement(): HTMLElement;
    protected _getDefaultTargetElement(): HTMLElement;
}
