import * as i0 from '@angular/core';
import { OnInit, OnChanges, EventEmitter, ChangeDetectorRef, SimpleChanges } from '@angular/core';
import { NgSelectComponent } from '@ng-select/ng-select';
import { Observable, Subject } from 'rxjs';

interface LabelsSelectorTranslation {
    placeholder: string;
    createLabel: string;
    searchPlaceholder?: string;
}
declare class LabelsSelectorComponent implements OnInit, OnChanges {
    private changeDetectorRef;
    addLabelEnabled: boolean;
    disabled: boolean;
    initialLabels: string[];
    translation: LabelsSelectorTranslation;
    loadingOnSearch: boolean;
    multipleEnabled: boolean;
    searchLabelsFunction: (val: string) => Observable<string[]>;
    createLabel: EventEmitter<string>;
    addLabel: EventEmitter<string>;
    deleteLabel: EventEmitter<string>;
    selectLabels: EventEmitter<string[]>;
    searchErrorMessage: EventEmitter<string>;
    select: NgSelectComponent;
    labels: string[];
    labelsInput$: Subject<string>;
    labels$: Observable<string[]>;
    labelsLoading: boolean;
    constructor(changeDetectorRef: ChangeDetectorRef);
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    onCreateLabel(label: string): void;
    onDeleteLabel(label: string): void;
    onAddLabel(label: string): void;
    onOpen(): void;
    onLabelsChange(): void;
    setSearchFunction(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<LabelsSelectorComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<LabelsSelectorComponent, "ap-labels-selector", never, { "addLabelEnabled": { "alias": "addLabelEnabled"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "initialLabels": { "alias": "initialLabels"; "required": false; }; "translation": { "alias": "translation"; "required": false; }; "loadingOnSearch": { "alias": "loadingOnSearch"; "required": false; }; "multipleEnabled": { "alias": "multipleEnabled"; "required": false; }; "searchLabelsFunction": { "alias": "searchLabelsFunction"; "required": true; }; }, { "createLabel": "createLabel"; "addLabel": "addLabel"; "deleteLabel": "deleteLabel"; "selectLabels": "selectLabels"; "searchErrorMessage": "searchErrorMessage"; }, never, never, true, never>;
}

export { LabelsSelectorComponent };
export type { LabelsSelectorTranslation };
