import type { TNodeTypeAST, TNodeInstanceAST, TPortDefinition, TWorkflowAST } from "./ast/index.js";
export interface GenerateAnnotationsOptions {
    includeComments?: boolean;
    includeMetadata?: boolean;
    indentSize?: number;
    skipParamReturns?: boolean;
}
export declare class AnnotationGenerator {
    generate(workflow: TWorkflowAST, options?: GenerateAnnotationsOptions): string;
    private generateNodeTypeAnnotation;
    private generateJSDocPortTag;
    private generateTPortDefinition;
    private generateFunctionSignature;
    private generateWorkflowAnnotation;
    private generateWorkflowFunctionSignature;
    private assignPortOrders;
    private mapDataTypeToTS;
}
/**
 * Generate JSDoc port tag (e.g., @input name - Description)
 * Exported for reuse in generate-in-place.ts to maintain DRY principle
 *
 * New format (types derived from signature):
 * - @input name - Description
 * - @output name - Description
 * - @step name - Description (for explicit STEP/control-flow ports)
 *
 * Reserved STEP ports (execute, onSuccess, onFailure) use @input/@output.
 * Custom STEP ports use @step.
 */
export declare function generateJSDocPortTag(rawName: string, port: TPortDefinition, direction: 'input' | 'output', _implicitOrder?: number): string;
/**
 * Simply return ports as-is to preserve exact order from the AST
 * Don't compute or add any new metadata - only preserve what's already there
 * This ensures perfect round-trip fidelity
 * Exported for reuse in generate-in-place.ts to maintain DRY principle
 */
export declare function assignPortOrders(ports: [string, TPortDefinition][], _direction: 'input' | 'output'): [string, TPortDefinition][];
/**
 * Generate @node tag for a single instance
 * Exported for reuse in generate-in-place.ts to maintain DRY principle
 */
export declare function generateNodeInstanceTag(instance: TNodeInstanceAST): string;
/**
 * Generate a TypeScript function signature from a node type definition.
 * Handles three modes: stub (declare function), expression (pure function), normal (execute/onSuccess/onFailure).
 */
export declare function generateFunctionSignature(nodeType: TNodeTypeAST): string[];
export declare const annotationGenerator: AnnotationGenerator;
//# sourceMappingURL=annotation-generator.d.ts.map