import * as react_jsx_runtime from 'react/jsx-runtime'; import * as React from 'react'; type FilePreviewState = "loading" | "preview" | "empty" | "error" | "importing"; type CsvRowStatus = "pending" | "success" | "failed"; interface CsvPreviewColumn { key: string; /** Display label shown in the column header. */ label: string; } interface CsvPreviewRow extends Record { _status?: CsvRowStatus; /** Shown in a tooltip when status is "failed". */ _statusMessage?: string; } interface StaffOption { id: string; name: string; } interface FilePreviewDialogProps { open: boolean; onOpenChange: (open: boolean) => void; /** Name of the file being previewed. */ fileName?: string; state?: FilePreviewState; errorMessage?: string; /** Ordered list of columns to display. */ columns?: CsvPreviewColumn[]; /** Data rows — keys match CsvPreviewColumn.key. */ rows?: CsvPreviewRow[]; /** Called when the user edits a cell inline. */ onRowChange?: (rowIndex: number, key: string, value: string) => void; /** Called when the user clicks the delete icon on a row. */ onRowDelete?: (rowIndex: number) => void; /** Called when the user clicks "Import". */ onImport?: () => void; /** Called when the user clicks "Cancel" during import. */ onCancelImport?: () => void; /** 0–100 progress value shown in the importing state. */ importProgress?: number; /** Total rows in the file (shown in the preview header). */ totalRows?: number; /** Rows that passed validation (shown in the preview header). */ validRows?: number; /** Rows per page for the preview table. Defaults to 10. */ pageSize?: number; /** * List of staff members available for assignment. * When provided, a basic staff selector is rendered above the table. * Import is blocked until a staff member is selected. * Ignored when `staffSelector` is provided. */ staffOptions?: StaffOption[]; /** Currently selected staff ID. */ selectedStaffId?: string; /** Called when the user picks a staff member. */ onStaffSelect?: (staffId: string) => void; /** * Custom staff-selector block rendered above the table. When provided, replaces * the entire built-in "Assign staff" block (label + select + helper text). * The caller still drives `selectedStaffId` so the Import button gating works. */ staffSelector?: React.ReactNode; /** * Rendered below the staff selector while previewing. Its purpose is the batch * tag step: tags chosen here apply to every client in the import, so it belongs * beside the assignment rather than after it. */ tagStep?: React.ReactNode; className?: string; } declare function FilePreviewDialog({ open, onOpenChange, fileName, state, errorMessage, columns, rows, onRowChange, onRowDelete, onImport, onCancelImport, importProgress, totalRows, validRows, pageSize, staffOptions, selectedStaffId, onStaffSelect, staffSelector, tagStep, className, }: FilePreviewDialogProps): react_jsx_runtime.JSX.Element; export { type CsvPreviewColumn, type CsvPreviewRow, type CsvRowStatus, FilePreviewDialog, type FilePreviewDialogProps, type FilePreviewState, type StaffOption };