import { ElementRef, EventEmitter, AfterViewInit, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';
import { NgModel, NgControl } from '@angular/forms';
import { Subscription } from 'rxjs';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
export interface SmzSmartTagConfig {
    tagCharacteres: {
        open: string;
        close: string;
    };
    options: SmzSmartTagOptions[];
}
export interface SmzSmartTagOptions {
    key: string;
    data: SmzSmartTagData[];
}
export interface SmzSmartTagData {
    id: string;
    value: string;
}
export declare class SmzSmartTag implements OnInit, AfterViewInit, OnDestroy {
    el: ElementRef;
    ngModel: NgModel;
    control: NgControl;
    private cd;
    options: SmzSmartTagOptions[];
    tagTyped: EventEmitter<{
        tag: SmzSmartTagOptions;
        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<SmzSmartTag, [null, { optional: true; }, { optional: true; }, null]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<SmzSmartTag, "[smzSmartTag]", never, { "options": { "alias": "options"; "required": false; }; }, { "tagTyped": "tagTyped"; }, never, never, false, never>;
}
export declare class SmzSmartTagModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<SmzSmartTagModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<SmzSmartTagModule, [typeof SmzSmartTag], [typeof i1.CommonModule], [typeof SmzSmartTag]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<SmzSmartTagModule>;
}
