/**
 * The `--apx-*` family root tokens.
 *
 * Every product in the family already did CSS-variable theming, and none of
 * them agreed: Tree reads `--apex-tree-*`, Sankey `--apex-sankey-*`, Gantt
 * `--apex-gantt-*`, the charts `--apx-*`. All of those are per-role and
 * per-product, so there was no single place to say "this is the brand" once
 * and have the whole family follow.
 *
 * These five roles are that place. They are deliberately few and deliberately
 * generic, because a token every product can honour has to mean something in a
 * tree, a flow diagram, a Gantt bar and a chart series alike:
 *
 * - `--apx-accent`     the one colour that means "this is interactive/selected"
 * - `--apx-fore`       text and anything that has to stay legible on the surface
 * - `--apx-grid`       hairlines: borders, gridlines, connectors
 * - `--apx-surface`    the plane content sits on
 * - `--apx-series-N`   an ordered categorical palette, 1-based
 *
 * Custom properties inherit, so declaring them on `:root` (or any ancestor)
 * reaches every chart on the page. A product reads them through
 * {@link resolveTokenLayer}, which places them BELOW anything the caller set
 * explicitly and ABOVE the built-in defaults, so adopting the contract can
 * never change a chart that was already configured.
 *
 * SSR-safe: with no browser, {@link readTokens} returns an empty set and the
 * built-in defaults render.
 */
/** The four scalar roles, mapped to their custom-property names. */
export declare const APX_TOKEN_VARS: {
    readonly accent: "--apx-accent";
    readonly fore: "--apx-fore";
    readonly grid: "--apx-grid";
    readonly surface: "--apx-surface";
};
/** Prefix of the ordered categorical palette: `--apx-series-1`, `--apx-series-2`, … */
export declare const APX_SERIES_VAR_PREFIX = "--apx-series-";
/** Resolved family tokens. Every field is absent rather than empty when unset. */
export interface ApxTokens {
    /** `--apx-accent`: the interactive/selected colour. */
    accent?: string;
    /** `--apx-fore`: foreground text and legible marks. */
    fore?: string;
    /** `--apx-grid`: hairlines, borders and gridlines. */
    grid?: string;
    /** `--apx-surface`: the plane content sits on. */
    surface?: string;
    /** `--apx-series-N`, in order from 1. Truncated at the first gap. */
    series?: string[];
}
/**
 * Read the `--apx-*` tokens visible at `element`.
 *
 * A one-shot read through `getComputedStyle`, so tokens declared anywhere up
 * the tree (including `:root`, and including inside a `prefers-color-scheme`
 * block) resolve. Re-read when the theme changes: {@link OSThemeWatcher} exists
 * to tell a product when that is.
 *
 * @param element Any element inside the chart, typically the container.
 */
export declare function readTokens(element: Element | null | undefined): ApxTokens;
/**
 * Resolve the token layer of the precedence chain for one chart.
 *
 * The full chain a product applies is:
 *
 * 1. an explicit per-product CSS variable (`--apex-tree-node-bg`) — the most
 *    specific instruction anyone can give, and the shipped behaviour
 * 2. explicit caller configuration
 * 3. **the CSS `--apx-*` tokens** ← this function, first half
 * 4. **a registered named theme's `tokens`** ← this function, second half
 * 5. the built-in defaults
 *
 * Layers 3 and 4 collapse into one resolved {@link ApxTokens} here: a CSS token
 * wins over the same role from a named theme, because the cascade is the more
 * local statement.
 *
 * @param element   Any element inside the chart, typically the container.
 * @param themeName Name the caller passed as its `theme` option, if any.
 */
export declare function resolveTokenLayer(element: Element | null | undefined, themeName?: string): ApxTokens;
//# sourceMappingURL=tokens.d.ts.map