import * as _angular_core from '@angular/core';
import { MXInputBaseValueComponent, AXClickEvent } from '@acorex/cdk/common';
import { AXDateTimePickerType } from '@acorex/components/calendar';

/**
 * A component for date and time input with various custom features.
 *
 * @category Components
 */
declare class AXDateTimeInputComponent extends MXInputBaseValueComponent<Date> {
    #private;
    private platformService;
    private formatService;
    private localeService;
    private calendarService;
    /**
     *  @ignore
     */
    private readonly _editingParts;
    /**
     *  @ignore
     */
    protected _editingText: _angular_core.WritableSignal<string>;
    /**
     *  @ignore
     */
    protected _inputChars: string[];
    /**
     * Indicates whether typing is allowed in the input field.
     * @defaultValue false
     */
    allowTyping: _angular_core.InputSignal<boolean>;
    /**
     * @description The calendar type to use for the datetime input.
     */
    calendar: _angular_core.InputSignal<string>;
    protected readonly _calendarSystem: _angular_core.Signal<string>;
    private _activePart;
    private _editingDate;
    /**
     *  @ignore
     */
    private input;
    minValue: _angular_core.InputSignal<Date>;
    maxValue: _angular_core.InputSignal<Date>;
    /**
     * Emitted when a click event occurs on the datetime box.
     * @event
     */
    onClick: _angular_core.OutputEmitterRef<AXClickEvent>;
    picker: _angular_core.InputSignal<AXDateTimePickerType>;
    protected readonly _resolvedFormat: _angular_core.Signal<string>;
    /**
     * @deprecated use locale & mode instead
     */
    format: _angular_core.InputSignal<string>;
    private _detectParts;
    /**
     * @description check if page is in rtl or ltr
     */
    protected isRtl: _angular_core.WritableSignal<boolean>;
    /**
     * @description listen to direction change to react to it.
     */
    protected ngOnInit(): void;
    /**
     *  @ignore
     */
    private _getOrderedParts;
    /**
     *  @ignore
     */
    private _clearInputBuffer;
    /**
     *  @ignore
     */
    private _updateText;
    /**
     * Sets the internal date value, adjusting it based on editing parts.
     * @param value - The date to set. Returns `undefined` if no value is provided.
     * @ignore
     */
    /**
     * Handles changes to the internal date value, updating editing parts and text representation.
     *
     * @param value - The new date value. If not provided, resets editing parts.
     * @ignore
     */
    internalValueChanged(value?: Date): void;
    /**
     *  @ignore
     */
    _handleOnKeydownEvent(e: KeyboardEvent): void;
    /**
     *  @ignore
     */
    _handleKeyUpEvent(): void;
    /**
     *  @ignore
     */
    protected _handleFocusEvent(e: FocusEvent): void;
    /**
     *  @ignore
     */
    protected _handleBlurEvent(e: FocusEvent): void;
    /**
     *  @ignore
     */
    protected _handleOnInputClickEvent(e: MouseEvent): void;
    /**
     *  @ignore
     */
    private _detectPartAtPosition;
    /**
     *  @ignore
     */
    private _highlightActivePart;
    /**
     *  @ignore
     */
    private _detectValueChanges;
    private get __hostName();
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXDateTimeInputComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXDateTimeInputComponent, "ax-datetime-input", never, { "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "value": { "alias": "value"; "required": false; }; "state": { "alias": "state"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "allowTyping": { "alias": "allowTyping"; "required": false; "isSignal": true; }; "calendar": { "alias": "calendar"; "required": false; "isSignal": true; }; "minValue": { "alias": "minValue"; "required": false; "isSignal": true; }; "maxValue": { "alias": "maxValue"; "required": false; "isSignal": true; }; "picker": { "alias": "picker"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "stateChange": "stateChange"; "onValueChanged": "onValueChanged"; "onBlur": "onBlur"; "onFocus": "onFocus"; "readonlyChange": "readonlyChange"; "disabledChange": "disabledChange"; "onClick": "onClick"; }, never, ["ax-validation-rule"], true, never>;
}

declare class AXDateTimeInputModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXDateTimeInputModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXDateTimeInputModule, never, [typeof AXDateTimeInputComponent], [typeof AXDateTimeInputComponent]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXDateTimeInputModule>;
}

export { AXDateTimeInputComponent, AXDateTimeInputModule };
