import type { Datum } from "../charts/shared/datumTypes";
/**
 * buildNavigationTree — turn a chart config into a structured, labeled
 * navigation tree (chart → axes/series → data points), following the Olli /
 * Data Navigator model: a navigable *structure*, uncoupled from how the chart
 * is rendered (canvas, SVG, image). A screen-reader user descends the tree —
 * "Series sales" → "point 3 of 9: March, 6,800" — with spoken structural
 * context at each level, instead of wading through a flat point list.
 *
 * Pure and SSR-safe. Composes `describeChart()` for node labels so the tree and
 * the prose description speak the same language. Rendered by `AccessibleNavTree`
 * and surfaced as the opt-in ChartContainer `navigable` affordance.
 */
export type NavTreeRole = "chart" | "axis" | "series" | "datum" | "annotation";
export interface NavTreeNode {
    /** Stable id within the tree. */
    id: string;
    role: NavTreeRole;
    /** What assistive tech announces for this node. */
    label: string;
    /** 1-based depth (maps to aria-level). */
    level: number;
    /** Measure value, for datum leaves. */
    value?: number;
    /** Raw datum, for datum leaves. */
    datum?: Datum | null;
    children?: NavTreeNode[];
}
export interface BuildNavigationTreeOptions {
    /** Cap leaves per branch (keeps a 50k-row chart from building a giant tree). Default 200. */
    maxLeaves?: number;
    locale?: string;
}
/**
 * Build a structured navigation tree for a chart config. Full trees for XY,
 * bar, part-to-whole, and distribution families; for everything else (network,
 * hierarchy, geo, single value) it returns a root-only node with an L1 label
 * rather than inventing a structure.
 */
export declare function buildNavigationTree(component: string, props: Datum, options?: BuildNavigationTreeOptions): NavTreeNode;
/** Flatten a tree to its visible nodes given a set of expanded node ids, in DFS
 *  order. Used by the renderer for roving-tabindex keyboard navigation. */
export declare function flattenVisible(root: NavTreeNode, expanded: Set<string>): NavTreeNode[];
/** Total descendant + self count — handy for tests and summaries. */
export declare function countNodes(root: NavTreeNode): number;
