import { ProcessDefinition, ProcessDefinitionList } from '@5minds/processcube_engine_sdk';
import { InternalIdentity as Identity } from '../../Contracts/index';
import { CoreAccessService } from '../../Core/index';
import { ProxyConfiguration } from '../../Setups/EngineRouter';
import { ProcessInstanceDatabaseAdapter } from '../../Tools/DatabaseAdaptersSequelize/index';
import { IamService, IdentityService } from '../../Tools/Iam/index';
import { ProcessDefinitionMediator } from '../../Tools/ProcessDefinitionMediator';
import { NotificationService } from './NotificationService';
export declare class ProcessDefinitionApiService {
    private readonly coreAccess;
    private readonly iamService;
    private readonly logger;
    private readonly notificationService;
    private readonly processDefinitionMediator;
    private readonly processInstanceDatabaseAdapter;
    private readonly identityService;
    private internalIdentity;
    private readonly config;
    constructor(coreAccess: CoreAccessService, iamService: IamService, notificationService: NotificationService, processDefinitionMediator: ProcessDefinitionMediator, processInstanceDatabaseAdapter: ProcessInstanceDatabaseAdapter, identityService: IdentityService);
    initialize(): void;
    getAll(identity: Identity, includeXml?: boolean, includeCount?: boolean, offset?: number, limit?: number): Promise<ProcessDefinitionList>;
    getById(identity: Identity, processDefinitionId: string, includeXml?: boolean): Promise<ProcessDefinition>;
    getByProcessModelId(identity: Identity, processModelId: string, includeXml?: boolean): Promise<ProcessDefinition>;
    persistProcessDefinitions(identity: Identity, xml: string | Array<string>, overwriteExisting?: boolean): Promise<void>;
    deleteById(identity: Identity, processDefinitionId: string, deleteAllRelatedData: boolean): Promise<void>;
    private stopRunningProcessInstancesForProcessDefinition;
    private ensureProcessDefinitionIsNotInUse;
    private terminateProcessInstance;
    private ensureHasClaim;
}
export interface ProcessDefinitionApiServiceProxy {
    getAll(identity: Identity, includeXml?: boolean, includeCount?: boolean, offset?: number, limit?: number): Promise<ProcessDefinitionList>;
    getById(identity: Identity, processDefinitionId: string, includeXml?: boolean): Promise<ProcessDefinition>;
    getByProcessModelId(identity: Identity, processModelId: string, includeXml?: boolean): Promise<ProcessDefinition>;
    persistProcessDefinitions(identity: Identity, xml: string | Array<string>, overwriteExisting?: boolean): Promise<void>;
    deleteById(identity: Identity, processDefinitionId: string, deleteAllRelatedData: boolean): Promise<void>;
}
export declare const ProcessDefinitionApiServiceProxyConfiguration: ProxyConfiguration;
