import type { ElkGraph, LayoutInput } from "./types.js";
/**
 * Default ELK layout options tuned for top-to-bottom workflow visualization.
 *
 * Key choices:
 * - NETWORK_SIMPLEX node placement minimizes total edge length
 * - LAYER_SWEEP crossing minimization with greedy switching reduces edge crossings
 * - ORTHOGONAL routing produces clean right-angle edges
 * - considerModelOrder preserves YAML definition order when unconstrained
 * - FIXED_SIDE port constraints keep inputs on top, outputs on bottom
 */
export declare const ELK_WORKFLOW_DEFAULTS: Readonly<Record<string, string>>;
/**
 * Transforms a {@link WorkflowGraphModel} into an ELK-compatible JSON graph.
 *
 * The preprocessor:
 * 1. Assigns ports to each node based on task kind (via port-assignment module)
 * 2. Sizes nodes using the provided dimension function (or constants)
 * 3. Maps edges to port-to-port connections for ELK's port-aware routing
 * 4. Applies ELK layout options (configurable via overrides)
 *
 * Compound nodes (for_each, try_catch as containers) are NOT supported in this
 * implementation — the graph model is flat (AD-T03-003). All nodes are peers.
 *
 * @param input - The layout input containing graph, scope, and options.
 * @param layoutOptionsOverrides - Optional ELK option overrides.
 * @returns An ELK JSON graph ready for `elk.layout()`.
 */
export declare function preprocessForElk(input: LayoutInput, layoutOptionsOverrides?: Readonly<Record<string, string>>): ElkGraph;
//# sourceMappingURL=workflow-preprocessor.d.ts.map