/**
 * Describe command - outputs workflow structure in LLM-friendly formats
 */
import type { TWorkflowAST, TNodeInstanceAST, TNodeTypeAST } from '../../ast/types.js';
export interface DescribeOptions {
    format?: 'json' | 'text' | 'mermaid' | 'paths';
    node?: string;
    workflowName?: string;
    compile?: boolean;
}
export interface NodeInfo {
    id: string;
    type: string;
    inputs: string[];
    outputs: string[];
}
export interface ConnectionInfo {
    from: string;
    to: string;
}
export interface DescribeOutput {
    name: string;
    description: string | null;
    nodes: NodeInfo[];
    connections: ConnectionInfo[];
    graph: string;
    validation: {
        valid: boolean;
        errors: string[];
        warnings: string[];
    };
}
export interface FocusedNodeOutput {
    focusNode: string;
    node: NodeInfo;
    incoming: ConnectionInfo[];
    outgoing: ConnectionInfo[];
    validation: {
        valid: boolean;
        errors: string[];
        warnings: string[];
    };
}
export declare function buildNodeInfo(instance: TNodeInstanceAST, nodeType: TNodeTypeAST | undefined): NodeInfo;
/**
 * Enumerate all Start-to-Exit paths via DFS.
 * Returns an array of path arrays (each path is string[] including Start and Exit).
 */
export declare function enumeratePaths(ast: TWorkflowAST): string[][];
export declare function buildGraph(ast: TWorkflowAST): string;
export declare function formatPaths(ast: TWorkflowAST): string;
export declare function generateMermaid(ast: TWorkflowAST): string;
/**
 * Pure function to describe a workflow - no I/O, returns data
 */
export declare function describeWorkflow(ast: TWorkflowAST, options?: {
    node?: string;
}): DescribeOutput | FocusedNodeOutput;
/**
 * Generate structured human-readable text output
 */
export declare function formatTextOutput(ast: TWorkflowAST, output: DescribeOutput | FocusedNodeOutput): string;
/**
 * Format the describe output based on format option
 */
export declare function formatDescribeOutput(ast: TWorkflowAST, output: DescribeOutput | FocusedNodeOutput, format: 'json' | 'text' | 'mermaid' | 'paths'): string;
export declare function describeCommand(input: string, options?: DescribeOptions): Promise<void>;
//# sourceMappingURL=describe.d.ts.map