import { ConfigurationService } from '../../configuration/configuration.service';
import { Params, ProviderProgress, ResourceProvider } from '../resource-provider.service';
import { Observable } from 'rxjs';
import { Count } from '../interface/count';
import { EventOutcomeMessageResource, MessageResource } from '../interface/message-resource';
import { TaskReference } from '../interface/task-reference';
import { Task } from '../interface/task';
import { CountService } from '../abstract-endpoint/count-service';
import { Filter } from '../../filter/models/filter';
import { HttpParams } from '@angular/common/http';
import { Page } from '../interface/page';
import { FieldConverterService } from '../../task-content/services/field-converter.service';
import { TaskSetDataRequestBody } from '../interface/task-set-data-request-body';
import { LoggerService } from '../../logger/services/logger.service';
import { AbstractResourceService } from '../abstract-endpoint/abstract-resource.service';
import { DataGroup } from '../interface/data-groups';
import { FileFieldRequest } from "../interface/file-field-request-body";
import * as i0 from "@angular/core";
export declare class TaskResourceService extends AbstractResourceService implements CountService {
    protected _fieldConverter: FieldConverterService;
    protected _logger: LoggerService;
    constructor(provider: ResourceProvider, configService: ConfigurationService, _fieldConverter: FieldConverterService, _logger: LoggerService);
    /**
     *  Count tasks by provided criteria
     *  POST
     *  {{baseUrl}}/api/task/count
     */
    count(filterParam: Filter): Observable<Count>;
    /**
     * Get all tasks
     * GET
     * {{baseUrl}}/api/task
     */
    getAllTask(): Observable<Array<Task>>;
    /**
     * Assign task
     * GET
     */
    assignTask(taskId: string): Observable<EventOutcomeMessageResource>;
    /**
     * Cancel task
     * GET
     */
    cancelTask(taskId: string): Observable<EventOutcomeMessageResource>;
    /**
     * Delegate task
     * POST
     */
    delegateTask(taskId: string, body: object): Observable<EventOutcomeMessageResource>;
    /**
     * Finish task
     * GET
     */
    finishTask(taskId: string): Observable<EventOutcomeMessageResource>;
    /**
     * Searches tasks trough the Elastic endpoint.
     * POST
     * @param filterParam filter used to search the tasks. Must be of type `TASK`.
     * @param params Additional parameters
     */
    searchTask(filterParam: Filter, params?: Params): Observable<Page<Task>>;
    /**
     * Searches tasks trough the Mongo endpoint.
     * POST
     * @param filterParam filter used to search the tasks. Must be of type `TASK`.
     * Note that the `query` attribute of the filter cannot be used with this endpoint.
     * Attempting to use it will display a warning and remove the attribute from the request.
     * @param params Additional request parameters
     */
    getTasks(filterParam: Filter, params?: Params): Observable<Page<Task>>;
    /**
     * Get all tasks by cases
     * POST
     */
    getAllTasksByCases(body: object): Observable<Array<Task>>;
    /**
     * Get tasks of the case
     * GET
     */
    getAllTasksByCase(caseId: string): Observable<Array<TaskReference>>;
    /**
     * Get all tasks assigned to logged user
     * GET
     */
    getAllMyTasks(): Observable<Array<Task>>;
    /**
     * Get all finished tasks by logged user
     * GET
     */
    getAllFinishedTask(): Observable<Array<Task>>;
    /**
     * Get all task data
     *
     * GET
     *
     * If you don't want to parse the response yourself use [getData]{@link TaskResourceService#getData} instead.
     *
     * @returns the raw backend response without any additional processing
     */
    rawGetData(taskId: string): Observable<EventOutcomeMessageResource>;
    /**
     *  Get all task data
     *
     *  GET
     *
     *  If you want to process the raw backend response use [rawGetData]{@link TaskResourceService#rawGetData} instead.
     *
     * @param taskId ID of the task who's data should be retrieved from the server
     * @returns processed data groups of the given task. If the task has no data an empty array will be returned.
     */
    getData(taskId: string): Observable<Array<DataGroup>>;
    /**
     * Set task data
     * POST
     */
    setData(taskId: string, body: TaskSetDataRequestBody): Observable<EventOutcomeMessageResource>;
    /**
     * Download task file field value
     * GET
     */
    downloadFile(taskId: string, params: HttpParams): Observable<ProviderProgress | Blob>;
    /**
     * Upload file into the task
     * POST
     */
    uploadFile(taskId: string, body: object, multipleFiles: boolean): Observable<ProviderProgress | EventOutcomeMessageResource>;
    /**
     * Delete file from the task
     * DELETE
     */
    deleteFile(taskId: string, body?: FileFieldRequest): Observable<MessageResource>;
    /**
     * Download task file preview for field value
     * GET
     */
    downloadFilePreview(taskId: string, params: HttpParams): Observable<ProviderProgress | Blob>;
    static ɵfac: i0.ɵɵFactoryDeclaration<TaskResourceService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<TaskResourceService>;
}
