import { ExternalTaskError } from '@5minds/processcube_engine_sdk';
import { InternalIdentity as Identity } from '../../Contracts/InternalDataModels/index';
import { CoreAccessService } from '../../Core/index';
import { ProxyConfiguration } from '../../Setups/EngineRouter';
import { ProcessDefinitionMediator } from '../../Tools';
import { ExternalTaskDatabaseAdapter } from '../../Tools/DatabaseAdaptersSequelize/index';
import { IamService } from '../../Tools/Iam/index';
export declare class ExternalTaskService {
    private readonly externalTaskDatabaseAdapter;
    private readonly iamService;
    private readonly logger;
    private readonly coreAccess;
    private readonly processDefinitionMediator;
    constructor(coreAccess: CoreAccessService, externalTaskDatabaseAdapter: ExternalTaskDatabaseAdapter, iamService: IamService, processDefinitionMediator: ProcessDefinitionMediator);
    getAllDeployedTopics(identity: Identity): Promise<Array<string>>;
    handleError(identity: Identity, workerId: string, externalTaskId: string, error: ExternalTaskError): Promise<void>;
    finishExternalTask<TResult extends Record<string, any>>(identity: Identity, workerId: string, externalTaskId: string, payload: TResult): Promise<void>;
    private ensureExternalTaskCanBeAccessedByWorker;
    private createInternallyUsedExternalTaskError;
    private ensureHasClaim;
}
export interface ExternalTaskServiceProxy {
    getAllDeployedTopics(identity: Identity): Promise<Array<string>>;
    handleBpmnError(identity: Identity, workerId: string, externalTaskId: string, bpmnError: ExternalTaskError): Promise<void>;
    handleError(identity: Identity, workerId: string, externalTaskId: string, serviceError: ExternalTaskError): Promise<void>;
    finishExternalTask<TResult extends Record<string, any>>(identity: Identity, workerId: string, externalTaskId: string, payload: TResult): Promise<void>;
}
export declare const ExternalTaskServiceProxyConfiguration: ProxyConfiguration;
