import type { DefaultEdgeOptions, Node, Edge, EdgeLayouted, InternalNode } from '../types';
import { ConnectionMode, type NodeLookup, type OnError, type Transform, type ZIndexMode } from '@xyflow/system';
export declare function getVisibleNodes<NodeType extends Node = Node>(nodeLookup: NodeLookup<InternalNode<NodeType>>, transform: Transform, width: number, height: number): Map<string, InternalNode<NodeType>>;
export interface EdgeLayoutBaseOptions<NodeType extends Node = Node, EdgeType extends Edge = Edge> {
    edges: EdgeType[];
    defaultEdgeOptions: DefaultEdgeOptions;
    elevateEdgesOnSelect: boolean;
    previousEdges: Map<string, EdgeLayouted<EdgeType>>;
    nodeLookup: NodeLookup<InternalNode<NodeType>>;
    connectionMode: ConnectionMode;
    onerror: OnError;
}
export interface EdgeLayoutAllOptions<NodeType extends Node = Node, EdgeType extends Edge = Edge> extends EdgeLayoutBaseOptions<NodeType, EdgeType> {
    onlyRenderVisible: never;
    visibleNodes: never;
    transform: never;
    width: never;
    height: never;
    zIndexMode: never;
}
export interface EdgeLayoutOnlyVisibleOptions<NodeType extends Node = Node, EdgeType extends Edge = Edge> extends EdgeLayoutBaseOptions<NodeType, EdgeType> {
    visibleNodes: Map<string, InternalNode>;
    transform: Transform;
    width: number;
    height: number;
    onlyRenderVisible: true;
    zIndexMode: ZIndexMode;
}
export type EdgeLayoutOptions<NodeType extends Node = Node, EdgeType extends Edge = Edge> = EdgeLayoutAllOptions<NodeType, EdgeType> | EdgeLayoutOnlyVisibleOptions<NodeType, EdgeType>;
export declare function getLayoutedEdges<NodeType extends Node = Node, EdgeType extends Edge = Edge>(options: EdgeLayoutOptions<NodeType, EdgeType>): Map<string, EdgeLayouted<EdgeType>>;
