import { DataModels, IProcessModelExtensionAdapter, Identity } from '@5minds/processcube_engine_sdk';
import { ProcessInstanceService, 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 ProcessModelExtensionAdapter implements IProcessModelExtensionAdapter {
    private readonly identityService;
    private readonly logger;
    private readonly processInstanceService;
    private readonly processModelService;
    constructor(processInstanceService: ProcessInstanceService, processModelService: ProcessModelApiService, identityService: IdentityService);
    getAll(options?: {
        identity?: Identity;
        includeCount?: boolean;
        offset?: number;
        limit?: number;
    }): Promise<DataModels.ProcessDefinitions.ProcessModelList>;
    getById(processModelId: string, identity?: Identity): Promise<DataModels.ProcessDefinitions.ProcessModel>;
    getByProcessInstanceId(processInstanceId: string, identity?: Identity): Promise<DataModels.ProcessDefinitions.ProcessModel>;
    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.
     *                             Note that this won't do anything on engines with a version below v13.0.7.
     */
    deleteDefinitionByProcessModelId(processModelId: string, options?: {
        force?: boolean;
        identity?: Identity;
        deleteAllRelatedData?: boolean;
    }): Promise<void>;
    enableProcessModel(processModelId: string, identity?: Identity): Promise<void>;
    disableProcessModel(processModelId: string, identity?: Identity): Promise<void>;
}
export {};
