import { type CapabilityItem } from '../../stats/capability.js';
import type { TestDef } from '../../renderer/buildWaferMap.js';
import { type SaveImageHandler } from './chartShell.js';
export interface CapabilityPanelOptions {
    title?: string;
    items: CapabilityItem[];
    testDefs: TestDef[];
    colorScheme?: string;
    onSaveImage?: SaveImageHandler;
    /** Clicking a test's box calls this — the Analysis tab wires it to drive the boxplot panel's selected test in place, mirroring tsmap's original capability→boxplot link. */
    onSelectTest?: (testNumber: number) => void;
    /**
     * When the Analysis tab's "Group by" is active, this panel gets its own
     * "Group: <value> ▾" restrict-to-one-group dropdown (matching tsmap's
     * `charts/capability.ts` exactly — capability shows exactly one group's
     * data at a time, never all groups at once or pooled). `items` above is
     * ignored when `groups` is provided; the active group's own item list is
     * used instead. Absent ⇒ today's plain ungrouped behavior.
     */
    groups?: {
        key: string;
        items: CapabilityItem[];
    }[];
}
export interface CapabilityPanelHandle {
    card: HTMLElement;
    /**
     * Whether any test in `testDefs` is parametric at all (has a `testNumber`)
     * — a chart with zero parametric tests has nothing to draw regardless of
     * spec-limit coverage (see `buildCapabilityData`'s fallback tier: tests
     * without spec limits still render, so lacking limits is no longer an
     * empty-chart condition on its own). This is a property of `testDefs`
     * alone, not the selected group. The Analysis tab uses this to avoid
     * forcing a large fixed height on a card that has nothing to draw.
     */
    hasData: boolean;
    /** Disconnect this panel's own ResizeObserver. Call when removing the card from the DOM. */
    destroy: () => void;
}
export declare function renderCapabilityPanel(options: CapabilityPanelOptions): CapabilityPanelHandle;
//# sourceMappingURL=capability.d.ts.map