import React from "react"; import { IColumnProps } from "./IColumnProps"; import { ITableProps } from "./ITableProps"; declare type ISpreadsheetData = { props: ITableProps<{ element: TElement; subRow: TSubRow; }, TElement, TError>; errorGroups: (TError | null)[][][]; handleUndo: () => void; handleRedo: () => void; }; export declare type ISpreadsheetColumnProps = { validate?: (element: TElement, subRow: TSubRow) => TError | null; renderCell: (props: { element: TElement; subRow: TSubRow; } & Omit["renderCell"]>[0], "row">) => React.ReactNode; renderEditor: (props: { element: TElement; subRow: TSubRow; } & Omit["renderEditor"]>[0], "row">) => React.ReactNode; onCopy: (element: TElement, subRow: TSubRow) => string; onPaste: (element: TElement, subRow: TSubRow, value: string) => TElement; onClear: (element: TElement, subRow: TSubRow) => TElement; isReadonly?: (element: TElement, subRow: TSubRow) => boolean; } & Omit, "renderCell" | "renderEditor" | "onCopy" | "onPaste" | "onClear" | "isReadonly">; declare type ISpreadsheetProps = { elements: TElement[]; createSubRows: (element: TElement) => TSubRow[]; areRowsEqual: (a: TElement, b: TElement) => boolean; columnProps: ISpreadsheetColumnProps[]; getKey: (element: TElement) => TKey; onChange: (elements: TElement[]) => void; } & Omit, "rows" | "undoStack" | "errors" | "onChange" | "onUndo" | "onRedo" | "columnProps" | "applyPastes">; export declare const useSpreadsheet: ({ elements, createSubRows, areRowsEqual, columnProps, getKey, onChange, ...props }: ISpreadsheetProps) => ISpreadsheetData; export {};