import { ElementRef, EventEmitter } from '@angular/core';
import { ControlValueAccessor, FormControl, FormGroup, NgForm } from '@angular/forms';
import { MatFormFieldAppearance } from '@angular/material/form-field';
import { MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete';
import { MatChipInputEvent, MatChipList } from '@angular/material/chips';
import { TooltipPosition } from '@angular/material/tooltip';
import { IDataChange, IInputVal, Items, IValidatorMessage, ZCInputTokenEndFunc, ZCValidatorFunc } from '../constants';
import { IStyle } from './type';
export declare class ZUIChipComponent implements ControlValueAccessor {
    #private;
    label: string;
    placeholder: string;
    valueField: string;
    displayField: string;
    colorField: string;
    bgColorField: string;
    srcImageField: string;
    removableField: string;
    hintStart: string;
    hintEnd: string;
    selected: string;
    name: string;
    max: number;
    min: number;
    items: Items;
    disabledTooltip: boolean;
    tooltipPosition: TooltipPosition;
    /** import {ENTER, COMMA, TAB} from '@angular/cdk/keycodes' */
    separatorKeysCodes: number[];
    mode: 'input' | 'view';
    set form(val: NgForm | FormGroup);
    /** "legacy" | "standard" | "fill" | "outline"*/
    appearance: MatFormFieldAppearance;
    disabledValidate: boolean;
    validatorMessage: IValidatorMessage;
    validatorMessageDefault: IValidatorMessage;
    validatorMessageVal: IValidatorMessage;
    set model(value: any[]);
    set required(val: IInputVal);
    requiredVal: boolean;
    set wrapItem(val: IInputVal);
    wrapItemVal: boolean;
    set delay(val: number);
    /** default "200px", eg: "300px", "400em", "500rem" */
    set width(val: string);
    widthVal: string;
    set noFullWidth(val: IInputVal);
    fullWidth: boolean;
    set noDuplicate(val: IInputVal);
    allowDuplicate: boolean;
    set validateFirst(val: IInputVal);
    validateFirstVal: boolean;
    /** load items data when init component, use for case Items is return a Promise */
    set loadOnInit(val: IInputVal);
    loadOnInitVal: boolean;
    set disabledRemove(val: IInputVal);
    disabledRemoveVal: boolean;
    set disabledInput(val: IInputVal);
    disabledInputVal: boolean;
    set chipFullWidth(val: IInputVal);
    chipFullWidthVal: boolean;
    set disabled(val: IInputVal);
    set caseSensitive(val: IInputVal);
    caseSensitiveVal: boolean;
    set disabledFreeText(val: IInputVal);
    allowFreeText: boolean;
    set validator(validator: ZCValidatorFunc);
    set inputTokenEnd(inputTokenEnd: ZCInputTokenEndFunc);
    modelChange: EventEmitter<any[]>;
    dataChange: EventEmitter<IDataChange<any, any>>;
    input: ElementRef<HTMLInputElement>;
    chipList: MatChipList;
    autoComplete: MatAutocompleteTrigger;
    get inlineBlock(): boolean;
    get block(): boolean;
    inputControl: FormControl;
    formControl: FormControl;
    filteredItems: any[];
    selectedItems: any[];
    loading: boolean;
    focusToLoad: boolean;
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnChanges(): Promise<void>;
    ngOnDestroy(): void;
    get selectedValue(): any[];
    get itemsIsArray(): boolean;
    get error(): IInputVal;
    onChange(_: any): void;
    registerOnTouched(): void;
    registerOnChange(fn: () => void): void;
    writeValue: (value: string) => void;
    onFocus: (_e?: Event) => Promise<void>;
    add: (event: MatChipInputEvent) => Promise<void>;
    remove: (removeItem: any) => void;
    onSelected: (event: MatAutocompleteSelectedEvent) => void;
    styleChip: (item: any) => IStyle;
    allowRemovable: (item: any) => boolean;
}
