/**
 * Synchronize flow handles after data flow optimization.
 *
 * @param {import("../view/view.js").default} root
 * @param {Map<import("./sources/dataSource.js").default, import("./sources/dataSource.js").default>} canonicalBySource
 */
export function syncFlowHandles(root: import("../view/view.js").default, canonicalBySource: Map<import("./sources/dataSource.js").default, import("./sources/dataSource.js").default>): void;
/**
 * Initializes data flow and mark wiring for a subtree without rebuilding the
 * entire view hierarchy. This is the primary entry point for dynamic view
 * insertion: build the subtree fully, call this, then attach the subtree to
 * the live hierarchy.
 *
 * What it does:
 * - builds/extends the dataflow graph for the subtree
 * - runs flow optimization and syncs flow handles to canonical data sources
 * - discovers the nearest data sources for views in the subtree
 * - initializes dataflow nodes (initialize) for those sources
 * - initializes mark encoders for unit views
 * - queues graphics initialization (if a GL context exists)
 * - wires collector observers so marks update on data arrival
 *
 * How to use it:
 * - call after the subtree is fully constructed (post-order build)
 * - do not attach the subtree to the live hierarchy until after this call
 * - dispose the old subtree before replacing it to prevent observer leaks
 * - follow up with finalizeSubtreeGraphics(...) once graphics promises resolve
 * - reconfigure scales for the subtree when data loads complete
 *
 * Considerations:
 * - this does not trigger data loading; callers decide when to load
 * - data sources are derived by walking to the nearest ancestor source; nested
 *   sources should be treated as boundaries (do not walk past them)
 * - only call updateGraphicsData when graphics are initialized or a GL context
 *   is available; headless/test contexts must avoid WebGL usage
 * - loadViewSubtreeData emits a subtree-scoped "subtreeDataReady" broadcast
 *
 * TODO:
 * - promote in-flight load caching to a persistent load-state per source
 * - replace global dataLoaded usage with subtree-scoped readiness
 * - integrate with async font readiness for text marks
 * - unify observer wiring via a disposable registry across view types
 *
 * @param {import("../view/view.js").default} subtreeRoot
 * @param {import("./dataFlow.js").default} flow
 * @param {(view: import("../view/view.js").default) => boolean} [viewFilter]
 * @param {(view: import("../view/view.js").default) => boolean} [viewInitializationPredicate]
 * @returns {{
 *     dataFlow: import("./dataFlow.js").default,
 *     unitViews: UnitView[],
 *     dataSources: Set<import("./sources/dataSource.js").default>,
 *     graphicsPromises: Promise<import("../marks/mark.js").default>[]
 * }}
 */
export function initializeViewSubtree(subtreeRoot: import("../view/view.js").default, flow: import("./dataFlow.js").default, viewFilter?: (view: import("../view/view.js").default) => boolean, viewInitializationPredicate?: (view: import("../view/view.js").default) => boolean): {
    dataFlow: import("./dataFlow.js").default;
    unitViews: UnitView[];
    dataSources: Set<import("./sources/dataSource.js").default>;
    graphicsPromises: Promise<import("../marks/mark.js").default>[];
};
/**
 * Collects data sources needed to initialize all views in the subtree.
 * This includes sources that are overridden deeper in the hierarchy.
 *
 * @param {import("../view/view.js").default | import("../view/view.js").default[]} subtreeRoot
 * @param {(view: import("../view/view.js").default) => boolean} [viewFilter]
 * @returns {Set<import("./sources/dataSource.js").default>}
 */
export function collectViewSubtreeDataSources(subtreeRoot: import("../view/view.js").default | import("../view/view.js").default[], viewFilter?: (view: import("../view/view.js").default) => boolean): Set<import("./sources/dataSource.js").default>;
/**
 * Collects the nearest data sources under a subtree root.
 * These sources define data-ready boundaries for subtree-level loading.
 *
 * @param {import("../view/view.js").default} subtreeRoot
 * @param {(view: import("../view/view.js").default) => boolean} [viewFilter]
 * @returns {Set<import("./sources/dataSource.js").default>}
 */
export function collectNearestViewSubtreeDataSources(subtreeRoot: import("../view/view.js").default, viewFilter?: (view: import("../view/view.js").default) => boolean): Set<import("./sources/dataSource.js").default>;
/**
 * Loads the nearest data sources for a subtree.
 * Use the returned promise as a subtree-level "data ready" signal.
 *
 * @param {import("../view/view.js").default} subtreeRoot
 * @param {Set<import("./sources/dataSource.js").default>} [dataSources]
 * @param {(view: import("../view/view.js").default) => boolean} [viewFilter]
 * @param {{ queueReload?: boolean }} [loadOptions]
 * @returns {Promise<void[]>}
 */
export function loadViewSubtreeData(subtreeRoot: import("../view/view.js").default, dataSources?: Set<import("./sources/dataSource.js").default>, viewFilter?: (view: import("../view/view.js").default) => boolean, loadOptions?: {
    queueReload?: boolean;
}): Promise<void[]>;
import UnitView from "../view/unitView.js";
//# sourceMappingURL=flowInit.d.ts.map