import type { OrdinalCustomLayout } from "../stream/ordinalCustomLayout";
import type { Datum } from "../charts/shared/datumTypes";
export interface MarimekkoConfig {
    /** Field (or function) yielding the category for each datum. Categories become x-axis bars. */
    categoryAccessor: string | ((d: Datum) => string);
    /** Field (or function) yielding the value (segment height contribution). */
    valueAccessor: string | ((d: Datum) => number);
    /** Field (or function) yielding the stack key — segments inside each bar. */
    stackBy: string | ((d: Datum) => string);
    /** Pixel gap between adjacent category bars. @default 2 */
    gutter?: number;
    /** Optional explicit category order. If omitted, uses data insertion order. */
    categoryOrder?: string[];
    /** Optional explicit stack order. If omitted, uses insertion order. */
    stackOrder?: string[];
    /**
     * Render category labels under each bar via SVG overlays. The default
     * ordinal axis can't position labels under variable-width bars (it
     * assumes a uniform band scale), so the recipe handles label
     * placement itself. @default true
     */
    showCategoryLabels?: boolean;
    /**
     * Pixel-padding reserved beneath the bars for labels. Subtracted from
     * the plot height when laying out the bars. @default 22 when labels
     * are shown, 0 otherwise.
     */
    labelPadding?: number;
}
/**
 * Marimekko (mosaic) chart — variable-width stacked bars where each bar's
 * width encodes its category's contribution to the grand total, and the
 * inner stacked segments encode the within-category breakdown by
 * `stackBy`. Both dimensions are proportional, making it the natural pick
 * for cohort revenue analysis, market share by segment × product, etc.
 *
 * @example
 * ```tsx
 * import { OrdinalCustomChart } from "semiotic/ordinal"
 * import { marimekkoLayout } from "semiotic/recipes"
 *
 * <OrdinalCustomChart
 *   data={salesByRegionAndProduct}
 *   layout={marimekkoLayout}
 *   layoutConfig={{
 *     categoryAccessor: "region",
 *     stackBy: "product",
 *     valueAccessor: "revenue",
 *   }}
 *   width={700}
 *   height={400}
 * />
 * ```
 */
export declare const marimekkoLayout: OrdinalCustomLayout<MarimekkoConfig>;
