import { OnDestroy } from '@angular/core';
import { LoadingEmitter } from '../../utility/loading-emitter';
import { TaskContentService } from '../../task-content/services/task-content.service';
import { TaskHandlingService } from './task-handling-service';
import * as i0 from "@angular/core";
/**
 * Holds information about the state of backend requests regarding a single {@link Task} instance
 * held within the {@link TaskContentService}.
 *
 * This Service is used by many other Services that handle the necessary logic for working with a single Task on frontend.
 */
export declare class TaskRequestStateService extends TaskHandlingService implements OnDestroy {
    protected _loading: LoadingEmitter;
    protected _updating: LoadingEmitter;
    constructor(_taskContent: TaskContentService);
    /**
     * @returns whether the task is currently loading, or `undefined` if the queried task is
     * not held within the injected {@link TaskContentService}.
     *
     * @param taskId stringId of the {@link Task} we would like to get information about.
     * If no value is provided, the state of the task held in the {@link TaskContentService} will be returned.
     */
    isLoading(taskId?: string): boolean | undefined;
    /**
     * Changes the state of the loading indicator to `true`,
     * if the task held within the injected {@link TaskContentService} has the Id that is provided as argument.
     * This method does nothing otherwise.
     *
     * @param taskId stringId of the {@link Task} who's loading state we want to change
     */
    startLoading(taskId: string): void;
    /**
     * Changes the state of the loading indicator to `false`,
     * if the task held within the injected {@link TaskContentService} has the Id that is provided as argument.
     * This method does nothing otherwise.
     *
     * @param taskId stringId of the {@link Task} who's loading state we want to change
     */
    stopLoading(taskId: string): void;
    /**
     * @returns whether the task is currently updating it's data fields, or `undefined` if the queried task is
     * not held within the injected {@link TaskContentService}.
     *
     * @param taskId stringId of the {@link Task} we would like to get information about.
     * If no value is provided, the state of the task held in the {@link TaskContentService} will be returned.
     */
    isUpdating(taskId?: string): boolean | undefined;
    /**
     * Changes the state of the updating indicator to `true`,
     * if the task held within the injected {@link TaskContentService} has the Id that is provided as argument.
     * This method does nothing otherwise.
     *
     * @param taskId stringId of the {@link Task} who's loading state we want to change
     */
    startUpdating(taskId: string): void;
    /**
     * Changes the state of the updating indicator to `false`,
     * if the task held within the injected {@link TaskContentService} has the Id that is provided as argument.
     * This method does nothing otherwise.
     *
     * @param taskId stringId of the {@link Task} who's loading state we want to change
     */
    stopUpdating(taskId: string): void;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<TaskRequestStateService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<TaskRequestStateService>;
}
