import { Observable } from 'rxjs';
import { Params, ResourceProvider } from '../resource-provider.service';
import { Count } from '../interface/count';
import { Case } from '../interface/case';
import { FileResource } from '../interface/file-resource';
import { ConfigurationService } from '../../configuration/configuration.service';
import { CountService } from '../abstract-endpoint/count-service';
import { Filter } from '../../filter/models/filter';
import { Page } from '../interface/page';
import { CaseGetRequestBody } from '../interface/case-get-request-body';
import { AbstractResourceService } from '../abstract-endpoint/abstract-resource.service';
import { EventOutcomeMessageResource } from '../interface/message-resource';
import { CreateCaseRequestBody } from '../interface/create-case-request-body';
import { HttpParams } from "@angular/common/http";
import * as i0 from "@angular/core";
export declare class CaseResourceService extends AbstractResourceService implements CountService {
    constructor(provider: ResourceProvider, configService: ConfigurationService);
    /**
     * Get count of the cases
     * POST
     * {{baseUrl}}/api/workflow/case/count
     */
    count(filter: Filter): Observable<Count>;
    /**
     * Get all cases of the system
     * GET
     * {{baseUrl}}/api/workflow/all
     */
    getAllCase(): Observable<Array<Case>>;
    /**
     * Generic case search
     * POST
     * {{baseUrl}}/api/workflow/case/search
     * @param filter filter used to search cases. Must be of type `CASE`.
     * @param params request parameters, that can be used for sorting of results.
     */
    searchCases(filter: Filter, params?: Params): Observable<Page<Case>>;
    /**
     * Delete case
     * DELETE
     * {{baseUrl}}/api/workflow/case/:id
     */
    deleteCase(caseID: string, deleteSubtree?: boolean): Observable<EventOutcomeMessageResource>;
    /**
     * Download case file field value
     * GET
     * {{baseUrl}}/api/workflow/case/:id/file/:field
     */
    getCaseFile(caseID: string, params: HttpParams): Observable<FileResource>;
    /**
     * Create new case
     * POST
     * {{baseUrl}}/api/workflow/case
     */
    createCase(body: CreateCaseRequestBody): Observable<EventOutcomeMessageResource>;
    /**
     * Get all cases by user that created them
     * POST
     * {{baseUrl}}/api/workflow/case/author/:id
     */
    getAllCaseUser(userId: string, body: object): Observable<Array<Case>>;
    /**
     * Generic case search with QueryDSL predicate
     * POST
     * {{baseUrl}}/api/workflow/case/search2
     */
    getCasesQueryDSL(body: object): Observable<Page<Case>>;
    /**
     * Generic case search with object encoded search query. Similar to [getCasesQueryDSL]{@link CaseResourceService#getCasesQueryDSL}
     * POST
     * {{baseUrl}}/api/workflow/case/search_mongo
     * @param body object defining the search query
     * @param params request parameters, that can be used for sorting of results.
     */
    getCases(body: CaseGetRequestBody, params?: Params): Observable<Page<Case>>;
    /**
     * Search one case by it's id.
     * GET
     * {{baseUrl}}/api/workflow/case/:id
     */
    getOneCase(caseId: string): Observable<Case>;
    /**
     * Get options for enumeration or multiple-choice data field
     * GET
     * {{baseUrl}}/api/workflow/case/:caseId/field/:fieldId
     */
    getOptionsEnumeration(caseId: string, fieldId: string): Observable<Case>;
    static ɵfac: i0.ɵɵFactoryDeclaration<CaseResourceService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<CaseResourceService>;
}
