import { PlateEditorClearConfirm, Rack, SampleType, SlotPosition, Well, WellEditData, WellEditField, WellPlateFormat, WellPlateSize, WellSampleDropData, WellSampleDropParser } from '../types'; interface Props { /** The plates. Never mutated; changes arrive as emitted intents. */ modelValue: Rack[]; activeRackId?: string; /** Formats offered by the format control; one entry hides it. */ formats?: WellPlateFormat[]; /** R/G/B/Y slot buttons: `true` for all four, a list for a subset. */ slots?: boolean | SlotPosition[]; /** Reorder plate tabs by drag or Alt+←/→. */ reorder?: boolean; /** Show the Drag toggle that moves / swaps wells (`well-move`). */ wellDrag?: boolean; /** Groups for the selection bar; a well's `group` holds the group id and colors it. */ groups?: SampleType[] | false; /** Fields of the single-well inspector; `false` turns the inspector off. */ wellFields?: WellEditField[] | false; /** Accept dropped samples: `true` reads JSON payloads, a parser may return `null` to reject. */ sampleDrop?: boolean | WellSampleDropParser; /** Show an Import button: a chosen file emits `import`, pasted text `import-text` (see `importMode`). */ import?: boolean; /** What `import` offers: a file picker, a paste dialog whose text `import-text` emits unparsed, or both. */ importMode?: 'file' | 'paste' | 'both'; /** The file picker's `accept` filter for `import`, e.g. `'.csv'`. */ importAccept?: string; /** Export formats offered in the Import / Export menu; each emits `export`. */ export?: string[] | false; /** Clear-plate button: ask first, clear with an Undo button, or hide it. */ clear?: 'confirm' | 'undo' | false; /** Text and variant of the `clear="confirm"` dialog; unset fields keep the defaults. */ clearConfirm?: PlateEditorClearConfirm; /** Show Undo / Redo (also shown when `clear` is `'undo'`); they only emit intents. */ history?: boolean; canUndo?: boolean; canRedo?: boolean; /** Show the Fill Series button. */ fillSeries?: boolean; /** On a full plate: disable Fill Series, or keep it enabled and still emit `fill-series` (e.g. to show a toast). */ fillSeriesWhenFull?: 'disable' | 'emit'; maxRacks?: number; minRacks?: number; /** No editing controls; well clicks still emit `well-click`. */ readonly?: boolean; size?: WellPlateSize; /** Footer text while nothing is selected; replaces the built-in selection hint. */ hint?: string; } interface PlateEditorWellEditorSlotProps { rack: Rack; rackId: string; wellId: string; wellData?: Partial; editFields: WellEditField[]; defaultInjectionVolume: number; position: { x: number; y: number; }; save: (data: WellEditData) => void; clear: () => void; close: () => void; /** True in the rail, false in the popover. */ inline: boolean; } type __VLS_Slots = { /** Replaces the default single-well inspector, in the rail or the popover. */ 'well-editor'?: (props: PlateEditorWellEditorSlotProps) => unknown; /** Extra controls at the right end of the tab bar. */ 'tab-extra'?: () => unknown; /** Extra controls at the right end of the toolbar. */ 'toolbar-extra'?: () => unknown; }; declare const __VLS_base: import('vue').DefineComponent any; undo: () => any; "well-click": (rackId: string, wellId: string) => any; "selection-change": (wellIds: string[]) => any; "well-move": (rackId: string, sourceWellId: string, targetWellId: string) => any; "well-edit": (rackId: string, wellId: string, data: WellEditData) => any; "well-clear": (rackId: string, wellId: string) => any; "sample-drop": (rackId: string, wellId: string, data: WellSampleDropData, event: DragEvent) => any; import: (file: File) => any; export: (format: string) => any; "update:activeRackId": (rackId: string) => any; "rack-add": () => any; "rack-remove": (rackId: string) => any; "rack-reorder": (rackIds: string[]) => any; "update:format": (rackId: string, format: WellPlateFormat) => any; "update:slot": (rackId: string, slot: SlotPosition) => any; assign: (rackId: string, wellIds: string[], groupId: string | undefined) => any; "fill-series": (rackId: string) => any; "import-text": (text: string) => any; "group-add": () => any; redo: () => any; }, string, import('vue').PublicProps, Readonly & Readonly<{ onClear?: ((rackId: string) => any) | undefined; onUndo?: (() => any) | undefined; "onWell-click"?: ((rackId: string, wellId: string) => any) | undefined; "onSelection-change"?: ((wellIds: string[]) => any) | undefined; "onWell-move"?: ((rackId: string, sourceWellId: string, targetWellId: string) => any) | undefined; "onWell-edit"?: ((rackId: string, wellId: string, data: WellEditData) => any) | undefined; "onWell-clear"?: ((rackId: string, wellId: string) => any) | undefined; "onSample-drop"?: ((rackId: string, wellId: string, data: WellSampleDropData, event: DragEvent) => any) | undefined; onImport?: ((file: File) => any) | undefined; onExport?: ((format: string) => any) | undefined; "onUpdate:activeRackId"?: ((rackId: string) => any) | undefined; "onRack-add"?: (() => any) | undefined; "onRack-remove"?: ((rackId: string) => any) | undefined; "onRack-reorder"?: ((rackIds: string[]) => any) | undefined; "onUpdate:format"?: ((rackId: string, format: WellPlateFormat) => any) | undefined; "onUpdate:slot"?: ((rackId: string, slot: SlotPosition) => any) | undefined; onAssign?: ((rackId: string, wellIds: string[], groupId: string | undefined) => any) | undefined; "onFill-series"?: ((rackId: string) => any) | undefined; "onImport-text"?: ((text: string) => any) | undefined; "onGroup-add"?: (() => any) | undefined; onRedo?: (() => any) | undefined; }>, { clear: "confirm" | "undo" | false; size: WellPlateSize; readonly: boolean; slots: boolean | SlotPosition[]; history: boolean; groups: SampleType[] | false; activeRackId: string; formats: WellPlateFormat[]; reorder: boolean; wellDrag: boolean; wellFields: WellEditField[] | false; sampleDrop: boolean | WellSampleDropParser; import: boolean; importMode: "file" | "paste" | "both"; importAccept: string; export: string[] | false; clearConfirm: PlateEditorClearConfirm; canUndo: boolean; canRedo: boolean; fillSeries: boolean; fillSeriesWhenFull: "disable" | "emit"; maxRacks: number; minRacks: number; }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>; declare const __VLS_export: __VLS_WithSlots; declare const _default: typeof __VLS_export; export default _default; type __VLS_WithSlots = T & { new (): { $slots: S; }; };