import { OnDestroy } from '@angular/core';
import { CaseResourceService } from '../../../resources/engine-endpoint/case-resource.service';
import { BehaviorSubject, Observable } from 'rxjs';
import { HttpParams } from '@angular/common/http';
import { Case } from '../../../resources/interface/case';
import { LoggerService } from '../../../logger/services/logger.service';
import { SnackBarService } from '../../../snack-bar/services/snack-bar.service';
import { SearchService } from '../../../search/search-service/search.service';
import { TranslateService } from '@ngx-translate/core';
import { Pagination } from '../../../resources/interface/pagination';
import { PageLoadRequestContext } from '../../abstract/page-load-request-context';
import { Filter } from '../../../filter/models/filter';
import { ListRange } from '@angular/cdk/collections';
import { LoadingWithFilterEmitter } from '../../../utility/loading-with-filter-emitter';
import { CasePageLoadRequestResult } from '../models/case-page-load-request-result';
import { UserService } from '../../../user/services/user.service';
import { NewCaseConfiguration } from '../models/new-case-configuration';
import { ProcessService } from '../../../process/process.service';
import { PetriNetReferenceWithPermissions } from '../../../process/petri-net-reference-with-permissions';
import { SearchIndexResolverService } from '../../../search/search-keyword-resolver-service/search-index-resolver.service';
import { AllowedNetsService } from '../../../allowed-nets/services/allowed-nets.service';
import { AbstractSortableViewComponent } from '../../abstract/sortable-view';
import { NewCaseCreationConfigurationData } from '../../../side-menu/content-components/new-case/model/new-case-injection-data';
import { PermissionService } from '../../../authorization/permission/permission.service';
import { MatDialog } from '@angular/material/dialog';
import * as i0 from "@angular/core";
export declare class CaseViewService extends AbstractSortableViewComponent implements OnDestroy {
    protected _allowedNetsService: AllowedNetsService;
    protected _dialog: MatDialog;
    protected _caseResourceService: CaseResourceService;
    protected _log: LoggerService;
    protected _snackBarService: SnackBarService;
    protected _searchService: SearchService;
    protected _translate: TranslateService;
    protected _user: UserService;
    protected _processService: ProcessService;
    protected _newCaseComponent: any;
    protected _permissionService: PermissionService;
    readonly DEFAULT_NEW_CASE_CONFIGURATION: NewCaseConfiguration;
    protected _loading$: LoadingWithFilterEmitter;
    protected _cases$: Observable<Array<Case>>;
    protected _nextPage$: BehaviorSubject<PageLoadRequestContext>;
    protected _endOfData: boolean;
    protected _pagination: Pagination;
    protected _newCaseConfiguration: NewCaseConfiguration;
    protected _paginationView: boolean;
    constructor(_allowedNetsService: AllowedNetsService, _dialog: MatDialog, _caseResourceService: CaseResourceService, _log: LoggerService, _snackBarService: SnackBarService, _searchService: SearchService, _translate: TranslateService, _user: UserService, _processService: ProcessService, resolver: SearchIndexResolverService, _newCaseComponent: any, newCaseConfig: NewCaseConfiguration, _permissionService: PermissionService);
    ngOnDestroy(): void;
    get loading(): boolean;
    get loading$(): Observable<boolean>;
    get cases$(): Observable<Array<Case>>;
    get pagination(): Pagination;
    protected get activeFilter(): Filter;
    set paginationView(value: boolean);
    loadPage(requestContext: PageLoadRequestContext): Observable<CasePageLoadRequestResult>;
    nextPage(renderedRange: ListRange, totalLoaded: number, requestContext?: PageLoadRequestContext): void;
    nextPagePagination(length: number, pageIndex: number, requestContext?: PageLoadRequestContext): void;
    private isLoadingRelevantFilter;
    createNewCase(newCaseCreationConfiguration?: NewCaseCreationConfigurationData): Observable<Case>;
    createDefaultNewCase(newCaseCreationConfiguration?: NewCaseCreationConfigurationData): Observable<Case>;
    getNewCaseAllowedNets(blockNets?: string[]): Observable<Array<PetriNetReferenceWithPermissions>>;
    /**
     * Returns number of allowed nets of case view
     * @returns length of allowedNets array if it is defined, 0 if it is undefined
     */
    getAllowedNetsCount(): number;
    protected addPageParams(params: HttpParams, pagination: Pagination): HttpParams;
    protected getDefaultSortParam(): string;
    protected getMetaFieldSortId(): string;
    reload(): void;
    hasAuthority(authority: Array<string> | string): boolean;
    /**
     * Determines whether the current user has the [VIEW]{@link PermissionType#VIEW} permission on the current case
     * @param aCase the tested case
     * @returns `true` if the current user has the `VIEW` permission on the tested case, `false` otherwise.
     */
    viewEnabled(aCase: Case): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<CaseViewService, [null, null, null, null, null, null, null, null, null, null, { optional: true; }, { optional: true; }, null]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<CaseViewService>;
}
