import type { Datum } from "../shared/datumTypes";
import * as React from "react";
import type { StreamOrdinalFrameProps } from "../../stream/ordinalTypes";
import type { LegendInteractionMode } from "../shared/hooks";
import type { BaseChartProps, ChartAccessor, CategoryFormatFn } from "../shared/types";
import { type TooltipProp } from "../../Tooltip/Tooltip";
import type { RealtimeFrameHandle } from "../../realtime/types";
export interface StackedBarChartProps<TDatum extends Datum = Datum> extends BaseChartProps {
    data?: TDatum[];
    categoryAccessor?: ChartAccessor<TDatum, string>;
    stackBy: ChartAccessor<TDatum, string>;
    valueAccessor?: ChartAccessor<TDatum, number>;
    orientation?: "vertical" | "horizontal";
    categoryLabel?: string;
    valueLabel?: string;
    valueFormat?: (d: number | string) => string;
    colorBy?: ChartAccessor<TDatum, string>;
    colorScheme?: string | string[];
    normalize?: boolean;
    /** Category sort order. Default: `false` (data insertion order). `"asc"`/`"desc"` sorts by total stacked value. `"auto"` preserves insertion order while streaming and falls through to value-desc on static data. Custom comparators receive category keys. */
    sort?: boolean | "asc" | "desc" | "auto" | ((a: string, b: string) => number);
    barPadding?: number;
    /** Rounded top corner radius. Only the topmost stacked segment gets rounded. */
    roundedTop?: number;
    baselinePadding?: boolean;
    enableHover?: boolean;
    showGrid?: boolean;
    showCategoryTicks?: boolean;
    showLegend?: boolean;
    legendInteraction?: LegendInteractionMode;
    legendPosition?: "right" | "left" | "top" | "bottom";
    tooltip?: TooltipProp;
    annotations?: Datum[];
    /** Custom formatter for category tick labels */
    categoryFormat?: CategoryFormatFn;
    /** Fixed value-axis domain `[min, max]`. Either bound may be `undefined` to leave that side data-derived. Stacked bars auto-extend the value domain to cover the cumulative stack unless `valueExtent` is fully specified. */
    valueExtent?: [number | undefined, number | undefined] | [number];
    frameProps?: Partial<Omit<StreamOrdinalFrameProps, "data" | "size">>;
}
/**
 * StackedBarChart - Categorical bars split into stacked segments.
 *
 * Each row contributes one segment of the bar named by `categoryAccessor`;
 * `stackBy` chooses which series the segment belongs to. Use
 * {@link GroupedBarChart} when individual segment values matter more than
 * the total; pass `normalize` to compare composition rather than absolute
 * size.
 *
 * @example
 * ```tsx
 * // Quarterly revenue split by region
 * <StackedBarChart
 *   data={[
 *     { quarter: "Q1", region: "EMEA",     revenue: 120 },
 *     { quarter: "Q1", region: "Americas", revenue: 95 },
 *     { quarter: "Q2", region: "EMEA",     revenue: 140 },
 *     { quarter: "Q2", region: "Americas", revenue: 110 },
 *   ]}
 *   categoryAccessor="quarter"
 *   valueAccessor="revenue"
 *   stackBy="region"
 *   showLegend
 * />
 * ```
 *
 * @example
 * ```tsx
 * // Normalized to 100% — focus on composition
 * <StackedBarChart
 *   data={data}
 *   categoryAccessor="quarter"
 *   valueAccessor="revenue"
 *   stackBy="region"
 *   normalize
 * />
 * ```
 */
export declare const StackedBarChart: {
    <TDatum extends Datum = Datum>(props: StackedBarChartProps<TDatum> & React.RefAttributes<RealtimeFrameHandle>): React.ReactElement | null;
    displayName?: string;
};
