import { type ChartCenterOptions, type ChartDefinition, type ChartPoint, type ChartSpec, type ChartValue } from './chart-grammar'; import { type ChartTheme } from './chart-theme'; export interface ChartTextMeasurement { width: number; height: number; } export type ChartTextMeasurer = (text: string) => ChartTextMeasurement; export interface ChartBounds { top: number; right: number; bottom: number; left: number; width: number; height: number; } interface ChartSceneStyle { fill?: string; stroke?: string; opacity?: number; fillOpacity?: number; strokeOpacity?: number; strokeWidth?: number | string; strokeDasharray?: string; radius?: number | string; fontFamily?: string; fontSize?: number | string; fontWeight?: number | string; textAnchor?: 'start' | 'middle' | 'end'; } interface ChartSceneBaseNode { key: string; markId: string; style: ChartSceneStyle; className?: string; /** Keep discrete nodes visible when their center lies on a plot boundary. */ clipToPlot?: boolean; } export interface ChartScenePath extends ChartSceneBaseNode { type: 'path'; d: string; transform?: string; } export interface ChartSceneRect extends ChartSceneBaseNode { type: 'rect'; x: number; y: number; width: number; height: number; } export interface ChartSceneCircle extends ChartSceneBaseNode { type: 'circle'; x: number; y: number; radius: number | string; } export interface ChartSceneLine extends ChartSceneBaseNode { type: 'line'; x1: number; x2: number; y1: number; y2: number; } export interface ChartSceneText extends ChartSceneBaseNode { type: 'text'; x: number; y: number; text: string; dx?: number; dy?: number; rotate?: number; dominantBaseline?: 'auto' | 'middle' | 'hanging'; measure?: boolean; } export type ChartSceneNode = ChartScenePath | ChartSceneRect | ChartSceneCircle | ChartSceneLine | ChartSceneText; export interface ChartSceneTick { key: string; value: ChartValue; label: string; position: number; boundary: boolean; labelVisible: boolean; } export interface ChartSceneAxis { label?: string; ticks: ChartSceneTick[]; grid: boolean; rotate: number; line: boolean; tickSize: number; tickPadding: number; } export interface ChartScene { width: number; height: number; coordinate: 'cartesian' | 'polar'; plot: ChartBounds; xAxis: ChartSceneAxis; yAxis: ChartSceneAxis; guides: ChartSceneNode[]; nodes: ChartSceneNode[]; points: ChartPoint[]; center?: ChartCenterOptions; focus: NonNullable; maxFocusDistance?: number; tooltip: ChartSpec['tooltip']; clip: boolean; focusDotCircleRadius: number | string; focusDotHaloWidth: number | string; focusDotPointKeys: readonly string[]; arcHitRegions: readonly ChartArcHitRegion[]; } interface ChartArcHitRegion { sceneKey: string; centerX: number; centerY: number; innerRadius: number; outerRadius: number; startAngle: number; endAngle: number; } export declare function resolveDonutPadAngle(gap: number, innerRadius: number, outerRadius: number): number; export declare function compileChartScene(definition: ChartDefinition, width: number, height: number, locale?: string, measurer?: ChartTextMeasurer, theme?: ChartTheme): ChartScene; export declare function findChartFocus(points: readonly ChartPoint[], mode: NonNullable, x: number, y: number, maxDistance?: number, arcHitRegions?: readonly ChartArcHitRegion[]): { primary: ChartPoint; points: ChartPoint[]; } | undefined; export {}; //# sourceMappingURL=chart-scene.d.ts.map