import { ChangeDetectorRef, ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
import { ControlValueAccessor, FormControl } from '@angular/forms';
import { InputComponent, InputOptions } from '@ironsource/fusion-ui/components/input';
import { BehaviorSubject, Subject } from 'rxjs';
import { InlineInputType } from './inline-input-type.enum';
import { CurrencyPipe } from '@angular/common';
import { AdvancedInputInline } from './advanced-input-inline';
import { CurrencyPipeParameters, InputInlineConfigByStyle } from './input-inline.config';
import * as i0 from "@angular/core";
export declare abstract class InputInlineBaseComponent implements ControlValueAccessor, OnInit, OnChanges, OnDestroy {
    private currencyPipe;
    private elementRef;
    private cdr;
    /** @internal */
    inputComponent: InputComponent;
    /** @internal */
    textClass: string;
    type: InlineInputType;
    loading: boolean;
    readOnly: boolean;
    error: string;
    currencyPipeParameters: CurrencyPipeParameters;
    inputOptions: InputOptions;
    onSave: EventEmitter<any>;
    onCancel: EventEmitter<any>;
    /** @internal */
    isEditMode$: BehaviorSubject<boolean>;
    /** @internal */
    setEditMode$: Subject<unknown>;
    /** @internal */
    inputControl: FormControl<any>;
    /** @internal */
    savedValue: any;
    /** @internal */
    sanitationRegex: string;
    /** @internal */
    viewOnlyText: string;
    /** @internal */
    configByStyle: InputInlineConfigByStyle;
    /** @internal */
    disable: boolean;
    private stayInEditMode;
    private clickOutSideSubscription;
    private onDestroy$;
    get inputType(): string;
    get inputUnits(): "$" | "%";
    get inputUnitsPosition(): "left" | "right";
    get savedValueToString(): any;
    get isTypeCurrency(): boolean;
    get currencyPipeCurrencyCode(): string;
    get currencyPipeDisplay(): string;
    get currencyPipeDigitsInfo(): string;
    constructor(currencyPipe: CurrencyPipe, elementRef: ElementRef, cdr: ChangeDetectorRef);
    ngOnInit(): void;
    ngOnDestroy(): void;
    ngOnChanges(changes: SimpleChanges): void;
    /** @internal */
    save(): void;
    /** @internal */
    cancel(): void;
    /** @internal */
    goToEditMode(withValue?: string | number): void;
    /** @internal */
    propagateChange: (_: string) => void;
    /** @internal */
    writeValue(data: string | AdvancedInputInline): void;
    /** @internal */
    registerOnChange(fn: any): void;
    /** @internal */
    registerOnTouched(): void;
    /** @internal */
    setDisabledState?(isDisabled: boolean): void;
    private addListeners;
    private handleClickOutSideListener;
    private isClickInsideByCoordinates;
    private setEditMode;
    private clearErrorOnValueChange;
    private isType;
    static ɵfac: i0.ɵɵFactoryDeclaration<InputInlineBaseComponent, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<InputInlineBaseComponent, never, never, { "textClass": { "alias": "textClass"; "required": false; }; "type": { "alias": "type"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "readOnly": { "alias": "readOnly"; "required": false; }; "error": { "alias": "error"; "required": false; }; "currencyPipeParameters": { "alias": "currencyPipeParameters"; "required": false; }; "inputOptions": { "alias": "inputOptions"; "required": false; }; }, { "onSave": "onSave"; "onCancel": "onCancel"; }, never, never, false, never>;
}
