import type { Datum } from "../charts/shared/datumTypes";
/**
 * Server-side rendering of Semiotic charts to standalone SVG strings.
 *
 * Uses the shared SceneToSVG converters (same code used by Stream Frames
 * for SSR) plus PipelineStore / OrdinalPipelineStore / NetworkPipelineStore
 * for scene graph computation.
 *
 * Features:
 * - Theme inlining (resolve presets to concrete SVG styles)
 * - Legend rendering (categorical color swatches)
 * - Accessibility (title, desc, role="img")
 * - Grid lines
 * - Annotations (y-threshold, x-threshold, band, label, text, category-highlight)
 * - renderChart HOC-level API
 */
import * as React from "react";
import type { StreamXYFrameProps } from "../stream/types";
import type { StreamNetworkFrameProps } from "../stream/networkTypes";
import type { StreamOrdinalFrameProps } from "../stream/ordinalTypes";
import type { StreamGeoFrameProps } from "../stream/geoTypes";
import { type ThemeInput } from "./themeResolver";
type FrameType = "xy" | "ordinal" | "network" | "geo";
interface ThemeAwareProps {
    theme?: ThemeInput;
    showLegend?: boolean;
    showGrid?: boolean;
    annotations?: Datum[];
    title?: string | React.ReactNode;
    description?: string;
    background?: string;
    className?: string;
    legendPosition?: "right" | "left" | "top" | "bottom";
    /** Prefix for SVG element IDs — used by renderDashboard to avoid collisions */
    _idPrefix?: string;
}
export declare function renderToStaticSVG(frameType: FrameType, props: (StreamXYFrameProps | StreamNetworkFrameProps | StreamOrdinalFrameProps | StreamGeoFrameProps) & ThemeAwareProps): string;
export declare function renderXYToStaticSVG(props: StreamXYFrameProps & ThemeAwareProps): string;
export declare function renderOrdinalToStaticSVG(props: StreamOrdinalFrameProps & ThemeAwareProps): string;
export declare function renderNetworkToStaticSVG(props: StreamNetworkFrameProps & ThemeAwareProps): string;
export declare function renderGeoToStaticSVG(props: StreamGeoFrameProps & ThemeAwareProps): string;
/** Chart component name to frame type + props mapping */
type ChartName = "LineChart" | "AreaChart" | "StackedAreaChart" | "Scatterplot" | "BubbleChart" | "ConnectedScatterplot" | "Heatmap" | "Sparkline" | "BarChart" | "StackedBarChart" | "GroupedBarChart" | "PieChart" | "DonutChart" | "SwimlaneChart" | "Histogram" | "BoxPlot" | "ViolinPlot" | "SwarmPlot" | "DotPlot" | "RidgelinePlot" | "LikertChart" | "FunnelChart" | "GaugeChart" | "ForceDirectedGraph" | "SankeyDiagram" | "ChordDiagram" | "TreeDiagram" | "Treemap" | "CirclePack" | "ChoroplethMap" | "ProportionalSymbolMap" | "FlowMap";
interface RenderChartOptions {
    /** Output format — currently only "svg" is synchronous */
    format?: "svg";
}
/**
 * Render a chart using HOC-level props (categoryAccessor, valueAccessor, etc.)
 * instead of frame-level props (oAccessor, rAccessor, etc.).
 *
 * This is the primary API for AI/MCP workflows.
 */
export declare function renderChart(component: ChartName, props: Datum, _options?: RenderChartOptions): string;
export interface RenderToImageOptions {
    /** Output format */
    format?: "png" | "jpeg";
    /** Scale factor (e.g., 2 for retina) */
    scale?: number;
    /** Background color (overrides theme) */
    background?: string;
}
/**
 * Render a chart to a PNG or JPEG Buffer.
 *
 * Requires `sharp` as an optional peer dependency.
 * Falls back to a descriptive error if sharp is not installed.
 */
export declare function renderToImage(frameTypeOrComponent: FrameType | ChartName, props: Datum, options?: RenderToImageOptions): Promise<Buffer>;
export interface DashboardChart {
    /** Frame type or HOC component name */
    component?: ChartName;
    frameType?: FrameType;
    /** Chart props (data, accessors, etc.) */
    props: Datum;
    /** Span multiple columns (for emphasis="primary") */
    colSpan?: number;
}
export interface DashboardLayout {
    /** Number of columns */
    columns?: number;
    /** Gap between charts in pixels */
    gap?: number;
}
export interface RenderDashboardOptions {
    title?: string;
    subtitle?: string;
    theme?: ThemeInput;
    width?: number;
    height?: number;
    layout?: DashboardLayout;
    background?: string;
    /** Output format */
    format?: "svg";
}
/**
 * Compose multiple charts into a single SVG.
 */
export declare function renderDashboard(charts: DashboardChart[], options?: RenderDashboardOptions): string;
export {};
