import { DatePipe } from '@angular/common';
import { OnChanges } from '@angular/core';
import { NgControl } from '@angular/forms';
import { ComponentChanges, TimeDigitFormatPipe } from '@bimeister/pupakit.common';
import { BehaviorSubject, Observable } from 'rxjs';
import { DroppableComponent } from '../../../components/droppable/components/droppable/droppable.component';
import { ValueType } from '../../types/input-value.type';
import { InputBase } from './input-base.abstract';
import * as i0 from "@angular/core";
export declare abstract class InputDateTimeBase extends InputBase<ValueType> implements OnChanges {
    private readonly timeFormatPipe;
    readonly datePipe: DatePipe;
    readonly droppableComponent: DroppableComponent;
    readonly isFixedSize: boolean;
    readonly isFixedSize$: BehaviorSubject<boolean>;
    readonly isBackDating: boolean;
    readonly isBackDating$: BehaviorSubject<boolean>;
    readonly availableEndDate: Date | number;
    readonly availableEndDate$: BehaviorSubject<Date | number>;
    readonly isIconHovered$: BehaviorSubject<boolean>;
    readonly valueIsNotEmpty$: Observable<boolean>;
    readonly dateToResetSwitcherEnabled$: Observable<boolean>;
    readonly hours$: Observable<number>;
    readonly minutes$: Observable<number>;
    readonly seconds$: Observable<number>;
    readonly date$: Observable<Date>;
    readonly rightIconWithCondition$: Observable<string>;
    constructor(timeFormatPipe: TimeDigitFormatPipe, datePipe: DatePipe, ngControl: NgControl);
    processWindowClick(): void;
    handleContainerClick(event: Event): void;
    handleContainerStartEvents(event: Event): void;
    selectHours(hours: number): void;
    selectMinutes(minutes: number): void;
    selectSeconds(seconds: number): void;
    selectDateTimeHours(hours: number): void;
    selectDateTimeMinutes(minutes: number): void;
    selectDateTimeSeconds(seconds: number): void;
    selectDate(selectedDate: Date): void;
    selectRange(range: [Date, Date]): void;
    getParsedDate(value: string): Date;
    ngOnChanges(changes: ComponentChanges<this>): void;
    setValue(value: ValueType): void;
    handleFocusEvent(focusEvent: FocusEvent): void;
    handleIconHover(focusEvent: FocusEvent, isHovered: boolean): void;
    reset(): void;
    clearInputValue(): void;
    dateIsNotAvailable(date: Date, isBackDating: boolean, availableEndDate: Date): boolean;
    private processIsFixedSizeChange;
    private processIsBackDatingChange;
    private processAvailableEndDateChange;
    static ɵfac: i0.ɵɵFactoryDeclaration<InputDateTimeBase, [null, null, { optional: true; }]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<InputDateTimeBase, never, never, { "isFixedSize": "isFixedSize"; "isBackDating": "isBackDating"; "availableEndDate": "availableEndDate"; }, {}, never, never, false>;
}
