export type ChartType = "bar" | "line" | "scatter" | "area"; /** * Per-column interpolation mode for line / area glyphs. */ export type InterpolateMode = "skip" | "solid" | "transparent"; /** * Per-column entry inside the viewer's `columns_config` map. */ export interface ColumnChartConfig { /** * "Bar" | "Line" | "Scatter" | "Area" (case-insensitive). Invalid / missing → bar. */ chart_type?: string; /** * Explicit stack override. */ stack?: boolean; /** * Force this aggregate onto the secondary (right) Y axis, * independent of `autoAltYAxis` and the dual-axis ratio * heuristic. */ alt_axis?: boolean; /** * Interpolation mode for line / area glyphs. See * {@link InterpolateMode}. Legacy values `true` / `false` are also * accepted by {@link resolveInterpolate} (mapped to `"solid"` / * `"skip"`). Default `"skip"`. No effect on bar / scatter. */ interpolate?: InterpolateMode; } /** * Resolve the render glyph for an aggregate base name. Lookup key is the * *base* (e.g. `"Sales"`); composite arrow columns like `"North|Sales"` * should strip the prefix before calling — the bar pipeline already * tracks aggregates as base names, so call sites pass the base directly. */ export declare function resolveChartType(aggName: string, cfg: Record | undefined, fallback?: ChartType): ChartType; /** * Resolve whether a series stacks with its aggregate siblings. */ export declare function resolveStack(aggName: string, chartType: ChartType, cfg: Record | undefined): boolean; /** * Resolve whether a column is pinned to the secondary Y axis via * `columns_config[aggName].alt_axis`. */ export declare function resolveAltAxis(aggName: string, cfg: Record | undefined): boolean; /** * Resolve the interpolation mode for this aggregate. */ export declare function resolveInterpolate(aggName: string, chartType: ChartType, cfg: Record | undefined): InterpolateMode;