import * as React from "react";
import type { StreamOrdinalFrameProps } from "../../stream/ordinalTypes";
import type { RealtimeFrameHandle } from "../../realtime/types";
import type { OrdinalCustomLayout } from "../../stream/ordinalCustomLayout";
import type { Datum } from "../shared/datumTypes";
import type { BaseChartProps } from "../shared/types";
export interface OrdinalCustomChartProps<TDatum extends Datum = Datum, TConfig extends object = Record<string, unknown>> extends BaseChartProps {
    /** Data passed through to OrdinalLayoutContext.data. */
    data?: TDatum[];
    /** The layout function. Receives OrdinalLayoutContext, returns scene nodes + overlays. */
    layout: OrdinalCustomLayout<TConfig>;
    /** Config blob threaded through to OrdinalLayoutContext.config. */
    layoutConfig?: TConfig;
    /** Field name (or function) for the category. The frame builds the o-scale from these. */
    categoryAccessor?: StreamOrdinalFrameProps["categoryAccessor"];
    /** Field name (or function) for the value. The frame builds the r-scale from these. */
    valueAccessor?: StreamOrdinalFrameProps["valueAccessor"];
    /**
     * Optional category order — overrides the data's insertion order. Most
     * recipes can ignore this and read `ctx.scales.o.domain()` instead.
     */
    oExtent?: StreamOrdinalFrameProps["oExtent"];
    /** Optional fixed value extent. */
    rExtent?: StreamOrdinalFrameProps["rExtent"];
    /** Vertical / horizontal / radial. Default vertical. */
    projection?: StreamOrdinalFrameProps["projection"];
    /** Color scheme threaded into the layout's `resolveColor` helper. */
    colorScheme?: string | string[];
    enableHover?: boolean;
    showAxes?: boolean;
    showGrid?: boolean;
    annotations?: Datum[];
    /** Additional StreamOrdinalFrame props for advanced customization. */
    frameProps?: Partial<Omit<StreamOrdinalFrameProps, "data" | "chartType" | "size" | "customLayout" | "layoutConfig">>;
}
/**
 * OrdinalCustomChart — escape hatch for bespoke ordinal geometry.
 *
 * Wraps StreamOrdinalFrame and threads a user-supplied layout function
 * into the scene-building pipeline. The layout receives the o-scale
 * (band scale over categories) and r-scale (linear over values), plus
 * dimensions, theme, and a `resolveColor` helper, and returns scene
 * primitives plus optional overlays.
 *
 * Built-in chart types (BarChart, SwarmPlot, BoxPlot, PieChart, ...)
 * should still be preferred when they fit. Reach for this HOC when none
 * does — marimekko, parallel coordinates, bullet, fan chart, slope graph,
 * etc.
 *
 * @example
 * ```tsx
 * import { OrdinalCustomChart } from "semiotic/ordinal"
 * import { marimekkoLayout } from "semiotic/recipes"
 *
 * <OrdinalCustomChart
 *   data={cohorts}
 *   layout={marimekkoLayout}
 *   layoutConfig={{
 *     categoryAccessor: "segment",
 *     valueAccessor: "revenue",
 *     stackBy: "product",
 *   }}
 *   width={700}
 *   height={300}
 * />
 * ```
 */
export declare const OrdinalCustomChart: {
    <TDatum extends Datum = Datum, TConfig extends object = Record<string, unknown>>(props: OrdinalCustomChartProps<TDatum, TConfig> & React.RefAttributes<RealtimeFrameHandle>): React.ReactElement | null;
    displayName?: string;
};
