import type { App } from '../App'; import type { Group } from '../shapes/Group'; import type { Node } from '../Node'; import { Line, RoundedRect, TextNode } from '../shapes/index'; /** Map scene world coordinates to chart-group local space (handles nested panels). */ export declare function chartLocalPoint(group: Group, worldX: number, worldY: number): { x: number; y: number; }; export interface ChartLayout { plotX: number; plotY: number; plotWidth: number; plotHeight: number; } export interface ChartBounds { min: number; max: number; } /** Compute evenly spaced tick values for a numeric range. */ export declare function computeTicks(min: number, max: number, count?: number): number[]; export declare function dataBounds(data: number[], minY?: number, maxY?: number): ChartBounds; export declare function defaultLayout(width: number, height: number, padding?: number, legendHeight?: number): ChartLayout; export declare function seriesToPoints(data: number[], layout: ChartLayout, bounds: ChartBounds): number[]; export declare function areaPathFromPoints(points: number[], baselineY: number): string; export declare function addGridLines(app: App, group: Group, layout: ChartLayout, yTicks: number[], bounds: ChartBounds, xDivisions?: number): void; export declare function addAxes(app: App, group: Group, layout: ChartLayout, bounds: ChartBounds, yTicks: number[], tickCount?: number): void; export declare function addLegend(app: App, group: Group, items: { label: string; color: string; }[], x: number, y: number): void; export declare function nearestDataIndex(data: number[], layout: ChartLayout, localX: number): number; /** Index along plot X for a given point count (multi-series charts). */ export declare function nearestPlotIndex(count: number, layout: ChartLayout, localX: number): number; /** Bar index from plot-local X (column-based charts, band scale). */ export declare function barIndexAtX(count: number, layout: ChartLayout, localX: number): number; export declare function barGeometry(index: number, count: number, value: number, layout: ChartLayout, bounds: ChartBounds, gap?: number): { x: number; y: number; width: number; height: number; centerX: number; }; /** Row index from plot-local Y (horizontal bar charts). */ export declare function barIndexAtY(count: number, layout: ChartLayout, localY: number): number; export declare function stackedHorizontalBarGeometry(index: number, count: number, total: number, layout: ChartLayout, bounds: ChartBounds, gap?: number): { x: number; y: number; width: number; height: number; centerY: number; }; export interface TooltipBounds { width: number; height: number; } export declare function chartTooltipSize(label: string): { width: number; height: number; }; export declare function chartTooltipWidth(label: string): number; /** Place tooltip box and label text inside it (works on canvas and HTML renderers). */ export declare function positionChartTooltip(tooltip: RoundedRect, tooltipLabel: TextNode, centerX: number, topY: number, label: string, chartBounds?: TooltipBounds): void; export declare function hideChartTooltip(tooltip: RoundedRect, tooltipLabel: TextNode): void; export declare function wireChartInteraction(group: Group, data: number[], layout: ChartLayout, bounds: ChartBounds, parts: { tooltip: RoundedRect; tooltipLabel: TextNode; crosshair: Line; dot: Node; hitArea: Node; }): void; export interface SeriesHoverItem { name?: string; data: number[]; color?: string; } /** Crosshair hover showing all series values at the hovered index. */ export declare function wireMultiSeriesChartInteraction(group: Group, seriesList: SeriesHoverItem[], layout: ChartLayout, bounds: ChartBounds, parts: { tooltip: RoundedRect; tooltipLabel: TextNode; crosshair: Line; dot: Node; hitArea: Node; }): void; export declare function wireBarChartInteraction(group: Group, data: number[], layout: ChartLayout, bounds: ChartBounds, gap: number | undefined, parts: { tooltip: RoundedRect; tooltipLabel: TextNode; highlight: Node; hitArea: Node; }): void; export declare function stackedBarHoverLabel(seriesList: SeriesHoverItem[], index: number): string; /** Column hover for stacked bar charts — lists each series segment at the hovered index. */ export declare function wireStackedBarChartInteraction(group: Group, seriesList: SeriesHoverItem[], layout: ChartLayout, bounds: ChartBounds, totals: number[], gap: number | undefined, parts: { tooltip: RoundedRect; tooltipLabel: TextNode; highlight: Node; hitArea: Node; }): void; /** Row hover for stacked horizontal bar charts — lists each series segment at the hovered index. */ export declare function wireStackedHorizontalBarChartInteraction(group: Group, seriesList: SeriesHoverItem[], layout: ChartLayout, bounds: ChartBounds, totals: number[], gap: number | undefined, parts: { tooltip: RoundedRect; tooltipLabel: TextNode; highlight: Node; hitArea: Node; }): void;