import * as React from 'react';
import * as Types from './types';
import * as Matrix from './matrix';
import * as Point from './point';
import { Selection } from './selection';
import './Spreadsheet.scss';
/** The Spreadsheet component props */
export type Props<CellType extends Types.CellBase> = {
    /** The spreadsheet's data */
    data: Matrix.Matrix<CellType>;
    /** Class name to be added to the spreadsheet's root element */
    className?: string;
    editable: boolean;
    createFormulaParser?: Types.CreateFormulaParser;
    /**
     * Labels to use in column indicators.
     * @defaultValue alphabetical labels.
     */
    columnLabels?: string[];
    /**
     * Labels to use in row indicators.
     * @defaultValue row index labels.
     */
    rowLabels?: string[];
    /**
     * If set to true, hides the row indicators of the spreadsheet.
     * @defaultValue `false`.
     */
    hideRowIndicators?: boolean;
    /**
     * If set to true, hides the column indicators of the spreadsheet.
     * @defaultValue `false`.
     */
    hideColumnIndicators?: boolean;
    /** The selected cells in the worksheet. */
    selected?: Selection;
    /** Component rendered above each column. */
    ColumnIndicator?: Types.ColumnIndicatorComponent;
    /** Component rendered in the corner of row and column indicators. */
    CornerIndicator?: Types.CornerIndicatorComponent;
    /** Component rendered next to each row. */
    RowIndicator?: Types.RowIndicatorComponent;
    /** The Spreadsheet's table component. */
    Table?: Types.TableComponent;
    /** The Spreadsheet's row component. */
    Row?: Types.RowComponent;
    /** The spreadsheet's header row component */
    HeaderRow?: Types.HeaderRowComponent;
    /** The Spreadsheet's cell component. */
    Cell?: Types.CellComponent<CellType>;
    /** Component rendered for cells in view mode. */
    DataViewer?: Types.DataViewerComponent<CellType>;
    /** Component rendered for cells in edit mode. */
    DataEditor?: Types.DataEditorComponent<CellType>;
    /** Callback called on key down inside the spreadsheet. */
    onKeyDown?: (event: React.KeyboardEvent) => void;
    /** Callback called when the Spreadsheet's selection changes. */
    onSelect?: (selected: Selection) => void;
    /** Callback called when Spreadsheet's active cell changes. */
    onActivate?: (active: Point.Point) => void;
    /** Callback called when the Spreadsheet's evaluated data changes. */
    onEvaluatedDataChange?: (data: Matrix.Matrix<CellType>) => void;
    setContextMenu: React.Dispatch<React.SetStateAction<Types.ContextMenuState>>;
    /** Set your dynamic sheet Height*/
    sheetHeight: string;
    toolbar?: 'show' | 'disable' | 'hide';
    contextOption?: {
        open: boolean;
        options: {
            label: string;
            value: string;
            iconName: string;
            action: () => void;
            disableTooltip: string;
            visible: boolean;
            disable: boolean;
        }[];
    };
    columnContextEnable: boolean;
    rowContextEnable: boolean;
    attachmentAction?: {
        addAttachment: (file: File) => Promise<string>;
        deleteAttachment: (fileId: string) => Promise<string>;
        viewAttachment: (fileId: string, fileName: string) => Promise<void>;
    };
    workRef: React.MutableRefObject<HTMLDivElement | null>;
    minimumColumnWidth: number;
    scroller: boolean;
    showHider: boolean;
    maxRowLimit: number;
    maxColLimit: number;
};
/**
 * The Spreadsheet component
 */
declare const Spreadsheet: <CellType extends Types.CellBase>(props: Props<CellType>) => React.ReactElement;
export default Spreadsheet;
