import { DataModels, IProcessDefinitionExtensionAdapter, Identity } from '@5minds/processcube_engine_sdk';
import { ProcessDefinitionApiService, ProcessModelApiService } from '../../../Api/Services';
import { IdentityService } from '../../Iam';
type ProcessStartOptions<TPayload extends object> = DataModels.ProcessInstances.ProcessStartOptions<TPayload>;
type ProcessStartResponse = DataModels.ProcessInstances.ProcessStartResponse;
export declare class ProcessDefinitionExtensionAdapter implements IProcessDefinitionExtensionAdapter {
    private readonly processDefinitionService;
    private readonly processModelService;
    private readonly identityService;
    private readonly logger;
    constructor(processDefinitionService: ProcessDefinitionApiService, processModelService: ProcessModelApiService, identityService: IdentityService);
    getAll(options?: {
        identity?: Identity;
        includeXml?: boolean;
        includeCount?: boolean;
        offset?: number;
        limit?: number;
    }): Promise<DataModels.ProcessDefinitions.ProcessDefinitionList>;
    getById(processDefinitionId: string, options?: {
        identity?: Identity;
        includeXml?: boolean;
    }): Promise<DataModels.ProcessDefinitions.ProcessDefinition>;
    getByProcessModelId(processModelId: string, options?: {
        identity?: Identity;
        includeXml?: boolean;
    }): Promise<DataModels.ProcessDefinitions.ProcessDefinition>;
    persistProcessDefinitions(xml: string | Array<string>, options?: {
        overwriteExisting?: boolean;
        identity?: Identity;
    }): Promise<void>;
    deployFiles(filePaths: string | Array<string>, options?: {
        overwriteExisting?: boolean;
        identity?: Identity;
    }): Promise<void>;
    startProcessInstance<TPayload extends object>(options: ProcessStartOptions<TPayload>, identity?: Identity): Promise<ProcessStartResponse>;
    startProcessInstanceAndAwaitEndEvent<TPayload extends object>(options: ProcessStartOptions<TPayload>, identity?: Identity): Promise<ProcessStartResponse>;
    startProcessInstanceAndAwaitSpecificEndEvent<TPayload extends object>(options: DataModels.ProcessInstances.ProcessStartOptions<TPayload>, endEventId: string, identity?: Identity): Promise<ProcessStartResponse>;
    /**
     * @param deleteAllRelatedData Optional: If set to true, the Process Definition, as well as all related data, will be completely deleted.
     *                             Otherwise, the Process Definition will only be flagged as deleted, but all data will be kept.
     */
    deleteById(processDefinitionId: string, identity?: Identity, deleteAllRelatedData?: boolean): Promise<void>;
}
export {};
