import { type EnvProviderState, type IExecuteFunctions, type Workflow, type IRunExecutionData, type INodeExecutionData, type ITaskDataConnections, type INode, type WorkflowParameters, type INodeParameters, type WorkflowExecuteMode, type IExecuteData, type IDataObject, type IWorkflowExecuteAdditionalData, type Result } from 'n8n-workflow';
import { type TaskResultData, type N8nMessage, type RequesterMessage } from '../runner-types';
export type RequestAccept = (jobId: string) => void;
export type RequestReject = (reason: string) => void;
export type TaskAccept = (data: TaskResultData) => void;
export type TaskReject = (error: unknown) => void;
export interface TaskData {
    executeFunctions: IExecuteFunctions;
    inputData: ITaskDataConnections;
    node: INode;
    workflow: Workflow;
    runExecutionData: IRunExecutionData;
    runIndex: number;
    itemIndex: number;
    activeNodeName: string;
    connectionInputData: INodeExecutionData[];
    siblingParameters: INodeParameters;
    mode: WorkflowExecuteMode;
    envProviderState: EnvProviderState;
    executeData?: IExecuteData;
    defaultReturnRunIndex: number;
    selfData: IDataObject;
    contextNodeName: string;
    additionalData: IWorkflowExecuteAdditionalData;
}
export interface PartialAdditionalData {
    executionId?: string;
    restartExecutionId?: string;
    restApiUrl: string;
    instanceBaseUrl: string;
    formWaitingBaseUrl: string;
    webhookBaseUrl: string;
    webhookWaitingBaseUrl: string;
    webhookTestBaseUrl: string;
    currentNodeParameters?: INodeParameters;
    executionTimeoutTimestamp?: number;
    userId?: string;
    variables: IDataObject;
}
export interface AllCodeTaskData {
    workflow: Omit<WorkflowParameters, 'nodeTypes'>;
    inputData: ITaskDataConnections;
    node: INode;
    runExecutionData: IRunExecutionData;
    runIndex: number;
    itemIndex: number;
    activeNodeName: string;
    connectionInputData: INodeExecutionData[];
    siblingParameters: INodeParameters;
    mode: WorkflowExecuteMode;
    envProviderState: EnvProviderState;
    executeData?: IExecuteData;
    defaultReturnRunIndex: number;
    selfData: IDataObject;
    contextNodeName: string;
    additionalData: PartialAdditionalData;
}
export interface TaskRequest {
    requestId: string;
    taskType: string;
    settings: unknown;
    data: TaskData;
}
export interface Task {
    taskId: string;
    settings: unknown;
    data: TaskData;
}
export declare class TaskManager {
    requestAcceptRejects: Map<string, {
        accept: RequestAccept;
        reject: RequestReject;
    }>;
    taskAcceptRejects: Map<string, {
        accept: TaskAccept;
        reject: TaskReject;
    }>;
    pendingRequests: Map<string, TaskRequest>;
    tasks: Map<string, Task>;
    startTask<TData, TError>(additionalData: IWorkflowExecuteAdditionalData, taskType: string, settings: unknown, executeFunctions: IExecuteFunctions, inputData: ITaskDataConnections, node: INode, workflow: Workflow, runExecutionData: IRunExecutionData, runIndex: number, itemIndex: number, activeNodeName: string, connectionInputData: INodeExecutionData[], siblingParameters: INodeParameters, mode: WorkflowExecuteMode, envProviderState: EnvProviderState, executeData?: IExecuteData, defaultReturnRunIndex?: number, selfData?: IDataObject, contextNodeName?: string): Promise<Result<TData, TError>>;
    sendMessage(_message: RequesterMessage.ToN8n.All): void;
    onMessage(message: N8nMessage.ToRequester.All): void;
    taskReady(requestId: string, taskId: string): void;
    rejectTask(jobId: string, reason: string): void;
    taskDone(taskId: string, data: TaskResultData): void;
    taskError(taskId: string, error: unknown): void;
    sendTaskData(taskId: string, requestId: string, requestType: N8nMessage.ToRequester.TaskDataRequest['requestType']): void;
    handleRpc(taskId: string, callId: string, name: N8nMessage.ToRequester.RPC['name'], params: unknown[]): Promise<void>;
}
