import { FocusMonitor } from '@angular/cdk/a11y';
import { BooleanInput } from '@angular/cdk/coercion';
import { ElementRef, OnInit, OnDestroy, OnChanges, SimpleChanges } from '@angular/core';
import { ControlValueAccessor, UntypedFormControl, NgControl } from '@angular/forms';
import { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';
import { MatChipInputEvent } from '@angular/material/chips';
import { MatFormField, MatFormFieldControl } from '@angular/material/form-field';
import { Subject } from 'rxjs';
import { HttpService } from '../core/http.service';
import { TechlifyTaggerTagFormConfigModel } from './techlify-tagger-tag-form-config.model';
import * as i0 from "@angular/core";
export declare class TechlifyTaggerTagFormFieldComponent implements OnInit, ControlValueAccessor, MatFormFieldControl<any>, OnDestroy, OnChanges {
    private _focusMonitor;
    private _elementRef;
    private httpService;
    _formField: MatFormField;
    ngControl: NgControl;
    static nextId: number;
    stateChanges: Subject<void>;
    focused: boolean;
    controlType: string;
    id: string;
    onChange: (_: any) => void;
    onTouched: () => void;
    tagInputCtrl: UntypedFormControl;
    filterString: any;
    tagInput: ElementRef<HTMLInputElement>;
    config: TechlifyTaggerTagFormConfigModel;
    modelType: string;
    modelId: string;
    private _allTags;
    get allTags(): any[];
    set allTags(value: any[]);
    categories: string[];
    defaultCreateCategory: string;
    private subscriptions;
    get tags(): any[];
    get empty(): boolean;
    get shouldLabelFloat(): any;
    get required(): boolean;
    set required(value: boolean);
    private _required;
    get disabled(): boolean;
    set disabled(value: boolean);
    private _disabled;
    private _value;
    get value(): any[];
    set value(tagIds: any[]);
    get errorState(): boolean;
    get placeholder(): string;
    set placeholder(value: string);
    private _placeholder;
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    init(): void;
    get filteredTags(): any[];
    constructor(_focusMonitor: FocusMonitor, _elementRef: ElementRef<HTMLElement>, httpService: HttpService, _formField: MatFormField, ngControl: NgControl);
    setDescribedByIds(ids: string[]): void;
    onContainerClick(): void;
    add(event: MatChipInputEvent): Promise<void>;
    remove(tag: any): void;
    selected(event: MatAutocompleteSelectedEvent): void;
    private _filter;
    writeValue(tagIds: any[]): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    setDisabledState(isDisabled: boolean): void;
    _handleInput(): void;
    static ngAcceptInputType_disabled: BooleanInput;
    static ngAcceptInputType_required: BooleanInput;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TechlifyTaggerTagFormFieldComponent, [null, null, null, { optional: true; }, { optional: true; self: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TechlifyTaggerTagFormFieldComponent, "app-techlify-tagger-tag-form-field", never, { "config": { "alias": "config"; "required": false; }; "modelType": { "alias": "modelType"; "required": false; }; "modelId": { "alias": "modelId"; "required": false; }; "allTags": { "alias": "allTags"; "required": false; }; "categories": { "alias": "categories"; "required": false; }; "defaultCreateCategory": { "alias": "defaultCreateCategory"; "required": false; }; "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "value": { "alias": "value"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; }, {}, never, never, false, never>;
}
