import { ElementRef, EventEmitter, AfterViewInit, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';
import { NgModel, NgControl } from '@angular/forms';
import { Observable, Subscription } from 'rxjs';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
export interface SmzSmartAutocompleteTagConfig {
    tagCharacteres: {
        open: string;
        close: string;
    };
    options: SmzSmartAutocompleteTagOption[];
}
export interface SmzSmartAutocompleteTagOption {
    key: string;
    searchTriggerLength: number;
    dataSourceDisplayName: string;
    emptyMessage: string;
    searchDispatchCallback: (string: any) => void;
    searchResults$: Observable<string[]>;
    suggestions: string[];
    selected: string;
}
export declare class SmzSmartAutocompleteTagDirective implements OnInit, AfterViewInit, OnDestroy {
    el: ElementRef;
    ngModel: NgModel;
    control: NgControl;
    private cd;
    options: SmzSmartAutocompleteTagOption[];
    tagTyped: EventEmitter<{
        tag: SmzSmartAutocompleteTagOption;
        position: number;
    }>;
    ngModelSubscription: Subscription;
    ngControlSubscription: Subscription;
    constructor(el: ElementRef, ngModel: NgModel, control: NgControl, cd: ChangeDetectorRef);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    onInput(e: any): void;
    updateState(event: any): void;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<SmzSmartAutocompleteTagDirective, [null, { optional: true; }, { optional: true; }, null]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<SmzSmartAutocompleteTagDirective, "[smzSmartAutocompleteTag]", never, { "options": { "alias": "options"; "required": false; }; }, { "tagTyped": "tagTyped"; }, never, never, false, never>;
}
export declare class SmzSmartAutocompleteTagModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<SmzSmartAutocompleteTagModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<SmzSmartAutocompleteTagModule, [typeof SmzSmartAutocompleteTagDirective], [typeof i1.CommonModule], [typeof SmzSmartAutocompleteTagDirective]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<SmzSmartAutocompleteTagModule>;
}
