import { ICellEditorParams, ICellRendererParams } from 'ag-grid-community';
import React from 'react';
import { RowSize } from '../constants';
import { ColumnDefinition, ExtendedColDef, TableApi } from '../types';
export interface DataTableCellRendererProps<TValue = any, TColumnDefinition extends ColumnDefinition = ColumnDefinition<TValue>> {
    columnDefinition: TColumnDefinition;
    /**
     * Array of data for the row, keyed by field
     */
    data: any;
    /**
     * Field name for the cell being rendered
     */
    field: string;
    /**
     * Boolean for if the cell is a group cell
     */
    isGroup: boolean;
    /**
     * If rendering in a nested table, this is the data for the parent row
     */
    parentData: any | undefined;
    /**
     * If rendering in a nested table, this is the id of the parent row
     */
    parentId: string | undefined;
    /**
     * The height of the row in pixels
     */
    rowHeight: RowSize;
    /**
     * Will be "top" or "bottom" if the row is pinned, otherwise undefined
     */
    rowPinned: string | undefined;
    /**
     * The api for working with and modifying the table data
     */
    tableApi: TableApi;
    /**
     * The individual cell's value
     */
    value: TValue;
    /**
     * Row index of current row
     */
    rowIndex?: number;
}
export interface DataTableCellEditorProps<TValue = any, TColumnDefinition extends ColumnDefinition = ColumnDefinition<TValue>> extends DataTableCellRendererProps<TValue, TColumnDefinition> {
    ref?: ((instance: HTMLElement | null) => void) | React.MutableRefObject<HTMLElement | null> | null;
    setDataValue: (field: string, newValue: TValue) => void;
    stopEditing: () => void;
}
export interface CellRendererProps extends ICellRendererParams {
    colDef: ExtendedColDef;
    Component: React.ComponentType<any>;
    editorType?: 'input' | 'select' | 'date';
}
export interface CellEditorProps extends ICellEditorParams {
    colDef: ExtendedColDef;
    Component: React.ForwardRefExoticComponent<any>;
    editorType: 'input' | 'select' | 'date';
}
export declare const DataTableCellRenderer: React.FC<CellRendererProps>;
export declare const DataTableCellEditor: React.ForwardRefExoticComponent<CellEditorProps & React.RefAttributes<HTMLElement>>;
