import { default as React } from 'react'; import { Sheet, Selection, CellMatrix, Cell } from './types'; export type DateBaseLocale = 'uk' | 'us'; type SheetChangePath = { sheetId: string; path: string[]; key?: string; value: any; type?: 'update' | 'delete'; }; export type Hooks = { calcChainChange?: () => void; sheetLengthChange?: () => void; dataVerificationChange?: () => void; liveQueryChange?: () => void; imageListChange?: () => void; iframeListChange?: () => void; conditionRulesChange?: () => void; conditionFormatChange?: () => void; filterSelectChange?: () => void; filterChange?: () => void; cellDataChange?: () => void; hyperlinkChange?: () => void; updateCellYdoc?: (changes: SheetChangePath[]) => void; updateAllCell?: (sheetId: string) => void; beforeUpdateCell?: (r: number, c: number, value: any) => boolean; /** Clears RTC remote-apply lock so local edits can run data-block formulas. */ onLocalCellEdit?: () => void; afterUpdateCell?: (row: number, column: number, oldValue: any, newValue: any) => void; afterSelectionChange?: (sheetId: string, selection: Selection) => void; beforeRenderRowHeaderCell?: (rowNumber: string, rowIndex: number, top: number, width: number, height: number, ctx: CanvasRenderingContext2D) => boolean; afterRenderRowHeaderCell?: (rowNumber: string, rowIndex: number, top: number, width: number, height: number, ctx: CanvasRenderingContext2D) => void; beforeRenderColumnHeaderCell?: (columnChar: string, columnIndex: number, left: number, width: number, height: number, ctx: CanvasRenderingContext2D) => boolean; afterRenderColumnHeaderCell?: (columnChar: string, columnIndex: number, left: number, width: number, height: number, ctx: CanvasRenderingContext2D) => void; beforeRenderCellArea?: (cells: CellMatrix, ctx: CanvasRenderingContext2D) => boolean; beforeRenderCell?: (cell: Cell | null, cellInfo: { row: number; column: number; startX: number; startY: number; endX: number; endY: number; }, ctx: CanvasRenderingContext2D) => boolean; afterRenderCell?: (cell: Cell | null, cellInfo: { row: number; column: number; startX: number; startY: number; endX: number; endY: number; }, ctx: CanvasRenderingContext2D) => void; beforeCellMouseDown?: (cell: Cell | null, cellInfo: { row: number; column: number; startRow: number; startColumn: number; endRow: number; endColumn: number; }) => boolean; afterCellMouseDown?: (cell: Cell | null, cellInfo: { row: number; column: number; startRow: number; startColumn: number; endRow: number; endColumn: number; }) => void; beforePaste?: (selection: Selection[] | undefined, content: string) => boolean; beforeUpdateComment?: (row: number, column: number, value: any) => boolean; afterUpdateComment?: (row: number, column: number, oldValue: any, value: any) => void; beforeInsertComment?: (row: number, column: number) => boolean; afterInsertComment?: (row: number, column: number) => void; beforeDeleteComment?: (row: number, column: number) => boolean; afterDeleteComment?: (row: number, column: number) => void; beforeAddSheet?: (sheet: Sheet) => boolean; afterAddSheet?: (sheet: Sheet) => void; beforeActivateSheet?: (id: string) => boolean; afterActivateSheet?: (id: string) => void; beforeDeleteSheet?: (id: string) => boolean; afterDeleteSheet?: (id: string) => void; beforeUpdateSheetName?: (id: string, oldName: string, newName: string) => boolean; afterUpdateSheetName?: (id: string, oldName: string, newName: string) => void; afterImagesChange?: () => void; afterIframesChange?: () => void; afterFrozenChange?: () => void; afterOrderChanges?: () => void; afterColorChanges?: () => void; afterHideChanges?: () => void; afterConfigChanges?: () => void; afterColRowChanges?: () => void; afterShowGridLinesChange?: () => void; afterNameChanges?: () => void; afterStatusChanges?: () => void; }; type CommentUIDragFn = (e: React.MouseEvent) => void; export type Settings = { column?: number; row?: number; addRows?: number; allowEdit?: boolean; showToolbar?: boolean; showFormulaBar?: boolean; showSheetTabs?: boolean; data: Sheet[]; config?: any; devicePixelRatio?: number; lang?: string | null; forceCalculation?: boolean; rowHeaderWidth?: number; columnHeaderHeight?: number; defaultColWidth?: number; defaultRowHeight?: number; defaultFontSize?: number; toolbarItems?: string[]; cellContextMenu?: string[]; headerContextMenu?: string[]; sheetTabContextMenu?: string[]; filterContextMenu?: string[]; getCommentCellUI?: ((row: number, column: number, dragHandler: CommentUIDragFn, isHover?: boolean) => React.ReactNode) | null; generateSheetId?: () => string; hooks?: Hooks; customToolbarItems?: { key: string; tooltip?: string; children?: React.ReactNode; iconName?: string; icon?: React.ReactNode; onClick?: (e: React.MouseEvent) => void; }[]; currency?: string; onDuneChartEmbed?: () => void; onSheetCountChange?: (count: number) => void; isAuthorized?: boolean; isFlvReadOnly?: boolean; isRTCActive?: boolean; dateBaseLocale?: DateBaseLocale; /** When true, do not auto-select A1 on load (e.g. onboarding modal runs first). */ suppressInitialCellSelection?: boolean; }; export declare const defaultSettings: Required; export {};