import { OptionFactory } from '../echart'; import { ScatterplotEChartsOption, ScatterplotOptionFactoryInput, ScatterplotOptionsInput } from './types'; /** * Builds the **structural** ECharts option for a scatterplot widget — both * axes `type: 'value'` (not category, unlike Bar/Histogram), grid, tooltip * triggered per-item rather than per-axis. Intentionally data-agnostic: no * series, no dataset, no `legend.show` (those depend on data and are added * by {@link createScatterplotOptionFactory}). * * Styling parity with v1: dark themed tooltip via `createTooltipFormatter` * + `createTooltipPositioner`, `buildGridConfig`-based grid, polished * axisLine/Tick/splitLine, `overlineDelicate` axis labels, structural * legend wired via `buildLegendConfig` (toggled by the merger), and the * CARTO `qualitative.bold + secondary` palette — same pattern bar / * histogram / pie already use. {@link createScatterplotOptionFactory} * wraps this builder in its structural-phase branch. */ export declare function scatterplotOptions({ theme, xFormatter, yFormatter, }: ScatterplotOptionsInput): ScatterplotEChartsOption; /** * Returns the scatterplot widget's {@link OptionFactory} — one closure * that owns BOTH phases of option construction: * * - **Structural phase** (`option == null`) — builds the theme-aware * structural option via {@link scatterplotOptions}, optionally merging * the consumer-supplied `optionsOverride`. Called once by Provider to * seed `rawOptions` in the store. * - **Merge phase** (`option != null`) — fuses post-pipeline `state.data` * (`ScatterplotWidgetData`) into the option via the dataset API. Each * series's `[x, y]` tuples land in `dataset[i].source` as 2-column * rows; the series uses positional encoding (`encode: { x: 0, y: 1 }`) * and `type: 'scatter'`. niceMin/niceMax are computed over both axes * so the chart frames data on rounded extents and numeric jitters * don't shift gridlines per render. Reactive `ctx.formatter` (driven * by RelativeData) re-derives the y-axis label and tooltip at fusion * time; `xFormatter` stays baked at structural-build time (relative * is a values-axis concept; x is coordinate-space). * * When `ZoomToggle` installs a `dataZoom` slider, grid bottom is * extended and the slider is positioned above the legend row (if any) — * same layout dance bar / histogram / timeseries do. */ export declare function createScatterplotOptionFactory(options: ScatterplotOptionFactoryInput): OptionFactory;