import { EventEmitter, OnDestroy, OnInit, TemplateRef } from '@angular/core';
import { IManagedObject } from '@c8y/client';
import { ISelectModalObject, IUpdateItemEvent } from '@c8y/ngx-components';
import { DeviceSoftware, DeviceSoftwareChange, FilterCriteria, RepositoryService } from '@c8y/ngx-components/repository/shared';
import { BsModalService } from 'ngx-bootstrap/modal';
import { BehaviorSubject, Observable, Subject } from 'rxjs';
import * as i0 from "@angular/core";
export declare class InstalledSoftwareComponent implements OnDestroy, OnInit {
    private repository;
    private bsModal;
    PRODUCT_EXPERIENCE: {
        readonly SOFTWARE: {
            readonly EVENTS: {
                readonly REPOSITORY: "softwareRepository";
                readonly DEVICE_TAB: "deviceSoftware";
            };
            readonly COMPONENTS: {
                readonly ADD_SOFTWARE_MODAL: "add-software-modal";
                readonly DEVICE_SOFTWARE_CHANGES: "device-software-changes";
                readonly DEVICE_SOFTWARE_LIST: "device-software-list";
            };
            readonly ACTIONS: {
                readonly APPLY_SOFTWARE_CHANGES: "applySoftwareChanges";
                readonly CLEAR_SOFTWARE_CHANGES: "clearSoftwareChanges";
                readonly OPEN_INSTALL_SOFTWARE: "openInstallSoftwareModal";
                readonly OPEN_UPDATE_SOFTWARE: "openUpdateSoftwareModal";
                readonly DELETE_SOFTWARE: "deleteSoftware";
            };
            readonly RESULTS: {
                readonly ADD_SOFTWARE: "addSoftware";
                readonly ADD_SOFTWARE_VERSION: "addSoftwareVersion";
                readonly EDIT_SOFTWARE: "editSoftware";
            };
        };
        readonly FIRMWARE: {
            readonly EVENTS: {
                readonly REPOSITORY: "firmwareRepository";
                readonly DEVICE_TAB: "deviceFirmware";
            };
            readonly COMPONENTS: {
                readonly ADD_FIRMWARE_MODAL: "add-firmware-modal";
                readonly ADD_FIRMWAR_PATCH_MODAL: "add-firmware-patch-modal";
                readonly FIRMWARE_DEVICE_TAB: "firmware-device-tab";
                readonly DEVICE_FIRMWARE_LIST: "device-firmware-list";
            };
            readonly ACTIONS: {
                readonly OPEN_INSTALL_FIRMWARE_DIALOG: "openInstallFirmwareDialog";
                readonly OPEN_REPLACE_FIRMWARE_DIALOG: "openReplaceFirmwareDialog";
                readonly OPEN_INSTALL_FIRMWARE_PATCH_DIALOG: "openInstallFirmwarePatchDialog";
            };
            readonly RESULTS: {
                readonly ADD_FIRMWARE: "addFirmware";
                readonly ADD_FIRMWARE_VERSION: "addFirmwareVersion";
                readonly ADD_FIRMWARE_PATCH: "addFirmwarePatch";
                readonly EDIT_FIRMWARE: "editFirmware";
                readonly CREATE_FIRMWARE_UPDATE_OPERATION: "createFirmwareUpdateOperation";
            };
        };
        readonly SHARED: {
            readonly COMPONENTS: {
                readonly REPOSITORY_SELECT_MODAL: "repository-select-modal";
                readonly SELECT_CONFIGURATION_MODAL: "select-configuration-modal";
            };
        };
    };
    device: IManagedObject;
    softwareList: DeviceSoftware[];
    deviceSoftwareChanges: DeviceSoftwareChange[];
    deviceSoftwareChangesInProgress: boolean;
    typesQuery: object;
    changes: EventEmitter<DeviceSoftwareChange[]>;
    showSoftwareChanges: EventEmitter<void>;
    alreadyInstalledWarningTemplate: TemplateRef<any>;
    alreadyInstalledMessage: "{{ name }} (v. {{ version }}) is already installed on this device";
    loadingTemplate: TemplateRef<any>;
    softwareTypeTemplate: TemplateRef<any>;
    showFilter: boolean;
    supportsSoftwareOperations: boolean;
    textFilter$: BehaviorSubject<string>;
    softwareTypeFilter$: BehaviorSubject<string>;
    filterCriteria$: Observable<FilterCriteria>;
    private readonly operationTypes;
    private queriesUtil;
    private modalSearch;
    private destroyed$;
    constructor(repository: RepositoryService, bsModal: BsModalService);
    ngOnInit(): void;
    installSoftware(): void;
    updateSoftware(softwareToUpdate: any): void;
    removeSoftware(softwareToRemove: any): void;
    getInstallableSoftwareListWithVersions$(searchTerm$: BehaviorSubject<FilterCriteria>): Observable<IManagedObject[]>;
    getSingleSoftwareWithVersions$(software: DeviceSoftware): Observable<IManagedObject[]>;
    attachVersions(softwareList: IManagedObject[]): IManagedObject[];
    displaySoftwareSelectModal(initialStateOverrides: any): {
        resultEmitter: EventEmitter<import("@c8y/ngx-components/repository/shared").SelectedRepositoryBinary[]>;
        choiceEmitter: EventEmitter<ISelectModalObject>;
        updateInstallableList$: Subject<IUpdateItemEvent<any>>;
    };
    search(filterCriteria: FilterCriteria): void;
    emitSoftwareInstall(items: DeviceSoftware[]): void;
    emitSoftwareRemoval(items: DeviceSoftware[]): void;
    ngOnDestroy(): void;
    private isSoftwareInstalledOnDevicePipe;
    static ɵfac: i0.ɵɵFactoryDeclaration<InstalledSoftwareComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<InstalledSoftwareComponent, "c8y-installed-software", never, { "device": { "alias": "device"; "required": false; }; "softwareList": { "alias": "softwareList"; "required": false; }; "deviceSoftwareChanges": { "alias": "deviceSoftwareChanges"; "required": false; }; "deviceSoftwareChangesInProgress": { "alias": "deviceSoftwareChangesInProgress"; "required": false; }; "typesQuery": { "alias": "typesQuery"; "required": false; }; }, { "changes": "changes"; "showSoftwareChanges": "showSoftwareChanges"; }, never, never, false, never>;
}
//# sourceMappingURL=installed-software.component.d.ts.map