import { type Snippet } from "svelte";
import { SvelteMap } from "svelte/reactivity";
import { type Vector2 } from "./diagram-lib.js";
export interface DiagramNodeDef {
    id: string;
    x: number;
    y: number;
    width?: number;
    height?: number;
    clientOnly?: boolean;
}
type PathGenParams = {
    pathGen?: "bezier";
    curvature?: number;
    offset?: Vector2;
} | {
    pathGen: "smoothstep";
    borderRadius?: number;
    center?: Vector2;
};
export type DiagramEdgeParams = {
    snippet?: Snippet<[edge: DiagramEdgeDef, path: string, extra: any]>;
    snippetExtraArg?: any;
    sourceAnchor?: Vector2;
    targetAnchor?: Vector2;
    class?: string;
    style?: string;
    zIndex?: number;
} & PathGenParams;
export type DiagramEdgeDef = {
    source: string;
    target: string;
} & DiagramEdgeParams;
export type DiagramProps = {
    nodes: SvelteMap<string, DiagramNodeDef>;
    edges: SvelteMap<string, DiagramEdgeDef>;
    children: Snippet;
    scaleToFit?: boolean;
};
declare const Diagram: import("svelte").Component<DiagramProps, {
    generateCurvePath: (x1: number, y1: number, x2: number, y2: number, edge: DiagramEdgeDef) => string;
}, "">;
type Diagram = ReturnType<typeof Diagram>;
export default Diagram;
