import { AfterViewInit, ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges, TemplateRef } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { I18nInterface, I18nService } from 'ng-devui/i18n';
import { ToggleMenuContainerComponent, ToggleMenuListComponent, ToggleMenuSearchComponent } from 'ng-devui/toggle-menu';
import { DevConfigService } from 'ng-devui/utils';
import { Observable, Subscription } from 'rxjs';
import * as i0 from "@angular/core";
export declare class TagsInputComponent implements ControlValueAccessor, OnInit, OnDestroy, OnChanges, AfterViewInit {
    private i18n;
    private devConfigService;
    /**
     * 【必选】记录输入的标签
     */
    tags: any[];
    /**
     * 【可选】disabled 灰化状态
     */
    disabled: boolean;
    /**
     * 【可选】使用的属性名
     */
    displayProperty: string;
    /**
     * 【可选】输入的placeholder
     */
    placeholder: string;
    /**
     * 【可选】达到最大值时可自定义placeholder
     */
    maxPlaceholder: string;
    /**
     * 【可选】输入标签的最小长度
     */
    minLength: number;
    /**
     * 【可选】输入标签的最大长度
     */
    maxLength: number;
    /**
     * 【可选】标签的最小个数
     */
    minTags: number;
    /**
     * 【可选】标签的最大个数
     */
    maxTags: number;
    /**
     * 【可选】输入框的spellcheck
     */
    spellcheck: boolean;
    /**
     * 【可选】是否appendToBody
     */
    appendToBody: boolean;
    /**
     * 【可选】是否虚拟滚动
     */
    virtualScroll: boolean;
    /**
     * 【可选】下拉选项
     */
    suggestionList: any;
    /**
     * 【可选】是否按空格添加tag
     */
    isAddBySpace: boolean;
    /**
     * 【可选】默认两行显示，false 则单行显示
     */
    multiline: boolean;
    /**
     * 【可选】已选中标签容器最大高度
     */
    maxHeight: string;
    /**
     * 【可选】大小写敏感
     */
    caseSensitivity: boolean;
    itemTemplate: TemplateRef<any>;
    checkBeforeAdd: (newTag: string) => boolean | Promise<boolean> | Observable<boolean>;
    showAnimation: boolean;
    /**
     * 输出函数，当选中某个选项项后，将会调用此函数，参数为当前选择项的值。如果需要获取所有选择状态的值，请参考(ngModelChange)方法
     */
    valueChange: EventEmitter<any>;
    tagsInputWrapperItem: ElementRef;
    selectBoxContainer: ToggleMenuContainerComponent;
    selectBox: ToggleMenuListComponent;
    searchBox: ToggleMenuSearchComponent;
    get getPlaceHolder(): string;
    newTag: string;
    availableOptions: any[];
    selectedItems: any[];
    /**
     * 对于用户传入的suggestionList不做修改，数据的操作在_suggestionList上进行
     */
    _suggestionList: any[];
    newTagValid: boolean;
    isReduce: boolean;
    isOpen: boolean;
    inputEvent: any;
    blurEventSubscription: Subscription;
    valueParser: (item: any) => any;
    searchFn: (term: string) => Observable<Array<{
        id: string | number;
        option: any;
    }>>;
    private DEBONCE_TIME;
    private sourceSubscription;
    private KEYS;
    private i18nSubscription;
    i18nCommonText: I18nInterface['common'];
    i18nTagsInputText: I18nInterface['tagsInput'];
    private onChange;
    private onTouch;
    constructor(i18n: I18nService, devConfigService: DevConfigService);
    private setI18nText;
    writeValue(value: any): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    registerFilterChange(): void;
    reduceSuggestionList(): void;
    host_click(): void;
    passEvent(data: any): void;
    addSuggestionByIndex(index: any, value: any): void;
    removeTag(data: any): void;
    tagIsValid(): boolean;
    isEmptyString(tag: any): boolean;
    addTag(): void;
    canAdd(value?: any): Promise<boolean>;
    checkMaxTags(tag: any): void;
    setValue({ option, index }: {
        option: any;
        index: any;
    }): void;
    searchInputValueChange(event: any): void;
    toggleChangeFn(event: any): void;
    delayResetNewTag(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TagsInputComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TagsInputComponent, "d-tags-input", ["TagsInput"], { "tags": "tags"; "disabled": "disabled"; "displayProperty": "displayProperty"; "placeholder": "placeholder"; "maxPlaceholder": "maxPlaceholder"; "minLength": "minLength"; "maxLength": "maxLength"; "minTags": "minTags"; "maxTags": "maxTags"; "spellcheck": "spellcheck"; "appendToBody": "appendToBody"; "virtualScroll": "virtualScroll"; "suggestionList": "suggestionList"; "isAddBySpace": "isAddBySpace"; "multiline": "multiline"; "maxHeight": "maxHeight"; "caseSensitivity": "caseSensitivity"; "itemTemplate": "itemTemplate"; "checkBeforeAdd": "checkBeforeAdd"; "showAnimation": "showAnimation"; }, { "valueChange": "valueChange"; }, never, never, false>;
}
