import { Location } from '@angular/common';
import { InjectionToken } from '@angular/core';
import { Subject } from 'rxjs';
import { IdReference, IManagedObject, InventoryService, IOperation, IOperationBulk, IResult, OperationBulkService, OperationService } from '@c8y/client';
import { OperationDetails } from './operation-details.model';
import { OperationType } from './operation-type.model';
import { BulkOperationType } from './bulk-operation.model';
import { GenericHookType, GenericHookOptions } from '@c8y/ngx-components';
import * as i0 from "@angular/core";
export declare const baseUrl = "devicecontrol/bulk/creation/";
/**
 * @deprecated Consider using the `hookListBulkType` function instead.
 */
export declare const HOOK_LIST_BULK_TYPE: InjectionToken<OperationType | OperationType[]>;
/**
 * You can either provide a single `OperationType` as parameter:
 * ```typescript
 *  hookListBulkType(...)
 * ```
 *
 * Or an array to directly register multiple:
 * ```typescript
 *  hookListBulkType([...])
 * ```
 *
 * Or you provide an Service that implements `ExtensionFactory<OperationType>`
 * ```typescript
 *  export class MyListBulkTypeFactory implements ExtensionFactory<OperationType> {...}
 *  ...
 *  hookListBulkType(MyListBulkTypeFactory)
 * ```
 * A typed alternative to `HOOK_LIST_BULK_TYPE`.
 * @param type The `OperationType`'s or `ExtensionFactory` to be provided.
 * @returns An `Provider` to be provided in your module.
 */
export declare function hookListBulkType(type: GenericHookType<OperationType>, options?: Partial<GenericHookOptions>): import("@angular/core").ValueProvider | import("@angular/core").ClassProvider | import("@angular/core").ExistingProvider;
export declare class BulkOperationsService {
    private operationBulkService;
    private operationService;
    private inventoryService;
    private location;
    readonly DD_LOW_COUNT: number;
    firmwareId: Subject<IdReference>;
    private bulkTypes;
    constructor(operationBulkService: OperationBulkService, operationService: OperationService, inventoryService: InventoryService, location: Location, bulkTypes: Array<OperationType | OperationType[]>);
    getBulkOperations(customFilter?: {}): Promise<import("@c8y/client").IResultList<IOperationBulk>>;
    getBulkOperationById(bulkOperationId: string | number): Promise<IResult<IOperationBulk>>;
    createBulkOperation(bulkOperation: Partial<IOperationBulk>): Promise<IResult<IOperationBulk>>;
    deleteBulkOperation(bulkOperationId: any): Promise<IResult<null>>;
    updateBulkOperation(bulkOperation: Partial<IOperationBulk>): Promise<IResult<IOperationBulk>>;
    getOperation(id: string): Promise<IResult<IOperation>>;
    returnToBulkOperationOverview(): void;
    setBulkTypes(list: OperationType[]): void;
    getBulkTypes(): OperationType[];
    setFirmwareId(id: IdReference): void;
    createGroup(deviceQueryDataString: string): Promise<IResult<IManagedObject>>;
    scheduleBulkOperation(deviceQueryString: string, details: OperationDetails): Promise<void>;
    getSingleOperationsByStatus(status: any, bulkOperationId: any): Promise<import("@c8y/client").IResultList<IOperation>>;
    updateSingleOperation(partialUpdateObject: Partial<IOperation>): Promise<IResult<IOperation>>;
    retrieveBulkOperationType(operation: IOperation): BulkOperationType;
    static ɵfac: i0.ɵɵFactoryDeclaration<BulkOperationsService, [null, null, null, null, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<BulkOperationsService>;
}
//# sourceMappingURL=bulk-operations.service.d.ts.map