import React, { ReactNode } from 'react';
import { ColumnDef, Table } from '@tanstack/react-table';
import { Identifiable } from '@custis/common';
import { NewGridStore } from './NewGridStore';
import { GridIconsProps } from './GridIcons';
export interface NewGridProps<TItem extends Identifiable, TFilter, TSorting> {
    columns: ColumnDef<TItem>[];
    store: NewGridStore<TItem, TFilter, TSorting>;
    hasSelection?: boolean;
    paginationHidden?: boolean;
    hasReorderingRows?: boolean;
    hasExpand?: boolean;
    columnSettingsVisible?: boolean;
    classNames?: {
        header?: string;
        headerCell?: string;
        body?: string;
        bodyRow?(row: TItem): string;
        bodyCell?(row: TItem): string;
    };
    styles?: {
        header?: React.CSSProperties;
        headerCell?: React.CSSProperties;
        body?: React.CSSProperties;
        bodyRow?(row: TItem): React.CSSProperties;
        bodyCell?(row: TItem): React.CSSProperties;
    };
    icons?: GridIconsProps;
    getRowId?(row: TItem): string;
    getSubRows?(row: TItem): TItem[];
    rowCanBeSelected?(row: TItem): boolean;
    actionAddon?(row: TItem): ReactNode;
    onRowClick?(row: TItem): void;
    renderPagination?(table: Table<TItem>, totalCount: number): ReactNode;
}
export declare const NewGrid: <TItem extends Identifiable & {
    children?: TItem[] | undefined;
}, TFilter, TSorting, TResultAdditionalInfo = undefined>({ columns, store, getRowId, hasSelection, rowCanBeSelected, actionAddon, paginationHidden, hasReorderingRows, onRowClick, hasExpand, getSubRows, renderPagination, icons, columnSettingsVisible, styles, classNames, }: NewGridProps<TItem, TFilter, TSorting>) => React.JSX.Element;
