import type { TransformObject, Pipeline, DataMapper, InitialState } from 'map-transform/types.js';
import type { Action, Response, Meta, HandlerDispatch, Condition, MapTransform, MapOptions, ValidateObject } from '../types.js';
import type { JobStepDef } from './types.js';
export declare const breakSymbol: unique symbol;
export type Validator = (actionResponses: Record<string, Action>) => Promise<[Response | null, boolean]>;
export interface ResponsesObject extends Record<string, Action> {
    [breakSymbol]?: boolean;
}
export declare const statusFromResponses: (responses: Response[]) => string | undefined;
export declare function createPreconditionsValidator(preconditions: ValidateObject[] | undefined, validationFilters: Record<string, Condition | undefined> | undefined, mapTransform: MapTransform, mapOptions: MapOptions, failOnErrorInPostconditions: boolean, prevStepId?: string): Validator;
export declare function getLastJobWithResponse(steps: Step[], actionResponses: Record<string, Action>): Response<unknown> | undefined;
export declare function mutateResponse(action: Action, responses: Record<string, Action>, origin: string, postmutator?: DataMapper<InitialState>, prefixOrigin?: boolean): Promise<Action>;
export declare const prepareMutation: (pipeline: TransformObject | Pipeline, mapTransform: MapTransform, mapOptions: MapOptions, useMagic?: boolean) => DataMapper<InitialState>;
export declare function getPrevStepId(index: number, steps: (JobStepDef | JobStepDef[])[]): string | undefined;
export default class Step {
    #private;
    id: string;
    constructor(stepDef: JobStepDef | JobStepDef[], mapTransform: MapTransform, mapOptions: MapOptions, failOnErrorInPostconditions?: boolean, prevStepId?: string, isJob?: boolean);
    runIteration(actionResponses: Record<string, Action>, dispatch: HandlerDispatch, meta: Meta): Promise<{
        [k: string]: Action<import("../types.js").Payload<unknown>, unknown>;
    } | undefined>;
    runAction(actionResponses: Record<string, Action>, dispatch: HandlerDispatch, meta: Meta): Promise<ResponsesObject>;
    runSubSteps(actionResponses: Record<string, Action>, dispatch: HandlerDispatch, meta: Meta): Promise<{}>;
    run(meta: Meta, actionResponses: Record<string, Action>, dispatch: HandlerDispatch): Promise<ResponsesObject>;
}
