import { Transaction } from 'sequelize';
import { BaseError, BpmnType, ProcessInstanceSortSettings, ProcessInstanceState } from '@5minds/processcube_engine_sdk';
import { CreateProcessInstanceRequest, FinishProcessInstancePayload, InternalIdentity as Identity, ProcessInstanceInternal, ProcessInstanceInternalList, ProcessInstanceInternalQuery } from '../../Contracts/InternalDataModels/index';
import { DatabaseAdapter } from './BaseDatabaseAdapter';
export declare class ProcessInstanceDatabaseAdapter extends DatabaseAdapter {
    initialize(): Promise<void>;
    create(request: CreateProcessInstanceRequest): Promise<void>;
    setMetadataValue(processInstanceId: string, metaDataKey: string, metaDataValue: string, flowNodeInstanceId: string): Promise<void>;
    getMinimalRunningProcessInstances(): Promise<Array<{
        processInstanceId: string;
        state: string;
        parentProcessInstanceId?: string;
    }>>;
    getProcessInstances(processInstanceIds: Array<string>): Promise<Array<ProcessInstanceInternal>>;
    getDirectChildProcessInstanceIds(parentProcessInstanceId: string, parentFlowNodeType?: BpmnType.subProcess | BpmnType.callActivity, authorizationQuery?: {
        allowedLanes?: Array<string>;
        requestingUserId?: string;
    }): Promise<Array<string>>;
    getAllDescendantProcessInstanceIds(parentProcessInstanceId: string, parentFlowNodeType?: BpmnType.subProcess | BpmnType.callActivity, authorizationQuery?: {
        allowedLanes?: Array<string>;
        requestingUserId?: string;
    }): Promise<Array<string>>;
    getAncestorProcessInstanceIds(processInstanceId: string, onlyForEmbeddedProcesses?: boolean, authorizationQuery?: {
        allowedLanes?: Array<string>;
        requestingUserId?: string;
    }): Promise<Array<string>>;
    getProcessInstancesByProcessDefinitionIdAndState(processDefinitionId: string, state: ProcessInstanceState): Promise<Array<ProcessInstanceInternal>>;
    countRunningInstancesForModel(processModelId: string): Promise<number>;
    getRetryableChildProcessInstances(parentProcessInstanceIds: Array<string>): Promise<Array<ProcessInstanceInternal>>;
    query(query: ProcessInstanceInternalQuery, offset?: number, limit?: number, sort?: ProcessInstanceSortSettings, includeXml?: boolean, includeDeleted?: boolean, includeCount?: boolean): Promise<ProcessInstanceInternalList>;
    transferOwnership(processInstanceIds: Array<string>, newOwner: Identity): Promise<void>;
    finish(processInstanceId: string, endEventData?: FinishProcessInstancePayload, includeFlowNodeInstances?: boolean): Promise<void>;
    finishWithError(processInstanceId: string, error: Error, endEventData?: FinishProcessInstancePayload, includeFlowNodeInstances?: boolean): Promise<void>;
    terminate(processInstanceId: string, error: BaseError, endEventData?: FinishProcessInstancePayload, includeFlowNodeInstances?: boolean): Promise<void>;
    changeProcessDefinition(processInstanceId: string, newProcessModelHash: string): Promise<void>;
    reset(processInstanceId: string, flowNodeInstanceIdsToReset: Array<string | {
        flowNodeInstanceId: string;
        isUnstartedSubProcess?: boolean;
    }>, flowNodeInstanceIdsToDelete?: Array<string>, processInstanceIdsToDelete?: Array<string>): Promise<void>;
    flagAsDeletedByIds(processInstanceIds: Array<string>): Promise<void>;
    deleteByIds(processInstanceIds: Array<string>): Promise<void>;
    static deleteByIds(processInstanceIds: Array<string>, transaction: Transaction): Promise<void>;
    deleteByProcessDefinitionId(processDefinitionId: string): Promise<void>;
    static deleteByProcessDefinitionId(processDefinitionId: string, deleteTransaction: Transaction): Promise<void>;
    private execCreate;
    private getProcessInstanceIdsList;
    private getUnorderedProcessInstanceList;
    private getProcessInstanceIdsToLoad;
    private getIncludesForPlainQueries;
    private buildProcessInstanceWhereClause;
    private getProcessInstancesWithCount;
    private getProcessInstancesWithoutCount;
    private buildAuthorizationFilters;
    private buildEventTypeFilter;
    private storeCorrelation;
    private static deleteEmptyCorrelations;
    private deleteMetadataValueByFlowNodeInstanceIds;
    private validateCreateRequest;
    private findProcessInstanceAndVerifyRunningState;
    private cleanupFlowNodeInstances;
    private calculateTotalRuntime;
    private calculateRegularRuntime;
    private calculateRuntimeWithRetry;
    private buildQueryOrderSettings;
}
