import type { StepFlowEntry, Workflow } from '../../index.js';
import type { Mastra } from '../../../mastra/index.js';
import type { SingleStepEntry } from '../../types.js';
import type { ParentWorkflow } from '.';
export declare function getNestedWorkflow(mastra: Mastra, { workflowId, executionPath, parentWorkflow, runId }: ParentWorkflow): Workflow | null;
/**
 * Resolves the single-step entry addressed by an execution path, or null when
 * the path doesn't land on a single-step-like entry. For `loop` / `foreach`
 * the body entry is returned.
 */
export declare function getStepEntry(workflow: Workflow, executionPath: number[]): SingleStepEntry | null;
/**
 * Resolves the id of the entry addressed by an execution path, or null when the
 * path doesn't land on a single-step-like entry. For `loop` / `foreach` the id
 * of the body entry is returned.
 */
export declare function getStepId(workflow: Workflow, executionPath: number[]): string | null;
export declare function isExecutableStep(step: StepFlowEntry<any>): step is {
    type: "step";
    step: import("../..").Step;
} | {
    type: "agent";
    id: string;
    agentId: string;
    agent?: any;
    options?: any;
} | {
    type: "tool";
    id: string;
    toolId: string;
    tool?: any;
    options?: any;
} | {
    type: "mapping";
    id: string;
    mapConfig: import("../..").MappingConfig | import("../..").ExecuteFunction<any, any, any, any, any, any>;
} | {
    type: "loop";
    step: SingleStepEntry<any>;
    condition: import("../..").LoopConditionFunction<any, any, any, any, any, any>;
    serializedCondition: {
        id: string;
        fn: string;
    };
    loopType: "dowhile" | "dountil";
    predicate?: import("../..").Predicate;
} | {
    type: "foreach";
    step: SingleStepEntry<any>;
    opts: import("../..").ForeachOptions;
};
//# sourceMappingURL=utils.d.ts.map