import { scaleTime } from "d3-scale";
import { type ProcessSankeyOptions, type ProcessSankeyLayout, type ProcessSankeyIssue } from "./algorithm";
import type { ProcessSankeyLayoutConfig } from "./streamingLayout";
import type { Datum } from "../../shared/datumTypes";
export interface ProcessSankeyNormalizedNode {
    id: string;
    xExtent?: [number, number];
    __raw?: Datum;
}
export interface ProcessSankeyNormalizedEdge {
    id: string;
    source: string;
    target: string;
    value: number;
    startTime: number;
    endTime: number;
    /** Optional render-only hint: when this unit of mass actually
     *  entered the source node. Triggers a cutout in the source band. */
    systemInTime?: number;
    /** Optional render-only hint: when this unit of mass left the
     *  target node. Triggers a cutout in the target band. */
    systemOutTime?: number;
    __raw?: Datum;
}
export interface BuildScenesInput {
    nodes: ProcessSankeyNormalizedNode[];
    edges: ProcessSankeyNormalizedEdge[];
    domain: [number, number];
    plotW: number;
    plotH: number;
    ribbonLane: "source" | "target" | "both";
    edgeOpacity: number;
    /** Resolves a node's color by id+index (lets the caller plug in
     *  the same theme/colorScheme/colorBy resolution the HOC uses). */
    colorOf: (id: string, idx: number) => string;
    layoutOpts: Pick<ProcessSankeyOptions, "pairing" | "packing" | "laneOrder" | "lifetimeMode">;
}
export interface BuildScenesResult {
    layout: ProcessSankeyLayout | null;
    layoutConfig: ProcessSankeyLayoutConfig;
    issues: ProcessSankeyIssue[];
    /** Used downstream for tooltips (mass-history) and overlays. */
    xScale: ReturnType<typeof scaleTime>;
}
/**
 * Run the full ProcessSankey layout pipeline. Returns the algorithm
 * output, the bands/ribbons specs ready for `customNetworkLayout`, and
 * the validation issues (caller decides whether to render an error
 * gate or fall through). Pure: no DOM, no React, no rAF.
 */
export declare function buildProcessSankeyScenes(input: BuildScenesInput): BuildScenesResult;
