import * as React from "react";
import type { StreamXYFrameProps } from "../../stream/types";
import type { RealtimeFrameHandle } from "../../realtime/types";
import type { CustomLayout } from "../../stream/customLayout";
import type { Datum } from "../shared/datumTypes";
import type { BaseChartProps, AxisConfig } from "../shared/types";
import type { TooltipProp } from "../../Tooltip/Tooltip";
export interface XYCustomChartProps<TDatum extends Datum = Datum, TConfig extends object = Record<string, unknown>> extends BaseChartProps, AxisConfig {
    /** Data passed through to LayoutContext.data. */
    data?: TDatum[];
    /** The layout function. Receives LayoutContext, returns SceneNode[] + overlays. */
    layout: CustomLayout<TConfig>;
    /** Config blob threaded through to LayoutContext.config. */
    layoutConfig?: TConfig;
    /**
     * Optional fixed extents — flow into scale construction *before* the layout
     * runs, so scales reflect the layout's intended domain. Layouts that don't
     * use scales (waffle, calendar, treemap) can ignore this.
     */
    xExtent?: [number | undefined, number | undefined];
    yExtent?: [number | undefined, number | undefined];
    /** Show axes — default false; most custom layouts draw their own axes. */
    showAxes?: boolean;
    showGrid?: boolean;
    enableHover?: boolean;
    showLegend?: boolean;
    annotations?: Datum[];
    colorScheme?: string | string[];
    tooltip?: TooltipProp;
    /** Additional StreamXYFrame props for advanced customization, excluding XYCustomChart-controlled fields. */
    frameProps?: Partial<Omit<StreamXYFrameProps, "chartType" | "data" | "size" | "customLayout" | "layoutConfig">>;
}
/**
 * XYCustomChart — escape hatch for bespoke chart geometry.
 *
 * Wraps StreamXYFrame and threads a user-supplied layout function into the
 * scene-building pipeline. The layout receives scales, dimensions, theme,
 * and a resolveColor helper, and returns scene nodes + optional overlays.
 *
 * Built-in chart types should always be preferred. Reach for XYCustomChart
 * when no HOC fits — waffle grids, calendar heatmaps, horizon bands,
 * bespoke composites. See `semiotic/recipes` for reference layouts.
 *
 * @example
 * ```tsx
 * import { XYCustomChart } from "semiotic/xy"
 * import { waffleLayout } from "semiotic/recipes"
 *
 * <XYCustomChart
 *   data={cells}
 *   layout={waffleLayout}
 *   layoutConfig={{ rows: 10, columns: 10, gutter: 2, valueAccessor: "value" }}
 * />
 * ```
 */
export declare const XYCustomChart: {
    <TDatum extends Datum = Datum, TConfig extends object = Record<string, unknown>>(props: XYCustomChartProps<TDatum, TConfig> & React.RefAttributes<RealtimeFrameHandle>): React.ReactElement | null;
    displayName?: string;
};
