import { InternalIdentity as Identity, ProcessStartOptionsInternal } from '../Contracts/InternalDataModels/index';
import { EventMessageInternal } from '../Contracts/InternalMessages/index';
import { FlowNodeInstanceDatabaseAdapter, ProcessInstanceDatabaseAdapter } from '../Tools/DatabaseAdaptersSequelize/index';
import { IamService } from '../Tools/Iam/IamService';
import { IdentityService } from '../Tools/Iam/IdentityService';
import { ProcessDefinitionMediator } from '../Tools/ProcessDefinitionMediator';
import { ProcessInstanceFactory } from './ProcessInstance';
export declare class ExecuteProcessService {
    private readonly flowNodeInstanceDatabaseAdapter;
    private readonly processDefinitionMediator;
    private readonly processInstanceDatabaseAdapter;
    private readonly processInstanceFactory;
    private readonly iamService;
    private readonly identityService;
    private readonly logger;
    constructor(flowNodeInstanceRepository: FlowNodeInstanceDatabaseAdapter, processDefinitionMediator: ProcessDefinitionMediator, processInstanceRepository: ProcessInstanceDatabaseAdapter, processInstanceFactory: ProcessInstanceFactory, iamService: IamService, identityService: IdentityService);
    start<TInitialToken extends object>(identity: Identity, options: ProcessStartOptionsInternal<TInitialToken>): Promise<EventMessageInternal>;
    startAndAwaitEndEvent<TInitialToken extends object>(identity: Identity, options: ProcessStartOptionsInternal<TInitialToken>): Promise<EventMessageInternal>;
    findAndResumeInterruptedProcessInstances(): Promise<void>;
    retryProcessInstance(identity: Identity, processInstanceId: string, flowNodeInstanceId?: string, newStartToken?: Record<string, any>, newProcessDefinitionHash?: string): Promise<void>;
    /**
     * This function is too strict. It verifies, that all possible paths towards `flowNodeInstanceId` have not been altered.
     * It should only verify, that the actually executed path has not been altered.
     * https://5minds.atlassian.net/browse/PCE-1474
     */
    private ensureProcessInstanceBpmnCanBeMigrated;
    private migrateProcessInstanceBpmn;
    private validateStartRequest;
    private waitForAnyEndEvent;
    private getBatchOfRunningInstances;
    private getRootProcessOfProcessInstanceTree;
    private getRetryableChildProcessInstances;
    private resetProcessInstanceToFlowNodeInstance;
    private getNonDescendantProcessInstanceSets;
    private getAllChildProcessIds;
    private isFlowNodeInParallizedBranch;
    private getPreviousParallelizingGateways;
    private ensureProcessInstanceCanBeRestarted;
    private getFlowNodeInstancesAfterFlowNodeInstance;
    private getFollowingFlowNodeInstancesForSubProcesses;
    private getFollowingFlowNodeInstancesForSubProcess;
    private resetProcessInstance;
    private getFlowNodeInstancesToReset;
    private getFlowNodeInstanceIdsInSubProcesses;
    private getBoundaryEventsForFlowNodeInstances;
    private shouldResetFlowNode;
    private getErrorBoundaryEventInstancesForFlowNodeInstance;
    private resumeProcessInstance;
    private finishOrphanedChildProcessIntances;
    private finishOrphanedProcessInstance;
    private getFinalFlowNodeInstanceForOrphanedProcessInstance;
}
