import type { Datum } from "../charts/shared/datumTypes";
/**
 * Static annotation rendering for server-side SVG.
 *
 * Supports common annotation types without DOM or React hooks.
 * Converts data coordinates to pixels using provided scales.
 */
import * as React from "react";
import type { SemioticTheme } from "../store/ThemeStore";
import { type AutoPlaceAnnotations } from "../recipes/annotationLayout";
interface AnnotationScales {
    x?: (v: any) => number;
    y?: (v: any) => number;
    /** For ordinal charts: band scale */
    o?: {
        (v: string): number | undefined;
        bandwidth?: () => number;
    };
    /** For ordinal charts: value scale */
    r?: (v: number) => number;
    /**
     * For geo charts: projects [lon, lat] → [x, y] pixel coords. Set by
     * `renderGeoFrame` from the resolved `GeoPipelineStore` projection.
     * Annotations that carry `coordinates: [lon, lat]` resolve through this.
     */
    geoProjection?: (coords: [number, number]) => [number, number] | null;
}
interface AnnotationLayout {
    width: number;
    height: number;
}
export interface StaticAnnotationConfig {
    annotations?: Datum[];
    autoPlaceAnnotations?: AutoPlaceAnnotations;
    scales: AnnotationScales;
    layout: AnnotationLayout;
    theme: SemioticTheme;
    /** ID prefix for multi-chart documents */
    idPrefix?: string;
    xAccessor?: string;
    yAccessor?: string;
    /** Ordinal projection — determines whether r maps to x or y */
    projection?: "vertical" | "horizontal" | "radial";
}
/**
 * Render annotations as static SVG elements.
 */
export declare function renderStaticAnnotations(config: StaticAnnotationConfig): React.ReactNode;
export {};
