import { TypographyProps } from '@procore/core-react';
import React from 'react';
import { SelectBulkEditorParams } from '../Panels/BulkEdit';
import { ColumnDefinition, GranularRequired } from '../types';
import { DataTableCellEditorProps, DataTableCellRendererProps } from './DataTableCell';
export declare type SelectCellColumnDefinition<TValue = any, TFilterOption = any, TFilterValue = number | string> = GranularRequired<ColumnDefinition<TValue, 'selectCellRenderer', {
    typographyProps?: TypographyProps;
}, 'selectCellEditor', SelectCellEditorParams<TValue>, TFilterOption, TFilterValue, 'select', SelectBulkEditorParams>, 'cellEditor' | 'cellEditorParams'>;
export interface SelectCellRendererProps<TValue = any> extends DataTableCellRendererProps<TValue, SelectCellColumnDefinition<TValue>> {
}
export declare const SelectCellRenderer: React.FunctionComponent<SelectCellRendererProps>;
declare type OnSearchParams = {
    data: SelectCellEditorProps['data'];
    event: React.ChangeEvent<HTMLInputElement>;
};
export interface SelectCellEditorParams<TValue> {
    getId?: (item: TValue) => number | string;
    getOptionLabel?: (option: any) => string;
    placeholder?: string;
    selectOptions: TValue[] | ((rowData: Record<string, any>) => TValue[]) | ((rowData: Record<string, any>) => Promise<TValue[]>);
    onSearch?: (params: OnSearchParams) => TValue[] | Promise<TValue[]>;
}
export interface SelectCellEditorProps<TValue = any> extends DataTableCellEditorProps<TValue, SelectCellColumnDefinition<TValue>> {
}
export declare const SelectCellEditor: React.ForwardRefExoticComponent<Pick<SelectCellEditorProps<any>, "value" | "field" | "rowHeight" | "data" | "rowIndex" | "columnDefinition" | "stopEditing" | "setDataValue" | "isGroup" | "parentData" | "parentId" | "rowPinned" | "tableApi"> & React.RefAttributes<HTMLDivElement>>;
export {};
