import { ReactNode } from 'react';
export interface ColumnDef<TRow> {
    id: string;
    header: ReactNode;
    cell: (row: TRow, index: number) => ReactNode;
    sortable?: boolean;
    /** CSS width value — e.g. "200px", "30%". */
    width?: string;
    align?: "start" | "center" | "end";
}
export type SortDirection = "asc" | "desc";
export interface ColumnViewSortState {
    columnId: string;
    direction: SortDirection;
}
export type ColumnViewSelectionMode = "none" | "single" | "multiple";
export interface ColumnViewProps<TRow extends object = Record<string, unknown>> {
    columns: ColumnDef<TRow>[];
    rows: TRow[];
    /** Extract a stable unique key per row. */
    rowKey: (row: TRow) => string | number;
    /** @default "none" */
    selectionMode?: ColumnViewSelectionMode;
    /** Controlled set of selected row keys. */
    selectedRows?: (string | number)[];
    onSelectionChange?: (keys: (string | number)[]) => void;
    /** Controlled sort state. */
    sortState?: ColumnViewSortState;
    onSort?: (columnId: string, direction: SortDirection) => void;
    /** Constrains height and enables vertical scroll. */
    height?: string | number;
    /** Rendered when `rows` is empty. */
    emptyState?: ReactNode;
    className?: string;
    ariaLabel?: string;
}
export declare function ColumnView<TRow extends object = Record<string, unknown>>({ columns, rows, rowKey, selectionMode, selectedRows, onSelectionChange, sortState, onSort, height, emptyState, className, ariaLabel, }: ColumnViewProps<TRow>): import("react/jsx-runtime").JSX.Element;
