import { Well, WellEditData, WellPlateSelectionMode, WellSampleDropData, WellSampleDropParser } from '../types'; import { WellPlateCoordinate } from './WellPlate.geometry'; export interface WellPlateInteractionOptions { modelValue: () => string[]; selectionMode: () => WellPlateSelectionMode; disabled: () => boolean; readonly: () => boolean; editable: () => boolean; allowSampleDrop: () => boolean; sampleDropParser: () => WellSampleDropParser | undefined; rowLabels: () => string[]; wellGrid: () => Well[][]; emitSelected: (wellIds: string[]) => void; emitWellClick: (wellId: string, event: MouseEvent) => void; emitWellHover: (wellId: string | null, event?: MouseEvent) => void; emitContextMenu: (wellId: string, event: MouseEvent) => void; emitWellMove: (sourceWellId: string, targetWellId: string) => void; emitWellEdit: (wellId: string, data: WellEditData) => void; emitWellClear: (wellId: string) => void; emitSampleDrop: (wellId: string, data: WellSampleDropData, event: DragEvent) => void; } export declare function nextClickedWellSelection(selectedWellIds: string[], wellId: string, selectionMode: WellPlateSelectionMode, event: Pick): string[]; export declare function useWellPlateInteraction(options: WellPlateInteractionOptions): { dragSourceWell: import('vue').Ref; dragTargetWell: import('vue').Ref; isDragging: import('vue').Ref; dragStart: import('vue').Ref<{ row: number; col: number; } | null, WellPlateCoordinate | { row: number; col: number; } | null>; dragEnd: import('vue').Ref<{ row: number; col: number; } | null, WellPlateCoordinate | { row: number; col: number; } | null>; hoveredWell: import('vue').Ref; editingWellId: import('vue').Ref; editPopupPosition: import('vue').Ref<{ x: number; y: number; }, { x: number; y: number; } | { x: number; y: number; }>; selectedWellSet: import('vue').ComputedRef>; dragSelectedWells: import('vue').ComputedRef>; isSelected: (wellId: string) => boolean; handleWellClick: (well: Well, event: MouseEvent) => void; handleEditSave: (data: WellEditData) => void; handleEditClear: () => void; handleEditClose: () => void; handleWellMouseDown: (well: Well, event: MouseEvent) => void; handleWellMouseEnter: (well: Well, event: MouseEvent) => void; handleWellMouseLeave: () => void; handleMouseUp: () => void; handleContextMenu: (well: Well, event: MouseEvent) => void; handleDragStart: (well: Well, event: DragEvent) => void; handleDragOver: (well: Well, event: DragEvent) => void; handleDragLeave: () => void; handleDrop: (well: Well, event: DragEvent) => void; handleDragEnd: () => void; handleWellMoveKeydown: (well: Well, event: KeyboardEvent) => void; handleKeyDown: (event: KeyboardEvent) => void; moveAnnouncement: import('vue').Ref; moveAnnouncerStyle: Readonly<{ position: "absolute"; width: "1px"; height: "1px"; padding: "0"; margin: "-1px"; overflow: "hidden"; clip: "rect(0, 0, 0, 0)"; whiteSpace: "nowrap"; border: "0"; }>; };