import { IManagedObject, InventoryService, IOperation, IResultList, OperationService } from '@c8y/client';
import { AlertService } from '@c8y/ngx-components';
import { ComparisonResult, DeviceProfile } from './device-profile.model';
import * as i0 from "@angular/core";
export declare class DeviceProfileService {
    private inventoryService;
    private operationService;
    private alertService;
    readonly dateFrom: Date;
    readonly dateTo: Date;
    private queriesUtil;
    private NOT_INSTALLED_WARNING;
    private VERSION_MISSMATCH_WARNING;
    private SAME_URL_WARNING;
    constructor(inventoryService: InventoryService, operationService: OperationService, alertService: AlertService);
    createDeviceProfile(deviceProfile: Partial<DeviceProfile>): Promise<import("@c8y/client").IResult<IManagedObject>>;
    /**
     * Determines the available device profiles for a given device by considering device type
     * and the supported software types declared by the devices. Because of limitations in the
     * Inventory Query API the methods return profile that contain at least one of the supported
     * software types and omits profiles having only non-supported software types. Resulting device
     * profiles need to be further filtered on the client side to exclude the ones that contain
     * non-supported software types next to the supported ones.
     *
     * @param device A device MO
     * @param name Optional device profile name filter
     * @returns Candidate device profiles that contain at least on software with supported type.
     */
    getDeviceProfilesByDevice(device: IManagedObject, name?: string): Promise<IResultList<IManagedObject>>;
    /**
     * @deprecated Use `getDeviceProfilesByDevice` instead as it also considers the supported software types.
     */
    getDeviceProfilesByDeviceType(deviceType: string): Promise<IResultList<IManagedObject>>;
    getDeviceProfiles(andQuery?: any): Promise<IResultList<IManagedObject>>;
    getProfileOperation(deviceId: string | number): Promise<IOperation>;
    createProfileOperation(device: IManagedObject, deviceProfile: Partial<DeviceProfile>): Promise<any>;
    getFirmwareItems(device: IManagedObject, selectedProfile: Partial<DeviceProfile>): ComparisonResult[];
    getSoftwareItems(device: IManagedObject, selectedProfile: Partial<DeviceProfile>): ComparisonResult[];
    getConfigurationItems(device: IManagedObject, selectedProfile: Partial<DeviceProfile>): ComparisonResult[];
    /**
     * Aligns device profile managed object's `softwareType!*` fragments to the software items
     * included in the device profile. Removes obsolete software type fragments and adds new.
     *
     * @param profilePartial The device profile managed object which `softwareType!*` fragments will be adjusted.
     * @returns The adjusted device profile managed object.
     */
    alignSoftwareTypeFragments(profilePartial: Partial<DeviceProfile>, profile: DeviceProfile): Partial<DeviceProfile>;
    getSoftwareTypes(profile: DeviceProfile): string[];
    private getAlert;
    private createProfileComparison;
    private createProfileComparisonFromDeviceItems;
    private extendProfileComparisonWithProfileItems;
    static ɵfac: i0.ɵɵFactoryDeclaration<DeviceProfileService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<DeviceProfileService>;
}
//# sourceMappingURL=device-profile.service.d.ts.map