import { default as dagre } from '@dagrejs/dagre';

/**
 * Composable to run the layout algorithm on the graph.
 * It uses the `dagre` library to calculate the layout of the nodes and edges.
 */
export declare function useLayout(): {
    graph: import('vue').Ref<{
        graph: () => dagre.GraphLabel;
        isDirected: () => boolean;
        isMultigraph: () => boolean;
        setGraph: (label: dagre.GraphLabel) => dagre.graphlib.Graph<{}>;
        edge: {
            (edgeObj: dagre.Edge): dagre.GraphEdge;
            (outNodeName: string, inNodeName: string, name?: string): dagre.GraphEdge;
        };
        edgeCount: () => number;
        edges: () => dagre.Edge[];
        hasEdge: {
            (edgeObj: dagre.Edge): boolean;
            (outNodeName: string, inNodeName: string, name?: string): boolean;
        };
        inEdges: (inNodeName: string, outNodeName?: string) => dagre.Edge[] | undefined;
        outEdges: (outNodeName: string, inNodeName?: string) => dagre.Edge[] | undefined;
        removeEdge: (outNodeName: string, inNodeName: string, name?: string) => dagre.graphlib.Graph<{}>;
        setDefaultEdgeLabel: (callback: string | ((v: string, w: string, name?: string) => string | dagre.Label)) => dagre.graphlib.Graph<{}>;
        setEdge: {
            (params: dagre.Edge, value?: string | {
                [key: string]: any;
            }): dagre.graphlib.Graph<{}>;
            (sourceId: string, targetId: string, value?: string | dagre.Label, name?: string): dagre.graphlib.Graph<{}>;
        };
        children: (parentName: string) => string | undefined;
        hasNode: (name: string) => boolean;
        neighbors: (name: string) => {
            x: number;
            y: number;
            width: number;
            height: number;
            class?: string | undefined;
            label?: string | undefined;
            padding?: number | undefined;
            paddingX?: number | undefined;
            paddingY?: number | undefined;
            rank?: number | undefined;
            rx?: number | undefined;
            ry?: number | undefined;
            shape?: string | undefined;
        }[] | undefined;
        node: (id: string | dagre.Label) => {
            x: number;
            y: number;
            width: number;
            height: number;
            class?: string | undefined;
            label?: string | undefined;
            padding?: number | undefined;
            paddingX?: number | undefined;
            paddingY?: number | undefined;
            rank?: number | undefined;
            rx?: number | undefined;
            ry?: number | undefined;
            shape?: string | undefined;
        };
        nodeCount: () => number;
        nodes: () => string[];
        parent: (childName: string) => string | undefined;
        predecessors: (name: string) => {
            x: number;
            y: number;
            width: number;
            height: number;
            class?: string | undefined;
            label?: string | undefined;
            padding?: number | undefined;
            paddingX?: number | undefined;
            paddingY?: number | undefined;
            rank?: number | undefined;
            rx?: number | undefined;
            ry?: number | undefined;
            shape?: string | undefined;
        }[] | undefined;
        removeNode: (name: string) => dagre.graphlib.Graph<{}>;
        filterNodes: (callback: (nodeId: string) => boolean) => dagre.graphlib.Graph<{}>;
        setDefaultNodeLabel: (callback: string | ((nodeId: string) => string | dagre.Label)) => dagre.graphlib.Graph<{}>;
        setNode: (name: string, label: string | dagre.Label) => dagre.graphlib.Graph<{}>;
        setParent: (childName: string, parentName: string) => void;
        sinks: () => {
            x: number;
            y: number;
            width: number;
            height: number;
            class?: string | undefined;
            label?: string | undefined;
            padding?: number | undefined;
            paddingX?: number | undefined;
            paddingY?: number | undefined;
            rank?: number | undefined;
            rx?: number | undefined;
            ry?: number | undefined;
            shape?: string | undefined;
        }[];
        sources: () => {
            x: number;
            y: number;
            width: number;
            height: number;
            class?: string | undefined;
            label?: string | undefined;
            padding?: number | undefined;
            paddingX?: number | undefined;
            paddingY?: number | undefined;
            rank?: number | undefined;
            rx?: number | undefined;
            ry?: number | undefined;
            shape?: string | undefined;
        }[];
        successors: (name: string) => {
            x: number;
            y: number;
            width: number;
            height: number;
            class?: string | undefined;
            label?: string | undefined;
            padding?: number | undefined;
            paddingX?: number | undefined;
            paddingY?: number | undefined;
            rank?: number | undefined;
            rx?: number | undefined;
            ry?: number | undefined;
            shape?: string | undefined;
        }[] | undefined;
    }, dagre.graphlib.Graph<{}> | {
        graph: () => dagre.GraphLabel;
        isDirected: () => boolean;
        isMultigraph: () => boolean;
        setGraph: (label: dagre.GraphLabel) => dagre.graphlib.Graph<{}>;
        edge: {
            (edgeObj: dagre.Edge): dagre.GraphEdge;
            (outNodeName: string, inNodeName: string, name?: string): dagre.GraphEdge;
        };
        edgeCount: () => number;
        edges: () => dagre.Edge[];
        hasEdge: {
            (edgeObj: dagre.Edge): boolean;
            (outNodeName: string, inNodeName: string, name?: string): boolean;
        };
        inEdges: (inNodeName: string, outNodeName?: string) => dagre.Edge[] | undefined;
        outEdges: (outNodeName: string, inNodeName?: string) => dagre.Edge[] | undefined;
        removeEdge: (outNodeName: string, inNodeName: string, name?: string) => dagre.graphlib.Graph<{}>;
        setDefaultEdgeLabel: (callback: string | ((v: string, w: string, name?: string) => string | dagre.Label)) => dagre.graphlib.Graph<{}>;
        setEdge: {
            (params: dagre.Edge, value?: string | {
                [key: string]: any;
            }): dagre.graphlib.Graph<{}>;
            (sourceId: string, targetId: string, value?: string | dagre.Label, name?: string): dagre.graphlib.Graph<{}>;
        };
        children: (parentName: string) => string | undefined;
        hasNode: (name: string) => boolean;
        neighbors: (name: string) => {
            x: number;
            y: number;
            width: number;
            height: number;
            class?: string | undefined;
            label?: string | undefined;
            padding?: number | undefined;
            paddingX?: number | undefined;
            paddingY?: number | undefined;
            rank?: number | undefined;
            rx?: number | undefined;
            ry?: number | undefined;
            shape?: string | undefined;
        }[] | undefined;
        node: (id: string | dagre.Label) => {
            x: number;
            y: number;
            width: number;
            height: number;
            class?: string | undefined;
            label?: string | undefined;
            padding?: number | undefined;
            paddingX?: number | undefined;
            paddingY?: number | undefined;
            rank?: number | undefined;
            rx?: number | undefined;
            ry?: number | undefined;
            shape?: string | undefined;
        };
        nodeCount: () => number;
        nodes: () => string[];
        parent: (childName: string) => string | undefined;
        predecessors: (name: string) => {
            x: number;
            y: number;
            width: number;
            height: number;
            class?: string | undefined;
            label?: string | undefined;
            padding?: number | undefined;
            paddingX?: number | undefined;
            paddingY?: number | undefined;
            rank?: number | undefined;
            rx?: number | undefined;
            ry?: number | undefined;
            shape?: string | undefined;
        }[] | undefined;
        removeNode: (name: string) => dagre.graphlib.Graph<{}>;
        filterNodes: (callback: (nodeId: string) => boolean) => dagre.graphlib.Graph<{}>;
        setDefaultNodeLabel: (callback: string | ((nodeId: string) => string | dagre.Label)) => dagre.graphlib.Graph<{}>;
        setNode: (name: string, label: string | dagre.Label) => dagre.graphlib.Graph<{}>;
        setParent: (childName: string, parentName: string) => void;
        sinks: () => {
            x: number;
            y: number;
            width: number;
            height: number;
            class?: string | undefined;
            label?: string | undefined;
            padding?: number | undefined;
            paddingX?: number | undefined;
            paddingY?: number | undefined;
            rank?: number | undefined;
            rx?: number | undefined;
            ry?: number | undefined;
            shape?: string | undefined;
        }[];
        sources: () => {
            x: number;
            y: number;
            width: number;
            height: number;
            class?: string | undefined;
            label?: string | undefined;
            padding?: number | undefined;
            paddingX?: number | undefined;
            paddingY?: number | undefined;
            rank?: number | undefined;
            rx?: number | undefined;
            ry?: number | undefined;
            shape?: string | undefined;
        }[];
        successors: (name: string) => {
            x: number;
            y: number;
            width: number;
            height: number;
            class?: string | undefined;
            label?: string | undefined;
            padding?: number | undefined;
            paddingX?: number | undefined;
            paddingY?: number | undefined;
            rank?: number | undefined;
            rx?: number | undefined;
            ry?: number | undefined;
            shape?: string | undefined;
        }[] | undefined;
    }>;
    layout: (nodes: any, edges: any, direction: any) => any;
    previousDirection: import('vue').Ref<string, string>;
};
