import type { MutableRefObject } from 'react'; import type { WorkSpreadsheetContent } from '../work-types'; import { type SpreadsheetClipboardPort } from './spreadsheet-clipboard'; import type { SpreadsheetClipboardCommandPort } from './spreadsheet-command-controller'; import type { SpreadsheetCellRange } from './spreadsheet-cell-range'; import { type SpreadsheetClipboardSnapshot, type SpreadsheetPasteContent, type SpreadsheetPasteSpecialOptions } from './spreadsheet-paste-special'; export interface SpreadsheetClipboardSelectionSource { sheetId: string; range: SpreadsheetCellRange; plainText: string; } export interface SpreadsheetPasteSpecialDialogSource { snapshot: SpreadsheetClipboardSnapshot; targetSheetId: string; targetRange: SpreadsheetCellRange; invoker: HTMLElement | null; } export declare function useSpreadsheetClipboard({ clipboard, canAccessSelection, clearSelection, commit, contentRef, editable, fallbackFocusTarget, getSelection, }: { clipboard?: SpreadsheetClipboardPort; canAccessSelection: boolean; clearSelection: () => boolean; commit: (content: WorkSpreadsheetContent) => boolean; contentRef: MutableRefObject; editable: boolean; fallbackFocusTarget: () => HTMLElement | null; getSelection: () => SpreadsheetClipboardSelectionSource | null; }): { applyDialog: (options: SpreadsheetPasteSpecialOptions) => boolean; closeDialog: () => void; commandPort: SpreadsheetClipboardCommandPort; copyToDataTransfer: (data: DataTransfer, cut: boolean) => boolean; dialogSource: SpreadsheetPasteSpecialDialogSource | null; pasteText: (plainText: string, content?: SpreadsheetPasteContent, notify?: boolean) => boolean; restoreDialogFocusTarget: () => HTMLElement | null; validateDialog: (options: SpreadsheetPasteSpecialOptions) => string | null; };