import { ChangeDetectorRef, EventEmitter, OnInit, TemplateRef } from '@angular/core';
import { AbstractControl, ControlValueAccessor, ValidationErrors, Validator } from '@angular/forms';
import { IManagedObject, IResultList } from '@c8y/client';
import { ForOfFilterPipe, TypeaheadComponent } from '@c8y/ngx-components';
import { TranslateService } from '@ngx-translate/core';
import { BehaviorSubject, Observable } from 'rxjs';
import { RepositoryService } from '../repository.service';
import * as i0 from "@angular/core";
export declare class SoftwareTypeComponent implements OnInit, ControlValueAccessor, Validator {
    private repositoryService;
    changeDetectorRef: ChangeDetectorRef;
    private translateService;
    softwareTypeMO: IManagedObject;
    disabled: boolean;
    style: any;
    required: boolean;
    placeholder: string;
    emitResultsOnly: boolean;
    showBtnInNotFoundMessage: boolean;
    allowFreeEntries: boolean;
    showClearSelectionOption: boolean;
    clearSelectionOptionLabel: string;
    set presetSoftwareTypes(types: string[] | IManagedObject[] | Observable<string[] | IManagedObject[]>);
    deviceSoftwareTypeModel: TypeaheadComponent;
    notFoundTypeAddNewTemplate: TemplateRef<unknown>;
    notFoundTypeTemplate: TemplateRef<unknown>;
    onSelectSoftware: EventEmitter<IManagedObject>;
    notFoundTemplateToUse: TemplateRef<unknown>;
    filterPipe: ForOfFilterPipe<IManagedObject>;
    softwaresResult$: Observable<IResultList<IManagedObject>>;
    search$: BehaviorSubject<string>;
    softwaresResult: IResultList<IManagedObject>;
    private queriesUtil;
    private softwareTypes;
    private presetSoftwareTypes$;
    constructor(repositoryService: RepositoryService, changeDetectorRef: ChangeDetectorRef, translateService: TranslateService);
    ngOnInit(): void;
    getSoftwareByTypeResult(searchString: string): Promise<IResultList<IManagedObject>> | Observable<IResultList<IManagedObject>>;
    selectSoftware(software: any): void;
    clearSoftware(): void;
    resetInput(): void;
    writeValue(value: any): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    setDisabledState(isDisabled: boolean): void;
    validate(control: AbstractControl<any, any>): ValidationErrors;
    private searchInPreset;
    private searchInRepository;
    private removeDuplicatesBySoftwareType;
    static ɵfac: i0.ɵɵFactoryDeclaration<SoftwareTypeComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SoftwareTypeComponent, "c8y-software-type", never, { "softwareTypeMO": { "alias": "softwareTypeMO"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "style": { "alias": "style"; "required": false; }; "required": { "alias": "required"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "emitResultsOnly": { "alias": "emitResultsOnly"; "required": false; }; "showBtnInNotFoundMessage": { "alias": "showBtnInNotFoundMessage"; "required": false; }; "allowFreeEntries": { "alias": "allowFreeEntries"; "required": false; }; "showClearSelectionOption": { "alias": "showClearSelectionOption"; "required": false; }; "clearSelectionOptionLabel": { "alias": "clearSelectionOptionLabel"; "required": false; }; "presetSoftwareTypes": { "alias": "presetSoftwareTypes"; "required": false; }; }, { "onSelectSoftware": "onSelectSoftware"; }, never, never, false, never>;
}
//# sourceMappingURL=software-type.component.d.ts.map