import type { ReactNode } from "react";
import type { Datum } from "../shared/datumTypes";
import type { HoverData } from "../../realtime/types";
import type { ChartAccessor } from "../shared/types";
interface DefaultRealtimeTooltipOptions<TDatum extends Datum = Datum> {
    timeAccessor?: ChartAccessor<TDatum, number>;
    valueAccessor?: ChartAccessor<TDatum, number>;
    /**
     * Field-name aliases shown in the tooltip ("x" / "y" by default).
     * Some Realtime HOCs may want to show "time" / "value" or
     * "category" / "count" — pass overrides here. The strings are
     * cosmetic; data lookup still uses `timeAccessor`/`valueAccessor`.
     */
    xLabel?: string;
    yLabel?: string;
}
/**
 * Build a default tooltip renderer for a Realtime HOC. Returns a
 * function compatible with `tooltipContent: (d: HoverData) => ReactNode`.
 */
export declare function buildDefaultRealtimeTooltip<TDatum extends Datum = Datum>(options?: DefaultRealtimeTooltipOptions<TDatum>): (d: HoverData) => ReactNode;
/**
 * Waterfall-specific default tooltip.
 *
 * The waterfall scene builder enriches each rect's datum with
 * `baseline` (cumulative at the start of the bar), `cumEnd`
 * (cumulative at the top of the bar), and `delta` (signed per-tick
 * change). The default `x:`/`y:` shape is misleading for waterfall
 * because the bar's vertical projection encodes the *cumulative*
 * total — hovering a bar high on the chart and seeing the per-tick
 * delta felt disconnected from what the bar visually showed.
 *
 * This tooltip surfaces all three relevant quantities:
 *   x:  <time>        (the configured timeAccessor)
 *   Δ:  +5.2 / -3.1   (the per-tick delta, sign-prefixed)
 *   total: 87.4       (the cumulative running sum at the bar top)
 *
 * Falls back to the canonical x/y shape if the enriched fields are
 * absent (e.g. a static-data render that bypassed the waterfall
 * scene builder).
 */
export declare function buildWaterfallTooltip<TDatum extends Datum = Datum>(options?: DefaultRealtimeTooltipOptions<TDatum>): (d: HoverData) => ReactNode;
/**
 * Histogram-specific default tooltip.
 *
 * The barScene's histogram path enriches each rect's datum with
 * `{ binStart, binEnd, total, category?, categoryValue? }`. The generic
 * `x: <time>, y: <value>` shape produces empty strings on those bins
 * because neither `time` nor `value` exists on the aggregated payload.
 * This builder surfaces the fields that actually carry meaning for a
 * histogram bin:
 *
 *   range:    <binStart>–<binEnd>
 *   count:    <total>
 *   category: <category>        (only when categoryAccessor is set)
 *
 * Falls back to the canonical x/y shape if a bin's enriched fields are
 * absent — guards against a non-streaming render path or a static frame
 * that bypasses the bin scene.
 */
export declare function buildHistogramTooltip<TDatum extends Datum = Datum>(options?: DefaultRealtimeTooltipOptions<TDatum>): (d: HoverData) => ReactNode;
/**
 * Heatmap-specific default tooltip.
 *
 * The streaming heatmap aggregates raw points into 2D bins; each cell's
 * datum is `{ xi, yi, value, count, sum, xCenter, yCenter, agg }`. The
 * generic `x: <time>, y: <value>` shape is meaningless because the cell
 * doesn't carry the user's original fields — it carries bin indices and
 * aggregated counts.
 *
 * This tooltip surfaces the user-relevant info:
 *   x:     <data-space x-center of the bin>
 *   y:     <data-space y-center of the bin>
 *   count: 12               (when datum.count is present — streaming path)
 *   sum:   142              (when agg === "sum")
 *   mean:  11.83            (when agg === "mean")
 *
 * For `agg === "sum"` we always surface the sum (it's the metric the
 * heatmap is colored by, even when sum happens to equal count).
 *
 * Falls back to the canonical x/y shape if the enriched fields are
 * absent (e.g. a non-streaming render path); the count/sum/mean rows
 * only appear when the matching field is present on the datum.
 */
export declare function buildHeatmapTooltip<TDatum extends Datum = Datum>(options?: DefaultRealtimeTooltipOptions<TDatum>): (d: HoverData) => ReactNode;
export {};
