import type { AdapterKey, StepDefinition, WorkflowDefinition } from "./types.js";
export interface RuntimeDoctorCheck {
    key: string;
    label: string;
    status: "ok" | "missing" | "info";
    required: boolean;
    detail: string;
}
export interface AdapterImplementationStatus {
    adapter: AdapterKey;
    status: "real" | "mock" | "partial";
    detail: string;
}
export declare function validateRuntimeRequirements(definition: WorkflowDefinition, env?: NodeJS.ProcessEnv): string[];
export declare function runtimeDoctorChecks(env?: NodeJS.ProcessEnv): RuntimeDoctorCheck[];
export interface AdapterMockFallbackWarning {
    stepKey: string;
    adapter: AdapterKey;
    message: string;
}
/**
 * Detects a step that explicitly selects a non-pi adapter whose real execution
 * path is not enabled, so the engine will route it to the mock executor. Non-pi
 * agents run through ACP: opencode runs real by default (needs a resolvable agent
 * command; opt out with `useRealAdapter: false`), while acp/claude-code/codex need
 * `useRealAdapter: true` plus a resolvable agent command. Returns a message
 * explaining the gap, or null when the step will run as the user expects (default
 * pi-agent, an enabled ACP/legacy path, or an intentional mock selection).
 */
export declare function adapterMockFallbackReason(step: StepDefinition): string | null;
export declare function adapterMockFallbackWarnings(definition: WorkflowDefinition): AdapterMockFallbackWarning[];
export declare function adapterImplementationStatuses(): AdapterImplementationStatus[];
