import { ColDef, ColGroupDef, GridOptions, RowClickedEvent, RowDoubleClickedEvent } from 'ag-grid-community';
import { ReactElement } from 'react';
import { GridContextMenuComponent } from './gridHook';
import { GridBaseRow, GridOnRowDragEndProps } from './types';
export interface GridProps<TData extends GridBaseRow = GridBaseRow> {
    ['data-testid']?: string;
    theme?: string;
    loading?: boolean;
    readOnly?: boolean;
    suppressReadOnlyStyle?: boolean;
    columnDefs: ColDef<TData>[] | ColGroupDef<TData>[];
    defaultColDef?: GridOptions['defaultColDef'];
    defaultPostSort?: boolean;
    domLayout?: GridOptions['domLayout'];
    pinnedBottomRowData?: GridOptions['pinnedBottomRowData'];
    pinnedTopRowData?: GridOptions['pinnedTopRowData'];
    rowData: GridOptions['rowData'];
    rowClassRules?: GridOptions['rowClassRules'];
    rowHeight?: number;
    rowSelection?: 'single' | 'multiple';
    sizeColumns?: 'fit' | 'auto' | 'auto-skip-headers' | 'none';
    autoSelectFirstRow?: boolean;
    enableClickSelection?: boolean;
    enableRangeSelection?: boolean;
    enableSelectionWithoutKeys?: boolean;
    enableMultilineBulkEdit?: boolean;
    externalSelectedIds?: TData['id'][];
    externalSelectedItems?: TData[];
    hideSelectColumn?: boolean;
    hideSelectedRow?: boolean;
    selectColumnPinned?: ColDef['pinned'];
    selectable?: boolean;
    setExternalSelectedIds?: (ids: TData['id'][]) => void;
    setExternalSelectedItems?: (items: TData[]) => void;
    onBulkEditingComplete?: () => Promise<void> | void;
    singleClickEdit?: boolean;
    contextMenu?: GridContextMenuComponent<TData>;
    contextMenuSelectRow?: boolean;
    onCellFocused?: (props: {
        colDef: ColDef<TData>;
        data: TData;
    }) => void;
    onColumnMoved?: GridOptions['onColumnMoved'];
    onContentSize?: (props: {
        width: number;
    }) => void;
    /**
     * @deprecated You should drive your app off selection states. This will be deleted.
     */
    onRowClicked?: (event: RowClickedEvent) => void;
    /**
     * @deprecated You should drive your app off selection states. This will be deleted.
     */
    onRowDoubleClicked?: (event: RowDoubleClickedEvent) => void;
    onRowDragEnd?: (props: GridOnRowDragEndProps<TData>) => Promise<void> | void;
    animateRows?: boolean;
    alwaysShowVerticalScroll?: boolean;
    rowDragText?: GridOptions['rowDragText'];
    noRowsOverlayText?: string;
    noRowsMatchingOverlayText?: string;
    maxInitialWidth?: number;
    suppressCellFocus?: boolean;
    suppressColumnVirtualization?: GridOptions['suppressColumnVirtualisation'];
}
/**
 * Wrapper for AgGrid to add commonly used functionality.
 */
export declare const Grid: <TData extends GridBaseRow = GridBaseRow>({ theme, "data-testid": dataTestId, suppressReadOnlyStyle, defaultPostSort, rowData, rowHeight, rowSelection, sizeColumns, autoSelectFirstRow, enableRangeSelection, externalSelectedIds, externalSelectedItems, selectColumnPinned, selectable, setExternalSelectedIds, setExternalSelectedItems, singleClickEdit, enableMultilineBulkEdit, contextMenuSelectRow, contextMenu, onCellFocused: paramsOnCellFocused, onColumnMoved, suppressColumnVirtualization, maxInitialWidth, ...params }: GridProps<TData>) => ReactElement;
