import { BooleanInput, NumberInput } from '@angular/cdk/coercion';
import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
import { DatetimeAdapter } from '@asoftwareworld/form-builder-pro/common';
import { SubscriptionLike } from 'rxjs';
import { AswClockView } from '../clock/clock';
import { AswDatetimepickerFilterType } from '../datetimepicker-filtertype';
import { AswDatetimepickerIntl } from '../datetimepicker-intl';
import { AswAMPM } from '../datetimepicker-types';
import * as i0 from "@angular/core";
export declare class AswTimeInput implements OnDestroy {
    private element;
    private cdr;
    set timeInterval(value: NumberInput);
    private _interval;
    set timeMin(value: NumberInput);
    private _min;
    set timeMax(value: NumberInput);
    private _max;
    set timeValue(value: NumberInput);
    timeValueChanged: EventEmitter<NumberInput>;
    private _value;
    private keyDownListener;
    private keyPressListener;
    private inputEventListener;
    constructor(element: ElementRef, cdr: ChangeDetectorRef);
    get hasFocus(): boolean;
    get inputElement(): HTMLInputElement;
    get valid(): boolean;
    get invalid(): boolean;
    blur(): void;
    focus(): void;
    /**
     * Write value to inputElement
     * @param value NumberInput
     */
    writeValue(value: NumberInput): void;
    /**
     * Writes value to placeholder
     * @param value NumberInput
     */
    writePlaceholder(value: NumberInput): void;
    keyDownHandler(event: KeyboardEvent): void;
    /**
     * Prevent non number inputs in the inputElement with the exception of Enter/BackSpace
     * @param event KeyboardEvent
     */
    keyPressHandler(event: KeyboardEvent): void;
    inputChangedHandler(): void;
    clampInputValue(): void;
    /**
     * Remove event listeners on destruction
     */
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AswTimeInput, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<AswTimeInput, "input.asw-time-input", ["aswTimeInput"], { "timeInterval": { "alias": "timeInterval"; "required": false; }; "timeMin": { "alias": "timeMin"; "required": false; }; "timeMax": { "alias": "timeMax"; "required": false; }; "timeValue": { "alias": "timeValue"; "required": false; }; }, { "timeValueChanged": "timeValueChanged"; }, never, never, false, never>;
}
export declare class AswTime<D> implements OnChanges, AfterViewInit, OnDestroy {
    private _adapter;
    private _changeDetectorRef;
    protected _datetimepickerIntl: AswDatetimepickerIntl;
    /** Emits when the currently selected date changes. */
    readonly selectedChange: EventEmitter<D>;
    /** Emits when any date changes. */
    readonly activeDateChange: EventEmitter<D>;
    /** Emits when any date is selected. */
    readonly _userSelection: EventEmitter<void>;
    /** Emits when AM/PM button are clicked. */
    readonly ampmChange: EventEmitter<AswAMPM>;
    /** Emits when AM/PM button are clicked. */
    readonly clockViewChange: EventEmitter<AswClockView>;
    /** A function used to filter which dates are selectable. */
    dateFilter: (date: D, type: AswDatetimepickerFilterType) => boolean;
    /** Step over minutes. */
    interval: number;
    protected hourInputElement: ElementRef<HTMLInputElement> | undefined;
    protected hourInputDirective: AswTimeInput | undefined;
    protected minuteInputElement: ElementRef<HTMLInputElement> | undefined;
    protected minuteInputDirective: AswTimeInput | undefined;
    datetimepickerIntlChangesSubscription: SubscriptionLike;
    /** Whether the clock uses 12 hour format. */
    get twelvehour(): boolean;
    set twelvehour(value: boolean);
    private _twelvehour;
    /** Whether the time is now in AM or PM. */
    AMPM: AswAMPM;
    /**
     * The date to display in this clock view.
     */
    get activeDate(): D;
    set activeDate(value: D);
    private _activeDate;
    /** The currently selected date. */
    get selected(): D | null;
    set selected(value: D | null);
    private _selected;
    /** The minimum selectable date. */
    get minDate(): D | null;
    set minDate(value: D | null);
    private _minDate;
    /** The maximum selectable date. */
    get maxDate(): D | null;
    set maxDate(value: D | null);
    private _maxDate;
    /** Whether the clock should be started in hour or minute view. */
    get clockView(): AswClockView;
    set clockView(value: AswClockView);
    /** Whether the clock is in hour view. */
    private _clockView;
    get isHourView(): boolean;
    get isMinuteView(): boolean;
    get hour(): string;
    get minute(): string;
    prefixWithZero(value: number): string;
    constructor(_adapter: DatetimeAdapter<D>, _changeDetectorRef: ChangeDetectorRef, _datetimepickerIntl: AswDatetimepickerIntl);
    ngOnChanges(changes: SimpleChanges): void;
    ngAfterViewInit(): void;
    focusInputElement(): void;
    handleHourInputChange(value: NumberInput): void;
    updateHourForAmPm(value: number): number;
    handleMinuteInputChange(value: NumberInput): void;
    handleFocus(clockView: AswClockView): void;
    _timeSelected(date: D): void;
    _onActiveDateChange(date: D): void;
    handleOk(): void;
    handleCancel(): void;
    ngOnDestroy(): void;
    static ngAcceptInputType_twelvehour: BooleanInput;
    static ɵfac: i0.ɵɵFactoryDeclaration<AswTime<any>, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AswTime<any>, "asw-time", ["aswTime"], { "dateFilter": { "alias": "dateFilter"; "required": false; }; "interval": { "alias": "interval"; "required": false; }; "twelvehour": { "alias": "twelvehour"; "required": false; }; "AMPM": { "alias": "AMPM"; "required": false; }; "activeDate": { "alias": "activeDate"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "clockView": { "alias": "clockView"; "required": false; }; }, { "selectedChange": "selectedChange"; "activeDateChange": "activeDateChange"; "_userSelection": "_userSelection"; "ampmChange": "ampmChange"; "clockViewChange": "clockViewChange"; }, never, never, false, never>;
}
