/**
 * @packageDocumentation
 *
 * # Flow Weaver Library
 *
 * A visual dataflow programming system for TypeScript. Workflows are defined via
 * JSDoc annotations in standard TypeScript files and can be parsed, validated,
 * and compiled to executable code.
 *
 * ## Core Concepts
 *
 * - **Workflow** (`TWorkflowAST`) - A graph of connected nodes with start/exit ports
 * - **NodeType** (`TNodeTypeAST`) - Template defining inputs, outputs, and behavior
 * - **NodeInstance** (`TNodeInstanceAST`) - A usage of a node type in a workflow
 * - **Port** (`TPortDefinition`) - Entry/exit point on a node (data or control flow)
 * - **Connection** (`TConnectionAST`) - Links ports between nodes
 *
 * ## File Format
 *
 * Any `.ts`, `.tsx`, `.js`, or `.jsx` file can contain workflows.
 *
 * ```typescript
 * // Define a node type
 * /**
 *  * @flowWeaver nodeType
 *  * @input a - First number
 *  * @input b - Second number
 *  * @output result - Sum
 *  *\/
 * function add(execute: boolean, a: number, b: number): { onSuccess: boolean; result: number } { ... }
 *
 * // Define a workflow
 * /**
 *  * @flowWeaver workflow
 *  * @node adder1 add
 *  * @connect Start.execute -> adder1.execute
 *  * @connect adder1.onSuccess -> Exit.onSuccess
 *  *\/
 * export function myWorkflow(execute: boolean, params: {...}): {...} { ... }
 * ```
 *
 * ## Main APIs
 *
 * - {@link parseWorkflow} - Parse a file to AST
 * - {@link validateWorkflow} - Validate workflow structure
 * - {@link generateCode} - Generate executable code from AST
 * - {@link compileWorkflow} - Parse + validate + generate in one step
 *
 * ## JSDoc Port Sync (Browser-compatible)
 *
 * For IDE integration, use the browser-compatible sync functions:
 * - {@link parsePortsFromFunctionText} - Extract ports from JSDoc
 * - {@link updatePortsInFunctionText} - Update ports in function text
 * - {@link formatPortsInFunctionText} - Format ports consistently
 *
 * @module @synergenius/flow-weaver
 */
// Public API
export * from './api/index.js';
// Parser (for advanced use - clearing import cache)
export { parser, resolveNpmNodeTypes } from './parser.js';
// Extension registries
export { TagHandlerRegistry } from './parser/tag-registry.js';
export { ValidationRuleRegistry } from './validation/rule-registry.js';
// AST Builders (for programmatic AST construction)
export { WorkflowBuilder, NodeTypeBuilder, NodeInstanceBuilder, ConnectionBuilder, } from './ast/builder.js';
export { portRef, port, workflow, nodeType, nodeInstance } from './ast/builder.js';
// Runtime
export { GeneratedExecutionContext } from './runtime/ExecutionContext.js';
// Generated Branding (configurable output branding)
export { configureGeneratedBranding, getGeneratedBranding } from './generated-branding.js';
// Type Mappings & Constants
export * from './type-mappings.js';
export * from './constants.js';
// Validation
export { validator, WorkflowValidator } from './validator.js';
// Friendly Errors (beginner-friendly validation messages)
export { getFriendlyError, formatFriendlyDiagnostics } from './friendly-errors.js';
// Code Generation
export { generator, WorkflowGenerator } from './generator.js';
export { AnnotationGenerator } from './annotation-generator.js';
// Generator Utilities (for advanced use)
export * as GeneratorUtils from './generator.js';
// JSDoc Port Sync (browser-compatible parsing/updating)
export { parsePortsFromFunctionText, updatePortsInFunctionText, formatPortsInFunctionText, syncCodeRenames, renamePortInCode, parseReturnTypeFields, parseFunctionSignature, parseReturnFields, } from './jsdoc-port-sync/index.js';
// Templates (for workflow/node creation)
export { workflowTemplates, nodeTemplates, getWorkflowTemplate, getNodeTemplate, toCamelCase, toPascalCase, } from './cli/templates/index.js';
// Diff (semantic comparison)
export { WorkflowDiffer } from './diff/WorkflowDiffer.js';
export { formatDiff } from './diff/formatDiff.js';
export { IMPACT_DESCRIPTIONS, IMPACT_COLORS, getImpactReasons, hasBreakingChanges, getNodeTypeChanges, getCriticalConnections, } from './diff/impact.js';
//# sourceMappingURL=index.js.map