import * as React from "react";
import type { Datum } from "./datumTypes";
export type AnnotationEmphasis = "primary" | "secondary";
/** A rendered annotation node paired with the source annotation it came
 *  from, so hierarchy treatment can read metadata after the per-type rule has
 *  produced the node. */
export interface AnnotationRenderPair {
    node: React.ReactNode;
    annotation: Datum;
}
/**
 * Reveal CSS for M3 progressive disclosure. Density-deferred notes are hidden
 * (opacity 0) until the chart they belong to is hovered or focused. The
 * selectors are scoped to each frame's stable wrapper class so a chart only
 * reveals its *own* deferred notes; `:focus-within` covers keyboard users who
 * focus the canvas (the canvas lives inside the wrapper). Style rules are
 * document-global regardless of where the `<style>` tag lands, so injecting it
 * inside the (pointer-events:none) overlay svg is fine. Identical across charts
 * — duplicate injections are harmless.
 */
export declare const ANNOTATION_DISCLOSURE_REVEAL_CSS: string;
/**
 * Apply annotation hierarchy — Rahman et al.'s "Hierarchy" consideration,
 * reusing the same `emphasis` token charts already accept (`"primary"` /
 * `"secondary"`). A `secondary` annotation dims, shrinks note text through
 * inherited SVG font-size, and yields z-order; a `primary` one paints at full
 * weight and on top.
 *
 * If no explicit emphasis is declared, annotations with
 * `provenance.confidence` get an inferred reading order: confidence
 * descending, then authored array order. The visual output uses that order as
 * a subtle opacity gradient, with higher-confidence notes painted later.
 *
 * Type-agnostic: it wraps whatever the per-type rule produced, so all
 * annotation types get hierarchy without each rule knowing about it.
 *
 * Zero-overhead and structure-preserving when no annotation declares an
 * explicit emphasis or provenance confidence: the original nodes are returned
 * untouched (same keys, same order), so existing charts render identically.
 * Opacity composes multiplicatively with lifecycle freshness opacity.
 */
export declare function applyAnnotationEmphasis(pairs: ReadonlyArray<AnnotationRenderPair>): React.ReactNode[];
