import { EventEmitter, OnInit, OnDestroy, AfterViewInit, ChangeDetectorRef, ElementRef } from '@angular/core';
import { NgForm, FormControl, FormGroup, FormGroupDirective } from '@angular/forms';
import { Observable } from 'rxjs';
import { MatChipInputEvent, MatChipList } from '@angular/material/chips';
import { MatAutocomplete, MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete';
import { SdChipUpdate } from './chip.model';
import { ErrorStateMatcher } from '@angular/material/core';
import { SdChipDisplayDef } from './directives/sd-chip-display-def.directive';
import { IFormConfiguration, SdFormControl, SdViewDefDirective } from '@sd-angular/core/common';
import { MatFormFieldAppearance } from '@angular/material/form-field';
import { SdLabelDefDirective } from '@sd-angular/core/common';
declare class SdChipErrotStateMatcher implements ErrorStateMatcher {
    private formControl;
    constructor(formControl: FormControl);
    isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean;
}
export declare class SdChip implements OnInit, OnDestroy, AfterViewInit {
    #private;
    private ref;
    private formConfig;
    set name(val: string);
    appearance: MatFormFieldAppearance;
    separatorKeysCodes: number[];
    selectable: boolean;
    size: 'sm' | 'lg';
    set form(val: NgForm | FormGroup);
    set addable(val: '' | boolean);
    label: string;
    valueField: string;
    displayField: string;
    placeholder: string;
    removable: boolean | ((item: any) => boolean);
    set _removable(val: '' | boolean | ((item: any) => boolean));
    disableErrorMessage: boolean;
    set _disableErrorMessage(val: boolean | '');
    loading: boolean;
    set items(items: undefined | any[] | SearchFunc);
    limit: number;
    selectedItems: Observable<any[]>;
    filteredItems: Observable<any[]>;
    cacheChecksum: any;
    ipt: any;
    set model(values: undefined | (string | number)[]);
    required: boolean;
    set _required(val: boolean | '');
    min: number;
    set pMin(val: number | string);
    max: number;
    set pMax(val: number | string);
    modelChange: EventEmitter<any>;
    set disabled(val: boolean | '');
    sdChange: EventEmitter<any[]>;
    sdUpdate: EventEmitter<SdChipUpdate>;
    chipSelected: EventEmitter<any>;
    input: ElementRef<HTMLInputElement>;
    matAutocomplete: MatAutocomplete;
    chipList: MatChipList;
    autocompleteTrigger: MatAutocompleteTrigger;
    sdView: SdViewDefDirective;
    sdChipDisplay: SdChipDisplayDef;
    sdLabelDef: SdLabelDefDirective;
    isBluring: boolean;
    isFocused: boolean;
    inputControl: FormControl;
    formControl: SdFormControl;
    matcher: SdChipErrotStateMatcher;
    constructor(ref: ChangeDetectorRef, formConfig: IFormConfiguration);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    onAdd: (event: MatChipInputEvent) => void;
    onAdd2: (event: MatChipInputEvent) => void;
    onClickChip: ($event: Event, item: any) => void;
    onRemove: (item: any) => void;
    select: (item: any) => void;
    onSelect: (event: MatAutocompleteSelectedEvent) => void;
    onFocus: () => void;
    onBlur: () => void;
    onClick: () => void;
    focus: () => void;
    onClear: ($event?: any) => void;
    getSelectedItems: () => any[];
}
declare type SearchFunc = (searchText?: string | string[], isFormValue?: boolean) => Promise<any[]>;
export {};
