/**
 * GridTable — generic scrollable table with box-drawing borders.
 *
 * Renders a fixed-width columnar table with cursor highlighting,
 * scrolling, and box-drawing borders. Column definitions control
 * header text, width bounds, and per-cell rendering; the table
 * handles padding, alignment, and scroll state.
 */
import { Container } from '../../../tui/index.js';
import type { Theme } from '../../theme/runtime.js';
export interface GridColumn<T> {
    header: string;
    minWidth: number;
    maxWidth: number;
    /** Natural width needed for this row's data (raw text length). */
    width(row: T): number;
    /**
     * Return a styled string for this cell.
     *
     * The table pads the result to `colWidth` visible characters, so
     * implementations only need to style and truncate — not pad.
     */
    render(row: T, colWidth: number, isCursor: boolean, theme: Theme): string;
}
export declare const DEFAULT_GRID_VISIBLE_ROWS = 8;
export declare class GridTable<T> extends Container {
    private cursorRow;
    private scrollOffset;
    private columns;
    private rows;
    private theme;
    private inner;
    private colWidths;
    private maxVisibleRows;
    constructor(columns: GridColumn<T>[], rows: T[], theme: Theme, options?: {
        maxVisibleRows?: number;
    });
    moveCursor(delta: number): void;
    movePage(direction: -1 | 1): void;
    scrollBy(delta: number): void;
    setMaxVisibleRows(maxVisibleRows: number): void;
    private rebuild;
}
//# sourceMappingURL=grid-table.d.ts.map