import { TaskHandlingService } from './task-handling-service';
import { TaskContentService } from '../../task-content/services/task-content.service';
import { DataFocusPolicyService } from './data-focus-policy.service';
import { TaskOperations } from '../interfaces/task-operations';
import { FinishTaskService } from './finish-task.service';
import { Subject } from 'rxjs';
import { AfterAction } from '../../utility/call-chain/after-action';
import * as i0 from "@angular/core";
/**
 * Handles the sequence of actions that are performed when a task is being finished, based on the task's configuration.
 */
export declare class FinishPolicyService extends TaskHandlingService {
    protected _dataFocusPolicyService: DataFocusPolicyService;
    protected _finishTaskService: FinishTaskService;
    protected _taskOperations: TaskOperations;
    constructor(_dataFocusPolicyService: DataFocusPolicyService, _finishTaskService: FinishTaskService, _taskOperations: TaskOperations, taskContentService: TaskContentService);
    /**
     * Performs the actions that correspond to the policy defined by the Task when it's finished.
     * @param afterAction the action that should be performed when the finish policy finishes
     */
    performFinishPolicy(afterAction?: AfterAction): void;
    /**
     * Performs the actions that correspond to the [Auto Finish Policy]{@link FinishPolicy#autoNoData}.
     *
     * If the task has no data performs finish and [closes]{@link TaskOperations#close} the task.
     * Otherwise [opens]{@link TaskOperations#open} it and performs the [data focus policy]{@link DataFocusPolicyService}.
     *
     * @param afterAction the action that should be performed when the finish policy finishes
     */
    protected autoNoDataFinishPolicy(afterAction: AfterAction): void;
    /**
     * Performs the actions that correspond to the [Manual Finish Policy]{@link FinishPolicy#manual}.
     *
     * [Opens]{@link TaskOperations#open} the task and performs the [data focus policy]{@link DataFocusPolicyService}.
     *
     * @param afterAction the action that should be performed when the finish policy finishes
     */
    protected manualFinishPolicy(afterAction: Subject<boolean>): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<FinishPolicyService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<FinishPolicyService>;
}
