import { EventEmitter, OnInit } from '@angular/core';
import { BehaviorSubject, Observable } from 'rxjs';
import { FormControl } from '@angular/forms';
import { InputComponent } from '@ironsource/fusion-ui/components/input/v1';
import { TagsInputBulkInsertOptions, TagsInputClearSearchOn, TagsInputComponentConfigurations } from '@ironsource/fusion-ui/components/tags-input/entities';
import { DropdownOption } from '@ironsource/fusion-ui/components/dropdown-option/entities';
import { DropdownBaseComponent } from '@ironsource/fusion-ui/components/dropdown/common/base';
import { Tag } from '@ironsource/fusion-ui/components/tag/common/entities';
import * as i0 from "@angular/core";
export declare abstract class TagsInputBaseComponent extends DropdownBaseComponent implements OnInit {
    set tagInput(value: InputComponent);
    id: string;
    isAddTagsAllowed: boolean;
    isPredefinedTags: boolean;
    inputPlaceholder: string;
    saveSelectedAsITagObjects: boolean;
    generateOnlyCustomTags: boolean;
    placeholderPrefix: string;
    noResultMessage: string;
    generateTagsRegexPattern: string;
    isBulkInsertTags: boolean;
    bulkInsertOptions: TagsInputBulkInsertOptions;
    maxHeight: number;
    footer: boolean | {
        clearAll?: boolean | string;
    };
    clearSearchOn?: TagsInputClearSearchOn;
    suppressClickOnRemove: boolean;
    set loading(loading: boolean);
    get loading(): boolean;
    set error(error: string);
    get error(): string;
    set tags(value: Array<any>);
    set tagList(value: Array<any>);
    set configuration(value: TagsInputComponentConfigurations);
    tagsChanged: EventEmitter<any>;
    addCustomTag: EventEmitter<any>;
    tagListChanged: EventEmitter<any>;
    bulkInsert: EventEmitter<string[]>;
    get tagsSelected(): Tag[];
    get displayPlaceholder(): string;
    get tagsOptions(): DropdownOption[];
    get bulkInsertDelimiter(): string;
    get bulkInsertValidator(): (key: string) => boolean;
    get bulkInsertion(): boolean;
    get isApplyByConfirm(): boolean;
    get hasClearAll(): boolean;
    get clearAllText(): string;
    filteredDisplayedOptions$: Observable<DropdownOption[]>;
    searchValue: FormControl<string>;
    isNotFoundPredefined: boolean;
    isAddCustomTag: boolean;
    _error: string;
    _loading: boolean;
    displaySelectedTags$: BehaviorSubject<string[] | Tag[]>;
    protected tagsState: Array<Tag>;
    protected uid: string;
    protected inputElement: any;
    protected initialSelectedTags: any[];
    protected initialTagsOptions: any[];
    get disabled(): boolean;
    private isBulkInMaxValue;
    private titleToId;
    private _mapSelected;
    private isTagSelected;
    private isAddCustomTagShowed;
    private addToTags;
    private addMultiToTags;
    ngOnInit(): void;
    clearSearch(): void;
    /**
     * set focus
     */
    setFocusToInput(): void;
    /**
     * do blur
     */
    onOutsideClick(): void;
    onEnterNewTag(value: string): void;
    onTagRemove(tagToRemove: any): void;
    private setCheckedInOptions;
    onSearchChange(): void;
    private _addCustomPredefinedTag;
    addCustomPredefinedTag(event: any): void;
    changeSelected({ option, $event }: {
        option?: any;
        $event?: Event;
    }): void;
    isNoResults(): boolean;
    onClearSelectionClicked($event: any): void;
    onCancelSelection(): void;
    onApplySelection(): void;
    private openTagsOptions;
    private closeTagsOptions;
    private getOptionById;
    private isTypeOfITags;
    private shouldAddTagAfterRegExpValidation;
    private hasChanges;
    propagateChange: (_: any) => void;
    writeValue(value: string[] | Tag[]): void;
    registerOnChange(fn: any): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TagsInputBaseComponent, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<TagsInputBaseComponent, never, never, { "id": { "alias": "id"; "required": false; }; "isAddTagsAllowed": { "alias": "isAddTagsAllowed"; "required": false; }; "isPredefinedTags": { "alias": "isPredefinedTags"; "required": false; }; "inputPlaceholder": { "alias": "inputPlaceholder"; "required": false; }; "saveSelectedAsITagObjects": { "alias": "saveSelectedAsITagObjects"; "required": false; }; "generateOnlyCustomTags": { "alias": "generateOnlyCustomTags"; "required": false; }; "placeholderPrefix": { "alias": "placeholderPrefix"; "required": false; }; "noResultMessage": { "alias": "noResultMessage"; "required": false; }; "generateTagsRegexPattern": { "alias": "generateTagsRegexPattern"; "required": false; }; "isBulkInsertTags": { "alias": "isBulkInsertTags"; "required": false; }; "bulkInsertOptions": { "alias": "bulkInsertOptions"; "required": false; }; "maxHeight": { "alias": "maxHeight"; "required": false; }; "footer": { "alias": "footer"; "required": false; }; "clearSearchOn": { "alias": "clearSearchOn"; "required": false; }; "suppressClickOnRemove": { "alias": "suppressClickOnRemove"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "error": { "alias": "error"; "required": false; }; "tags": { "alias": "tags"; "required": false; }; "tagList": { "alias": "tagList"; "required": false; }; "configuration": { "alias": "configuration"; "required": false; }; }, { "tagsChanged": "tagsChanged"; "addCustomTag": "addCustomTag"; "tagListChanged": "tagListChanged"; "bulkInsert": "bulkInsert"; }, never, never, false, never>;
}
