import type { Workflow } from '../orchestrator/workflow/WorkflowSchema';
export interface FlowListEntry {
    id: string;
    name: string;
    type: string;
    description: string;
    steps: number;
    source: 'local' | 'catalog' | 'bundled';
    sourcePath: string;
}
/** Resolve all workflow source directories in lookup-priority order. */
export declare function workflowRoots(cwd?: string): Array<{
    dir: string;
    source: FlowListEntry['source'];
}>;
/** List all available workflows across all roots (dedupes by id, first wins). */
export declare function listFlows(cwd?: string): FlowListEntry[];
/**
 * Legacy workflow-id aliases → canonical id. Keeps old commands working after a
 * rename (e.g. `flow run brownfield-discovery` still resolves to brownfield-blueprint).
 */
export declare const FLOW_ALIASES: Record<string, string>;
/** Resolve a possibly-legacy workflow id to its canonical form. */
export declare function resolveFlowId(id: string): string;
/** Find a single workflow by id across all roots. Returns null if not found. */
export declare function findFlow(id: string, cwd?: string): {
    workflow: Workflow;
    sourcePath: string;
    source: FlowListEntry['source'];
} | null;
/**
 * Dry-run a workflow: prints its phase plan without executing any step. Used
 * by `openlife flow run <id> --dry-run`.
 */
export interface DryRunSummary {
    id: string;
    name: string;
    type: string;
    steps: Array<{
        phase?: number;
        name?: string;
        id?: string;
        agent?: string;
        squad?: string;
        action?: string;
        task?: string;
        optional?: boolean;
        elicit?: boolean;
    }>;
}
export declare function dryRunFlow(id: string, cwd?: string): DryRunSummary | null;
/**
 * Render a dry-run summary as human-readable lines suitable for terminal output.
 */
export declare function renderDryRun(summary: DryRunSummary): string[];
