/**
 * File upload component for collaboration forms
 * Provides drag-and-drop file upload, file list display, and file management.
 *
 * Uses FileManagerCallbacks for upload/remove operations and FormFileAttachment
 * as the data shape stored in form_data.
 */
import React from 'react';
import type { FormFileAttachment, FileStatus } from '../types/file_attachment.js';
import type { FileManagerCallbacks } from '../types/file_manager.js';
import type { ClarificationItem, ClarificationCallbacks } from '../types/clarification.js';
/**
 * Props for CollabFormFileUpload component
 */
export interface CollabFormFileUploadProps {
    /** Field identifier for unique file input ID */
    field_id_final: string;
    /** Whether public file uploads are enabled */
    accept_files_public?: boolean;
    /** Whether private file uploads are enabled */
    accept_files_private?: boolean;
    /** Server directory path where files should be saved (passed to upload options) */
    files_dir?: string;
    /** Maximum file size in bytes */
    max_size?: number;
    /** Minimum number of files */
    min_files?: number;
    /** Maximum number of files */
    max_files?: number;
    /** File type accept attribute */
    file_accept?: string;
    /** Custom file validator callback — returns error string to reject, null to accept */
    file_validator?: (file: File) => string | null;
    /** File manager callbacks (required — handles upload, remove, download URL) */
    file_manager: FileManagerCallbacks;
    /** Controlled public files state */
    files?: FormFileAttachment[];
    /** Callback when public files change */
    on_files_change?: (files: FormFileAttachment[]) => void;
    /** Controlled private files state */
    private_files?: FormFileAttachment[];
    /** Callback when private files change */
    on_private_files_change?: (files: FormFileAttachment[]) => void;
    /** Permission string required to view/upload private files */
    private_files_permission?: string;
    /** Whether user has permission to access private files */
    can_access_private_files?: boolean;
    /** Show status badges for non-active files (default: false) */
    show_file_status?: boolean;
    /** Allow re-uploading missing files (default: false) */
    allow_reupload?: boolean;
    /** File status map (file_id -> status) from use_file_status hook */
    file_statuses?: Record<string, FileStatus>;
    /** Scope ID passed to upload options */
    scope_id?: string;
    /** User ID passed to upload options */
    uploaded_by?: string;
    /** Set of file IDs currently being validated by LLM (shows spinner overlay) */
    validating_file_ids?: Set<string>;
    /** Set of file IDs that have validation errors (shows error badge) */
    error_file_ids?: Set<string>;
    /** Set of file IDs that passed validation (shows green checkmark badge) */
    passed_file_ids?: Set<string>;
    /** Map of file_id → array of issue descriptions for error popover */
    error_file_details?: Record<string, string[]>;
    /** Clarification items for file-level issue dialogs */
    clarification_items?: ClarificationItem[];
    /** Callbacks for clarification lifecycle */
    clarification_callbacks?: ClarificationCallbacks;
    /** Custom className for the private files section background (default: 'bg-muted rounded-md p-3') */
    private_files_class_name?: string;
    /** When true, the file upload accordion starts open even when no files exist */
    default_file_accordion_open?: boolean;
    /** Hide the upload dropzone but still show existing files (used when autofill manages uploads) */
    hide_upload_dropzone?: boolean;
    /** Optional React node to replace the standard dropzone (e.g. AutofillDropzone) */
    autofill_dropzone?: React.ReactNode;
}
/**
 * Collaboration form file upload component
 */
export declare function CollabFormFileUpload({ field_id_final, accept_files_public, accept_files_private, files_dir, max_size, min_files, max_files, file_accept, file_validator, file_manager, files: controlled_files, on_files_change, private_files: controlled_private_files, on_private_files_change, private_files_permission, can_access_private_files: can_access_private_files_prop, show_file_status, allow_reupload, file_statuses, scope_id, uploaded_by, validating_file_ids, error_file_ids, passed_file_ids, error_file_details, clarification_items, clarification_callbacks, private_files_class_name, default_file_accordion_open, hide_upload_dropzone, autofill_dropzone, }: CollabFormFileUploadProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=collab_form_file_upload.d.ts.map