import { ExecutionContext, IApplicationService, IIamService, IPublicGetOptions } from '@essential-projects/core_contracts';
import { IDatastoreService } from '@essential-projects/data_model_contracts';
import { IEventAggregator } from '@essential-projects/event_aggregator_contracts';
import { IFeatureService } from '@essential-projects/feature_contracts';
import { IInvoker } from '@essential-projects/invocation_contracts';
import { IMessageBusService } from '@essential-projects/messagebus_contracts';
import { IErrorDeserializer, INodeInstanceEntityTypeService, IParamStart, IProcessDefEntity, IProcessDefEntityTypeService, IProcessEngineService, IProcessRepository, IUserTaskMessageData } from '@process-engine/process_engine_contracts';
import { IFactoryAsync } from 'addict-ioc';
import { IExecuteProcessService } from './execution';
export declare class ProcessEngineService implements IProcessEngineService {
    private _messageBusService;
    private _eventAggregator;
    private _processDefEntityTypeService;
    private _executeProcessService;
    private _featureService;
    private _iamService;
    private _processRepository;
    private _datastoreService;
    private _nodeInstanceEntityTypeServiceFactory;
    private _nodeInstanceEntityTypeService;
    private _applicationService;
    private _invoker;
    private _errorDeserializer;
    private _internalContext;
    config: any;
    constructor(messageBusService: IMessageBusService, eventAggregator: IEventAggregator, processDefEntityTypeService: IProcessDefEntityTypeService, executeProcessService: IExecuteProcessService, featureService: IFeatureService, iamService: IIamService, processRepository: IProcessRepository, datastoreService: IDatastoreService, nodeInstanceEntityTypeServiceFactory: IFactoryAsync<INodeInstanceEntityTypeService>, applicationService: IApplicationService, invoker: IInvoker);
    private readonly messageBusService;
    private readonly eventAggregator;
    private readonly processDefEntityTypeService;
    private readonly featureService;
    private readonly iamService;
    private readonly processRepository;
    private readonly datastoreService;
    private _getNodeInstanceEntityTypeService();
    private readonly applicationService;
    private readonly invoker;
    private readonly errorDeserializer;
    private _getInternalContext();
    private _initializeDefaultErrorDeserializer();
    initialize(): Promise<void>;
    start(context: ExecutionContext, params: IParamStart, options?: IPublicGetOptions): Promise<string>;
    getUserTaskData(context: ExecutionContext, userTaskId: string): Promise<IUserTaskMessageData>;
    createBpmnFromXml(context: ExecutionContext, xml: string): Promise<IProcessDefEntity>;
    private _messageHandler(msg);
    private handleProcessEngineMessage(message);
    private _initializeMessageBus();
    private _initializeProcesses();
    private _startTimers();
    private _continueOwnProcesses();
    private _continueOwnProcess(context, waitingNode);
    private _getAllWaitingNodes();
    private _nodeAlreadyBelongsToOtherProcessEngine(context, node);
    private _getSpecificEntityByNodeInstance(context, nodeInstance);
    private _timeoutPromise(milliseconds);
    private _waitForMessagebus();
    executeProcess(context: ExecutionContext, id: string, key: string, initialToken: any, version?: string): Promise<any>;
    executeProcessInstance(context: ExecutionContext, processInstanceId: string, participantId: string, initialToken: any): Promise<any>;
    createProcessInstance(context: ExecutionContext, processDefId: string, key: string, version?: string): Promise<string>;
    setErrorDeserializer(deserializer: IErrorDeserializer): void;
    private _executeProcessLocally(context, processDefinition, initialToken);
    private _executeProcessInstanceLocally(context, processInstance, participantId, initialToken);
    private _executeProcessRemotely(context, requiredFeatures, id, key, initialToken, version?);
    private _executeProcessInstanceRemotely(context, requiredFeatures, processInstanceId, participantId, initialToken);
    private _createProcessInstanceRemotely(context, requiredFeatures, id, key, version?);
}
