import { DataModels, IUserTaskExtensionAdapter, Identity, Messages, Subscription } from '@5minds/processcube_engine_sdk';
import { FlowNodeInstanceService, NotificationService } from '../../../Api/Services';
import { IdentityService } from '../../Iam';
type UserTaskList = DataModels.FlowNodeInstances.UserTaskList;
export declare class UserTaskExtensionAdapter implements IUserTaskExtensionAdapter {
    private readonly flowNodeInstanceService;
    private readonly identityService;
    private readonly logger;
    private readonly notificationService;
    constructor(flowNodeInstanceService: FlowNodeInstanceService, notificationService: NotificationService, identityService: IdentityService);
    query(query: DataModels.FlowNodeInstances.UserTaskQuery, options?: {
        identity?: Identity;
        offset?: number;
        limit?: number;
        sortSettings?: DataModels.FlowNodeInstances.FlowNodeInstanceSortSettings;
        includeCount?: boolean;
    }): Promise<UserTaskList>;
    reserveUserTaskInstance(identity: Identity, flowNodeInstanceId: string, actualOwnerId: string): Promise<void>;
    cancelUserTaskInstanceReservation(identity: Identity, flowNodeInstanceId: string): Promise<void>;
    finishUserTask(userTaskInstanceId: string, userTaskResult: DataModels.FlowNodeInstances.UserTaskResult, identity?: Identity): Promise<void>;
    onUserTaskWaiting(callback: Messages.CallbackTypes.OnUserTaskWaitingCallback, options?: {
        subscribeOnce?: boolean;
        identity?: Identity;
    }): Promise<Subscription>;
    onUserTaskFinished(callback: Messages.CallbackTypes.OnUserTaskFinishedCallback, options?: {
        subscribeOnce?: boolean;
        identity?: Identity;
    }): Promise<Subscription>;
    onUserTaskReserved(callback: Messages.CallbackTypes.OnUserTaskReservedCallback, options?: {
        subscribeOnce?: boolean;
        identity?: Identity;
    }): Promise<Subscription>;
    onUserTaskReservationCanceled(callback: Messages.CallbackTypes.OnUserTaskReservationCanceledCallback, options?: {
        subscribeOnce?: boolean;
        identity?: Identity;
    }): Promise<Subscription>;
    removeSubscription(subscription: Subscription): void;
}
export {};
