import { OperationBulkRealtimeService, ForOfFilterPipe, DatePickerComponent, GainsightService, Route } from '@c8y/ngx-components';
import * as i0 from '@angular/core';
import { OnInit, QueryList } from '@angular/core';
import * as i1 from '@angular/router';
import { Router } from '@angular/router';
import { IOperationBulk, IResultList } from '@c8y/client';
import { OperationStatusOptionsMap, BulkOperationListItemComponent } from '@c8y/ngx-components/operations/bulk-operation-list-item';
import { OperationType, BulkOperationsService } from '@c8y/ngx-components/operations/bulk-operations-service';
import { OperationStatusOption } from '@c8y/ngx-components/operations/shared';
import { StatusFilterComponent } from '@c8y/ngx-components/operations/status-filter';
import { BehaviorSubject, Observable } from 'rxjs';
import { BsModalService, BsModalRef } from 'ngx-bootstrap/modal';

declare class BulkOperationModalsService {
    private bsModalService;
    private bsModalRef;
    constructor(bsModalService: BsModalService);
    showNewBulkOperationModal(): void;
    hideNewBulkOperationModal(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<BulkOperationModalsService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<BulkOperationModalsService>;
}

declare class BulkOperationsListComponent implements OnInit {
    realtime: OperationBulkRealtimeService;
    private bulkOperationsService;
    private bulkOperationModalsService;
    bulkTypes: OperationType[];
    selectedTypeFilters: OperationType[];
    bulkOperationStatusOptions: OperationStatusOptionsMap;
    BULK_OPERATION_EVENT: string;
    bulkActions: {
        readonly OPEN_ADD_BULK_OPERATION_DIALOG: "openAddBulkOperationDialog";
        readonly CANCEL_ADD_BULK_OPERATION_DIALOG: "cancelAddBulkOperationDialog";
        readonly SELECT_BULK_OPERTION_TYPE: "selectBulkOperationType";
    };
    filterPipe: ForOfFilterPipe<IOperationBulk>;
    refreshLoading: boolean;
    statusFilter$: BehaviorSubject<OperationStatusOption[]>;
    typeFilter$: BehaviorSubject<OperationType[]>;
    timeFilter$: BehaviorSubject<any>;
    reload$: BehaviorSubject<void>;
    listItems: QueryList<BulkOperationListItemComponent>;
    statusFilter: StatusFilterComponent;
    datePicker: DatePickerComponent;
    bulkOperations$: Observable<IResultList<IOperationBulk>>;
    private allFilterFragments;
    constructor(realtime: OperationBulkRealtimeService, bulkOperationsService: BulkOperationsService, bulkOperationModalsService: BulkOperationModalsService);
    ngOnInit(): void;
    filterByType(bulkOperations: IOperationBulk[], typeFilter: any): IOperationBulk[];
    resetFilter(): void;
    isFilterApplied(): boolean;
    filter(statusFilters: any, timeFilter: any): Promise<IResultList<IOperationBulk>>;
    getBulkOperations(filter?: any): Promise<IResultList<IOperationBulk>>;
    getTypeFilters(): OperationType[];
    addBulkOperation(): void;
    openFailedOperation(failedParentId: any): void;
    compareOperations(operationA: IOperationBulk, operationB: IOperationBulk): number;
    private flattenFilterFragments;
    static ɵfac: i0.ɵɵFactoryDeclaration<BulkOperationsListComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<BulkOperationsListComponent, "c8y-bulk-operations", never, {}, {}, never, never, true, never>;
}

declare class BulkOperationsModalComponent implements OnInit {
    private bsModalRef;
    private router;
    private gainsightService;
    private bulkOperationsService;
    private bulkOperationModalsService;
    BULK_OPERATION_EVENT: string;
    bulkActions: {
        readonly OPEN_ADD_BULK_OPERATION_DIALOG: "openAddBulkOperationDialog";
        readonly CANCEL_ADD_BULK_OPERATION_DIALOG: "cancelAddBulkOperationDialog";
        readonly SELECT_BULK_OPERTION_TYPE: "selectBulkOperationType";
    };
    pxSteps: {
        readonly SELECT_OPERATION_TYPE: "selectOperationType";
    };
    container: any;
    showComponent: boolean;
    bulkList: OperationType[];
    constructor(bsModalRef: BsModalRef, router: Router, gainsightService: GainsightService, bulkOperationsService: BulkOperationsService, bulkOperationModalsService: BulkOperationModalsService);
    ngOnInit(): void;
    cancel(): void;
    createComponent(item: OperationType): void;
    handleClick(item: OperationType): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<BulkOperationsModalComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<BulkOperationsModalComponent, "c8y-bulk-operations-modal", never, {}, {}, never, never, true, never>;
}

declare const bulkOperationListRoutes: Route[];
/**
 * This module allows for displaying the list of bulk operations and their details.
 */
declare class BulkOperationsListModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<BulkOperationsListModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<BulkOperationsListModule, never, [typeof i1.RouterModule, typeof BulkOperationsListComponent, typeof BulkOperationsModalComponent], [typeof BulkOperationsListComponent, typeof BulkOperationsModalComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<BulkOperationsListModule>;
}

export { BulkOperationModalsService, BulkOperationsListComponent, BulkOperationsListModule, BulkOperationsModalComponent, bulkOperationListRoutes };
//# sourceMappingURL=index.d.ts.map
