/**
 * @param {View} root
 * @param {DataFlow} [existingFlow] Add data flow
 *      graphs to an existing DataFlow object.
 * @param {(view: View) => boolean} [viewFilter]
 * @param {(view: View) => boolean} [viewInitializationPredicate]
 */
export function buildDataFlow(root: import("./view.js").default<import("../spec/view.js").ViewSpec>, existingFlow?: DataFlow, viewFilter?: (view: import("./view.js").default<import("../spec/view.js").ViewSpec>) => boolean, viewInitializationPredicate?: (view: import("./view.js").default<import("../spec/view.js").ViewSpec>) => boolean): DataFlow;
/**
 * Changes the ChromPos channelDefs into FieldDefs and returns
 * LinearizeGenomicCoordinate transform(s) that should be inserted into
 * the data flow.
 *
 * @param {import("./unitView.js").default} view
 */
export function linearizeLocusAccess(view: import("./unitView.js").default): {
    transforms: import("../data/flowNode.js").default[];
    rewrittenEncoding: Record<string, any>;
    /**
     * Should be called after the whole flow has been created in order to
     * not disrupt inheritance of encodings
     */
    rewrite: () => void;
};
/**
 * A helper function for creating linear data flows programmatically.
 *
 * @param {H} dataSource A data source or any other initial FlowNode.
 * @param  {...FlowNode} transforms
 * @template {FlowNode} H
 */
export function createChain<H extends import("../data/flowNode.js").default>(dataSource: H, ...transforms: import("../data/flowNode.js").default[]): {
    dataSource: H;
    collector: Collector;
    loadAndCollect: () => Promise<Iterable<import("../data/flowNode.js").Datum>>;
};
import DataFlow from "../data/dataFlow.js";
import Collector from "../data/collector.js";
//# sourceMappingURL=flowBuilder.d.ts.map