import { Model, SubprocessInstance } from '@5minds/processcube_engine_sdk';
import { FlowNodeInstanceDatabaseAdapter } from '../../../Tools/DatabaseAdaptersSequelize/FlowNodeInstanceAdapter';
import { ProcessInstanceDatabaseAdapter } from '../../../Tools/DatabaseAdaptersSequelize/ProcessInstanceAdapter';
import { EventMiddlewareHandler } from '../../../Tools/EventMiddlewareHandler';
import { IdentityService } from '../../../Tools/Iam/IdentityService';
import { CoreAccessService } from '../../CoreAccessService';
import { ProcessInstance, ProcessInstanceFactory } from '../../ProcessInstance';
import { ActivityHandler } from './ActivityHandler';
import { ActivityInstanceHandler } from './ActivityInstanceHandler';
export declare class SubProcessInstanceHandler extends ActivityInstanceHandler<Model.Activities.SubProcess> {
    private readonly coreAccess;
    private readonly identityService;
    private readonly processInstanceDatabaseAdapter;
    private readonly processInstanceFactory;
    private childProcessInstance;
    private killedSubscription;
    private endSubscription;
    private erroredSubscription;
    protected loggerNamespace: string;
    constructor(coreAccess: CoreAccessService, eventMiddlewareHandler: EventMiddlewareHandler, flowNodeInstanceDatabaseAdapter: FlowNodeInstanceDatabaseAdapter, identityService: IdentityService, processInstanceDatabaseAdapter: ProcessInstanceDatabaseAdapter, processInstanceFactory: ProcessInstanceFactory, activityHandler: ActivityHandler<Model.Activities.SubProcess>, processInstance: ProcessInstance, previousFlowNodeInstanceId?: string, instanceContext?: {
        [key: string]: any;
    });
    private get subProcess();
    protected afterExecute(): Promise<void>;
    protected resumeAfterSuspend(subProcessInstance: SubprocessInstance): Promise<void>;
    protected runHandler(): Promise<void>;
    private suspendHandlerAndExecuteTargetProcess;
    private executeTargetProcess;
    private resumeChildProcessInstance;
    private subscribeToChildProcessEvents;
    private createTokenFromSubProcessResult;
    private killProcessInstance;
    private getOwnerIdentity;
}
