/**
 * DataGrid - Enterprise-grade React data grid component
 * @countermeasure/web-components/react/primitives/data-grid
 *
 * Features: virtual scrolling, multi-sort, column filtering, column resize,
 * column pinning, column reorder, row selection, context menu, keyboard nav,
 * localStorage persistence, URL state sync.
 */
import * as React from 'react';
export type SortDirection = 'asc' | 'desc';
export type PinDirection = 'left' | 'right' | null;
export type FilterType = 'text' | 'select' | 'multi-select';
export type SelectionMode = 'single' | 'multi' | 'none';
export interface SortState {
    key: string;
    direction: SortDirection;
}
export interface FilterValue {
    type: FilterType;
    value?: string;
    values?: string[];
}
export interface ColumnDef<TRow = Record<string, unknown>> {
    key: string;
    label: string;
    sortable?: boolean;
    filterable?: boolean;
    filterType?: FilterType;
    filterOptions?: string[];
    width?: number;
    minWidth?: number;
    maxWidth?: number;
    pinned?: PinDirection;
    resizable?: boolean;
    reorderable?: boolean;
    hideable?: boolean;
    cell?: (value: unknown, row: TRow, index: number) => React.ReactNode;
    headerClassName?: string;
    cellClassName?: string;
}
export interface ColumnState {
    key: string;
    width: number;
    visible: boolean;
    pinned: PinDirection;
    order: number;
}
export interface DataGridProps<TRow = Record<string, unknown>> extends Omit<React.ComponentProps<'div'>, 'children' | 'onSelect' | 'contextMenu'> {
    columns: ColumnDef<TRow>[];
    data: TRow[];
    tableId?: string;
    rowHeight?: number;
    overscan?: number;
    selectionMode?: SelectionMode;
    selectedRows?: Set<number>;
    onSelectionChange?: (selected: Set<number>) => void;
    sort?: SortState[];
    onSort?: (sort: SortState[]) => void;
    defaultSort?: SortState[];
    filters?: Record<string, FilterValue>;
    onFilterChange?: (filters: Record<string, FilterValue>) => void;
    globalSearch?: string;
    onGlobalSearchChange?: (search: string) => void;
    emptyMessage?: string;
    loading?: boolean;
    enableContextMenu?: boolean;
    persistColumnState?: boolean;
    onRowClick?: (row: TRow, index: number) => void;
    rowClassName?: (row: TRow, index: number) => string | undefined;
}
declare function DataGrid<TRow extends Record<string, unknown> = Record<string, unknown>>({ className, columns, data, tableId, rowHeight, overscan, selectionMode, selectedRows: controlledSelected, onSelectionChange, sort: controlledSort, onSort, defaultSort, filters: controlledFilters, onFilterChange, globalSearch, onGlobalSearchChange, emptyMessage, loading, enableContextMenu: _enableCtxMenu, persistColumnState, onRowClick, rowClassName, ...props }: DataGridProps<TRow>): import("react/jsx-runtime").JSX.Element;
export { DataGrid };
//# sourceMappingURL=data-grid.d.ts.map