export type { LayoutDirection, LayoutEngine, LayoutOptions, } from "../editor";
/**
 * Minimal Dagre surface we depend on. The consumer passes their imported
 * `dagre` module (default or namespace). Anything our adapter touches
 * must be on this shape.
 */
export interface DagreLike {
    graphlib: {
        Graph: new (opts?: {
            multigraph?: boolean;
            compound?: boolean;
        }) => DagreGraph;
    };
    layout(g: DagreGraph): void;
}
export interface DagreGraph {
    setGraph(opts: Record<string, unknown>): DagreGraph;
    setDefaultEdgeLabel(fn: () => unknown): DagreGraph;
    setNode(id: string, node: {
        width: number;
        height: number;
        [k: string]: unknown;
    }): DagreGraph;
    setEdge(source: string, target: string, label?: Record<string, unknown>): DagreGraph;
    node(id: string): {
        x: number;
        y: number;
        width: number;
        height: number;
    } | undefined;
    nodes(): string[];
}
/**
 * Minimal elkjs surface. The consumer passes either an `ELK` class or an
 * already-constructed instance — we accept both.
 */
export interface ElkLike {
    layout(graph: ElkGraph, options?: Record<string, unknown>): Promise<ElkGraph>;
}
export interface ElkGraph {
    id: string;
    layoutOptions?: Record<string, string>;
    width?: number;
    height?: number;
    x?: number;
    y?: number;
    children?: ElkGraph[];
    edges?: ElkEdge[];
}
export interface ElkEdge {
    id: string;
    sources: string[];
    targets: string[];
}
//# sourceMappingURL=types.d.ts.map