import { sankeyCenter, sankeyJustify, sankeyLeft, sankeyRight } from 'd3-sankey'; import type { SankeyLink as D3Link, SankeyNode as D3Node } from 'd3-sankey'; import type { SankeyData, SankeyNodeAlign, SankeyOrientation } from '../core/types'; interface NodeExtra { node_idx: number; id: string | number; label?: string; color?: string; } interface LinkExtra { link_idx: number; color?: string; label?: string; } export type PositionedNode = D3Node & { node_idx: number; id: string | number; x0: number; x1: number; y0: number; y1: number; value: number; depth: number; }; export type PositionedLink = D3Link & { link_idx: number; width: number; source: PositionedNode; target: PositionedNode; path: string; mid: { x: number; y: number; }; }; export interface SankeyLayoutOptions { width: number; height: number; node_width?: number; node_padding?: number; node_align?: SankeyNodeAlign; orientation?: SankeyOrientation; iterations?: number; } export interface SankeyLayoutResult { nodes: PositionedNode[]; links: PositionedLink[]; } export declare function sankey_from_links(source: readonly number[], target: readonly number[], value: readonly number[], labels?: readonly string[]): SankeyData; export declare function compute_sankey_layout>(data: SankeyData, opts: SankeyLayoutOptions): SankeyLayoutResult; export declare const sankey_align_fn: (align: SankeyNodeAlign) => typeof sankeyLeft | typeof sankeyRight | typeof sankeyCenter | typeof sankeyJustify; export {};