import type { NetworkCustomLayout } from "../stream/networkCustomLayout";
import type { Datum } from "../charts/shared/datumTypes";
export interface DagreConfig {
    /** Default node width when nodes don't carry a `width` field. @default 100 */
    nodeWidth?: number;
    /** Default node height when nodes don't carry a `height` field. @default 36 */
    nodeHeight?: number;
    /** Edge style — straight polyline through waypoints, or smoothed bezier. @default "polyline" */
    edgeStyle?: "polyline" | "smooth";
    /** Render text labels at node centers. @default true */
    showLabels?: boolean;
    /** Field name (or function) yielding the label string per node. @default "label" */
    labelAccessor?: string | ((d: Datum) => string);
    /** Per-node fill style override. */
    nodeFill?: string;
    /** Stroke for edges. */
    edgeStroke?: string;
}
/**
 * Dagre layout recipe — renders a pre-positioned directed acyclic graph
 * (e.g. output of `dagre`).
 *
 * The user runs `dagre.layout(g)` themselves and flattens the result into
 * `nodes` (each with `x`, `y`, `width`, `height`, `label`) and `edges`
 * (each with `source`, `target`, optional `points` waypoint array). The
 * recipe handles scene emission only.
 *
 * @example
 * ```ts
 * import dagre from "dagre"
 * import { dagreLayout } from "semiotic/recipes"
 *
 * const g = new dagre.graphlib.Graph()
 * g.setGraph({ rankdir: "TB" })
 * g.setDefaultEdgeLabel(() => ({}))
 * for (const n of myNodes) g.setNode(n.id, { width: 120, height: 40, label: n.label })
 * for (const e of myEdges) g.setEdge(e.source, e.target)
 * dagre.layout(g)
 *
 * const nodes = g.nodes().map((id) => {
 *   const n = g.node(id)
 *   return { id, x: n.x, y: n.y, width: n.width, height: n.height, label: n.label }
 * })
 * const edges = g.edges().map((e) => {
 *   const ed = g.edge(e)
 *   return { source: e.v, target: e.w, points: ed.points }
 * })
 *
 * <StreamNetworkFrame
 *   chartType="force"
 *   nodes={nodes} edges={edges}
 *   customNetworkLayout={dagreLayout}
 * />
 * ```
 */
export declare const dagreLayout: NetworkCustomLayout<DagreConfig>;
