import type { Die } from '../core/dies.js';
import { type TestDef } from '../renderer/buildWaferMap.js';
import { type SaveTextHandler } from './toolbar.js';
export interface DieListOptions {
    /** Heading text. Default: `Die list (N)`. */
    title?: string;
    /** Optional note shown under the heading, e.g. explaining why this replaced the map. */
    note?: string;
    /** CSV filename, including extension. Default: `'dies.csv'`. */
    csvFilename?: string;
    /** Host hook for "Export CSV" — see `saveTextFile` (toolbar.ts). */
    onSaveText?: SaveTextHandler;
    /**
     * Extra leading column, e.g. a wafer-id label for a lot-level combined
     * list spanning multiple wafers. `get(die)` returning `undefined` renders
     * an empty cell for that row.
     */
    extraColumn?: {
        label: string;
        get: (die: Die) => string | undefined;
    };
    /**
     * Cap the scrolling table at this CSS length instead of letting it fill.
     *
     * Default (omitted) is **fill**: the table grows to consume whatever height
     * its container gives it (`flex: 1; min-height: 0`), which is what every
     * in-library caller wants — a card overlay, a footer panel and a resizable
     * modal all have a definite height, and a fixed cap left a short table
     * floating in a half-empty box. In a container with NO definite height the
     * table simply renders at its natural full length and the host page
     * scrolls; set this if that isn't wanted (e.g. mounting a 10k-row list
     * directly into a long document).
     */
    maxHeight?: string;
}
/**
 * Build a scrollable die-list table + "Export CSV" button. Returns `null`
 * when `dies` is empty (nothing to show).
 */
export declare function buildDieListSection(dies: Die[], testDefs: TestDef[] | undefined, options?: DieListOptions): HTMLDivElement | null;
//# sourceMappingURL=dieList.d.ts.map