import { ElementRef, EventEmitter, OnChanges, TemplateRef } from '@angular/core';
import { ComponentChange, ComponentChanges } from '@bimeister/pupakit.common';
import { Nullable } from '@bimeister/utilities';
import { BehaviorSubject, Observable } from 'rxjs';
import { InputSize } from '../../types/input-size.type';
import { InputStyleCustomization } from '../../types/input-style-customization.type';
import { InputBaseControlValueAccessor } from './input-base-control-value-accessor.abstract';
import * as i0 from "@angular/core";
export declare abstract class InputBase<T> extends InputBaseControlValueAccessor<T> implements OnChanges {
    readonly controlAttribute: string;
    protected readonly inputElementRef: ElementRef<HTMLInputElement>;
    invalidTooltipHideOnHover: boolean;
    invalidTooltipDisabled: boolean;
    invalidTooltip: Nullable<string>;
    invalidTooltipContentTemplate: Nullable<TemplateRef<unknown>>;
    size: InputSize;
    readonly size$: BehaviorSubject<InputSize>;
    placeholder: string;
    readonly placeholder$: BehaviorSubject<string>;
    autocomplete: boolean;
    readonly autocomplete$: BehaviorSubject<boolean>;
    withReset: boolean;
    readonly withReset$: BehaviorSubject<boolean>;
    isPatched: boolean;
    readonly isPatched$: BehaviorSubject<boolean>;
    customStyles: InputStyleCustomization[];
    readonly customStyles$: BehaviorSubject<InputStyleCustomization[]>;
    leftIcon: string;
    readonly leftIcon$: BehaviorSubject<string>;
    rightIcon: string;
    readonly rightIcon$: BehaviorSubject<string>;
    readonly focus: EventEmitter<FocusEvent>;
    readonly blur: EventEmitter<FocusEvent>;
    readonly isInvalid$: Observable<boolean>;
    readonly resultClassList$: Observable<string[]>;
    readonly isVisibleReset$: Observable<boolean>;
    protected processIsPatchedChange(change: ComponentChange<this, boolean>): void;
    protected processWithResetChange(change: ComponentChange<this, boolean>): void;
    ngOnChanges(changes: ComponentChanges<this>): void;
    emitFocusEvent(focusEvent: FocusEvent): void;
    emitBlurEvent(blurEvent: FocusEvent): void;
    isDate(value: unknown): boolean;
    focusOnInputElement(): void;
    private processSizeChange;
    private processPlaceholderChange;
    private processAutocompleteChange;
    private processStylesChange;
    private processLeftIconChange;
    private processRightIconChange;
    static ɵfac: i0.ɵɵFactoryDeclaration<InputBase<any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<InputBase<any>, never, never, { "invalidTooltipHideOnHover": "invalidTooltipHideOnHover"; "invalidTooltipDisabled": "invalidTooltipDisabled"; "invalidTooltip": "invalidTooltip"; "invalidTooltipContentTemplate": "invalidTooltipContentTemplate"; "size": "size"; "placeholder": "placeholder"; "autocomplete": "autocomplete"; "withReset": "withReset"; "isPatched": "isPatched"; "customStyles": "customStyles"; "leftIcon": "leftIcon"; "rightIcon": "rightIcon"; }, { "focus": "focus"; "blur": "blur"; }, never, never, false>;
}
