import { ExecutionContext, IEntity, IEntityReference, IInheritedSchema, IPrivateSaveOptions, IPublicGetOptions } from '@essential-projects/core_contracts';
import { Entity, EntityDependencyHelper, IDatastoreService, IEntityCollection, IEntityType, IPropertyBag } from '@essential-projects/data_model_contracts';
import { IEventAggregator } from '@essential-projects/event_aggregator_contracts';
import { IFeature, IFeatureService } from '@essential-projects/feature_contracts';
import { IMessageBusService } from '@essential-projects/messagebus_contracts';
import { IRoutingService } from '@essential-projects/routing_contracts';
import { ITimingService } from '@essential-projects/timing_contracts';
import { IFlowDefEntity, ILaneEntity, INodeDefEntity, IParamStart, IParamUpdateDefs, IProcessDefEntity, IProcessDefEntityTypeService, IProcessEngineService, IProcessEntity, IProcessRepository } from '@process-engine/process_engine_contracts';
export declare class ProcessDefEntity extends Entity implements IProcessDefEntity {
    private _messageBusService;
    private _eventAggregator;
    private _timingService;
    private _processDefEntityTypeService;
    private _processRepository;
    private _featureService;
    private _routingService;
    private _processEngineService;
    private _datastoreService;
    constructor(processDefEntityTypeService: IProcessDefEntityTypeService, processRepository: IProcessRepository, featureService: IFeatureService, messageBusService: IMessageBusService, routingService: IRoutingService, eventAggregator: IEventAggregator, timingService: ITimingService, processEngineService: IProcessEngineService, datastoreService: IDatastoreService, entityDependencyHelper: EntityDependencyHelper, context: ExecutionContext, schema: IInheritedSchema, propertyBag: IPropertyBag, entityType: IEntityType<IEntity>);
    initialize(): Promise<void>;
    private readonly eventAggregator;
    private readonly timingService;
    private readonly processDefEntityTypeService;
    private readonly processRepository;
    private readonly featureService;
    private readonly messageBusService;
    private readonly routingService;
    private readonly processEngineService;
    private readonly datastoreService;
    name: string;
    key: string;
    defId: string;
    xml: string;
    extensions: any;
    internalName: string;
    path: string;
    category: string;
    module: string;
    readonly: boolean;
    version: string;
    counter: number;
    readonly nodeDefCollection: IEntityCollection<INodeDefEntity>;
    getNodeDefCollection(context: ExecutionContext): Promise<IEntityCollection<INodeDefEntity>>;
    readonly flowDefCollection: IEntityCollection<IFlowDefEntity>;
    getFlowDefCollection(context: ExecutionContext): Promise<IEntityCollection<IFlowDefEntity>>;
    readonly laneCollection: IEntityCollection<ILaneEntity>;
    getLaneCollection(context: ExecutionContext): Promise<IEntityCollection<ILaneEntity>>;
    draft: boolean;
    latest: boolean;
    readonly features: Array<IFeature>;
    createProcessInstance(context: ExecutionContext): Promise<IProcessEntity>;
    start(context: ExecutionContext, params: IParamStart, options?: IPublicGetOptions): Promise<IEntityReference>;
    updateBpmn(context: ExecutionContext, xml: string): Promise<any>;
    private _parseTimerDefinitionType(eventDefinition);
    private _parseTimerDefinition(eventDefinition);
    startTimer(context: ExecutionContext): Promise<void>;
    updateDefinitions(context: ExecutionContext, params?: IParamUpdateDefs): Promise<void>;
    private _updateLanes(lanes, context, counter);
    private _updateNodes(nodes, laneCache, bpmnDiagram, context, counter, helperObject);
    private _updateFlows(flows, nodeCache, context, counter);
    private _createBoundaries(nodes, nodeCache, context);
    private _updateExtensionElements(extensionElements, entity);
    private _extractFeatures();
    save(context: ExecutionContext, options?: IPrivateSaveOptions): Promise<IEntity>;
    readonly persist: boolean;
    getDraft(context: ExecutionContext): Promise<IProcessDefEntity>;
    getLatest(context: ExecutionContext): Promise<IProcessDefEntity>;
    publishDraft(context: ExecutionContext): Promise<IProcessDefEntity>;
    equals(processDef: IProcessDefEntity): boolean;
}
