/**
 * Uniform step execution with timing, logging, precondition checking,
 * and cache integration.
 *
 * The StepRunner is the single place where cache lookup/record happens.
 * Individual steps declare their cache inputs via cacheInputs(); the
 * runner handles the rest.
 */
import type { AppContext, PipelineState, PipelineStep, StepResult } from "../_vendor/ailf-core/index.d.ts";
/**
 * Execute a single pipeline step with uniform middleware.
 *
 * Order of operations:
 * 1. Precondition check → fail fast on errors
 * 2. Cache lookup (if ctx.cache + step.cacheInputs + !noCache)
 * 3. Execute step logic
 * 4. Cache record (on success)
 * 5. Log result
 */
export declare function runStep(step: PipelineStep, ctx: AppContext, state?: PipelineState): Promise<StepResult>;
