import { ColDef, EditableCallback, ICellEditorParams, ICellRendererParams } from 'ag-grid-community';
import { SuppressKeyboardEventParams, ValueFormatterFunc, ValueGetterFunc } from 'ag-grid-community';
import { ReactElement } from 'react';
import { GridBaseRow } from './Grid';
import { GenericCellColDef } from './gridRender';
export interface GenericCellEditorProps<E> {
    multiEdit?: boolean;
    editor?: (editorProps: E) => ReactElement;
    editorParams?: E;
}
export declare const GridCellRenderer: (props: ICellRendererParams) => import("react/jsx-runtime").JSX.Element;
export interface ColDefT<TData extends GridBaseRow, ValueType = any> extends ColDef<TData, ValueType> {
    editable?: boolean | EditableCallback<TData, ValueType>;
    valueGetter?: string | ValueGetterFunc<TData, ValueType>;
    valueFormatter?: string | ValueFormatterFunc<TData, ValueType>;
    cellRenderer?: ((props: ICellRendererParams<TData, ValueType>) => ReactElement | string | false | null | undefined) | string;
    cellRendererParams?: {
        rightHoverElement?: ReactElement;
        originalCellRenderer?: any;
        editAction?: (selectedRows: TData[]) => void;
        shortcutKeys?: Record<string, () => void>;
        warning?: (props: ICellRendererParams<TData, ValueType>) => ReactElement | string | false | null | undefined;
        info?: (props: ICellRendererParams<TData, ValueType>) => ReactElement | string | false | null | undefined;
    };
    editor?: (editorProps: any) => ReactElement;
}
export declare const suppressCellKeyboardEvents: (e: SuppressKeyboardEventParams) => any;
export declare const generateFilterGetter: <TData extends GridBaseRow, ValueType>(field: string | undefined, filterValueGetter: string | ValueGetterFunc<TData, ValueType> | undefined, valueFormatter: string | ValueFormatterFunc<TData, ValueType> | undefined) => string | ValueGetterFunc<TData, ValueType> | undefined;
export declare const GridCell: <TData extends GridBaseRow, TValue = any, Props extends CellEditorCommon = any>(props: GenericCellColDef<TData, TValue>, custom?: {
    multiEdit?: boolean;
    preventAutoEdit?: boolean;
    editor?: (editorProps: Props) => ReactElement;
    editorParams?: Props;
}) => ColDefT<TData, TValue>;
export interface CellEditorCommon {
    className?: string | undefined;
}
export declare const GenericCellEditorComponentWrapper: (editor?: (props: any) => ReactElement) => import("react").ForwardRefExoticComponent<ICellEditorParams<any, any, any> & import("react").RefAttributes<unknown>>;
