import { Calendar, type Options } from 'vanilla-calendar-pro';
import type { TranslaterService } from '../services/translater.service.js';
import type { CompositeEditorOption, Editor, EditorArguments, EditorValidationResult, ValidateOption, VanillaCalendarOption } from './../interfaces/index.js';
import { BaseEditorClass } from './baseEditorClass.js';
export declare class DateEditor extends BaseEditorClass implements Editor {
    protected readonly args: EditorArguments;
    protected _clearButtonElm: HTMLButtonElement;
    protected _editorInputGroupElm: HTMLDivElement;
    protected _inputElm: HTMLInputElement;
    protected _isValueTouched: boolean;
    protected _lastClickIsDate: boolean;
    protected _lastTriggeredByClearDate: boolean;
    protected _originalDate?: string;
    protected _pickerMergedOptions: Options;
    protected _lastInputKeyEvent?: KeyboardEvent;
    protected _timer?: any;
    calendarInstance?: Calendar;
    defaultDate?: string;
    hasTimePicker: boolean;
    /** The translate library */
    protected _translaterService: TranslaterService | undefined;
    constructor(args: EditorArguments);
    /** Getter for the Editor DOM Element */
    get editorDomElement(): HTMLInputElement;
    /** Get options passed to the editor by the user */
    get editorOptions(): VanillaCalendarOption;
    get pickerOptions(): VanillaCalendarOption;
    init(): Promise<void>;
    destroy(): void;
    clear(): void;
    disable(isDisabled?: boolean): void;
    /**
     * Dynamically change an Editor option, this is especially useful with Composite Editor
     * since this is the only way to change option after the Editor is created (for example dynamically change "minDate" or another Editor)
     * @param {string} optionName
     * @param {newValue} newValue
     */
    changeEditorOption<T extends keyof Options, K extends Options[T]>(optionName: T, newValue: K): void;
    focus(): void;
    hide(): void;
    show(): void;
    getValue(): string;
    setValue(val: string, isApplyingValue?: boolean, triggerOnCompositeEditorChange?: boolean): void;
    applyValue(item: any, state: any): void;
    isValueChanged(): boolean;
    isValueTouched(): boolean;
    loadValue(item: any): void;
    /**
     * You can reset or clear the input value,
     * when no value is provided it will use the original value to reset (could be useful with Composite Editor Modal with edit/clone)
     */
    reset(value?: string, triggerCompositeEventWhenExist?: boolean, clearByDisableCommand?: boolean): void;
    save(): void;
    serializeValue(): string;
    validate(_targetElm?: any, options?: ValidateOption): EditorValidationResult;
    /** when it's a Composite Editor, we'll check if the Editor is editable (by checking onBeforeEditCell) and if not Editable we'll disable the Editor */
    protected applyInputUsabilityState(): void;
    protected handleOnDateChange(): void;
    protected handleChangeOnCompositeEditor(event: Event | null, compositeEditorOptions: CompositeEditorOption, triggeredBy?: 'user' | 'system', isCalledByClearValue?: boolean): void;
}
//# sourceMappingURL=dateEditor.d.ts.map