/**
 * Compute the `RibbonGeometryInput` shape for a ProcessSankey ribbon
 * from its source/target attachment data. Both the HOC (CSR) and the
 * pure scene builder (SSR) call this so the coords feeding into the
 * shared `buildRibbonGeometry` helper match between the two paths.
 *
 * Replaces `algorithm.js`'s `buildRibbonPath` — the path-D formula
 * itself moved into `buildRibbonGeometry` so SankeyDiagram and
 * ProcessSankey emit identical M-C-L-C-Z shapes.
 */
import type { RibbonGeometryInput } from "../../../geometry/ribbonGeometry";
type Side = "top" | "bot";
type Kind = "in" | "out";
interface AttachmentLike {
    side: Side;
    time: number;
    sideMassBefore: number;
    sideMassAfter: number;
    kind: Kind;
    value: number;
}
type RibbonLane = "source" | "target" | "both";
type XScale = (t: number) => number;
/**
 * Build the geometry inputs for a single ProcessSankey ribbon. The
 * source attachment is assumed to be `kind: "out"` (the value leaves
 * the source on its outgoing side); the target attachment is
 * `kind: "in"`. attachmentYRange's formula is inlined here to keep
 * this module pure TS (the `algorithm.js` version is JS-only).
 */
export declare function computeProcessSankeyRibbonInputs(srcAtt: AttachmentLike, srcCenterline: number, tgtAtt: AttachmentLike, tgtCenterline: number, valueScale: number, xScale: XScale, lane: RibbonLane, domain: [number, number] | null): RibbonGeometryInput;
export {};
