/**
 * ThreadForm file bar — displays a file with inline doc check status,
 * AI classification (agent), validation checks, PDF split sub-docs,
 * client response mechanism for issues, and info dialog.
 */
import type { ContentItem, AiContentResult, DocCheckData, ClassificationResult, SendBackIssue } from '../types.js';
import type { ValidationRuleResult } from '../../../types/validation.js';
import type { ClarificationResponse } from '../../../types/clarification.js';
import type { FileManagerCallbacks } from '../../../types/file_manager.js';
import { type DocumentTypeOption } from '../../shared/document_type_editor.js';
import type { RuleDecision } from '../types.js';
export interface FileBarProps {
    item: ContentItem;
    doc_check?: DocCheckData | null;
    ai_result?: AiContentResult;
    role: 'agent' | 'client';
    /** Pipeline status for showing spinners */
    pipeline_status?: 'queued' | 'classifying' | 'validating' | 'done' | 'error' | null;
    /** Number of validation rules being run (drives "Running N rules…" text). */
    pipeline_rule_count?: number;
    /** Rule display names — surfaced via title attr on hover. */
    pipeline_rule_names?: string[];
    /** Classification result for info dialog */
    classification_result?: ClassificationResult | null;
    /** Validation rule results for info dialog */
    validation_rule_results?: ValidationRuleResult[];
    on_view?: (item: ContentItem) => void;
    on_remove?: (item: ContentItem) => void;
    on_respond?: (item: ContentItem, response: {
        comment?: string;
        file?: File;
    }) => void;
    on_accept?: (content_ref: string) => void;
    on_dismiss?: (content_ref: string) => void;
    on_send_to_client?: (content_ref: string) => void;
    /** Callback when client responds to an RFI clarification */
    on_clarification_respond?: (id: string, response: ClarificationResponse) => void;
    /** Callback when agent sends back selected issues as a new task. Keyed per-issue, not per-rule. */
    on_send_back_issues?: (item: ContentItem, issues: SendBackIssue[], accepted_issue_keys: string[]) => void;
    /** Callback when the agent submits a batch of per-rule decisions from the
     *  Pending Review panel. The parent applies the rule_actions and creates
     *  one task with one message per Send Back rule (cross-file Q1 batches
     *  merge via merge_send_back_message). */
    on_submit_decisions?: (item: ContentItem, decisions: RuleDecision[]) => void;
    /** Whether issues have already been sent back (pill shows "Sent Back") */
    sent_back?: boolean;
    /** Callback to persist updates to the ContentItem in form data */
    on_update_content_item?: (content_id: string, updates: Partial<ContentItem>) => void;
    /** File manager callbacks for upload in clarification response dropzone */
    file_manager?: FileManagerCallbacks;
    /** Callback when replacement files are submitted — adds them to the main thread for pipeline processing */
    on_replacement_files?: (source_content_id: string, files: import('../../../types/file_attachment.js').FormFileAttachment[]) => void;
    /** Name of the file that replaced this one (set when item.replaced_by_content_id is present) */
    replaced_by_name?: string;
    /** Name of the file this one replaces (set when item.replaces_content_id is present) */
    replaces_name?: string;
    /** Nesting depth for chained replacements (0 = original, 1 = first replacement, etc.) */
    nesting_depth?: number;
    /** Render the view action as an eye icon (default) or as "View" text. */
    view_button_variant?: 'icon' | 'text';
    /**
     * Whether to show the info (classification + validation details) icon.
     * When omitted, defaults to true for agents, false for clients.
     */
    show_info_icon?: boolean;
    /**
     * Whether the parent task has been resolved (status === 'completed' after the
     * aggregate resolver passed). When true, suppress error/issue pills on the
     * file bar — the SendBackMessage's RESOLVED header already conveys success
     * for the whole set, so per-file warnings would just contradict it.
     */
    task_resolved?: boolean;
    /**
     * Whether the spawned send-back task for THIS file has been resolved.
     * When true, the "Sent Back" pill is replaced with "Resolved" — the issue
     * has been addressed in the child question, so the parent file shouldn't
     * keep advertising the stale send-back state.
     */
    sent_back_resolved?: boolean;
    /** Available document types for the editor dropdown. When omitted or empty,
     *  the document-type pill is read-only. Agent-side feature only. */
    available_document_types?: DocumentTypeOption[];
    /** Called when the agent picks a new document type from the dropdown.
     *  Parent should update item.classification_result and re-run validations. */
    on_change_document_type?: (item: ContentItem, new_type_id: string) => Promise<void> | void;
    /** Whether this file is currently marked as "kept" for collected data. When
     *  undefined the Keep checkbox is hidden — pass it explicitly to render the box. */
    keep_selected?: boolean;
    /** Called when the agent toggles the Keep checkbox. Same shape as the
     *  Collected Data tab's on_selection_change so consumers wire one handler. */
    on_keep_change?: (selections: Record<string, boolean>) => void;
    /** When false, suppresses the file-level Keep checkbox even if keep_selected
     *  is provided. Used by client view, which doesn't manage collected-data selections. */
    show_keep_checkbox?: boolean;
}
export declare function FileBar({ item, doc_check, ai_result, role, pipeline_status, pipeline_rule_count, pipeline_rule_names, classification_result, validation_rule_results, on_view, on_remove, on_respond, on_accept, on_dismiss, on_send_to_client, on_clarification_respond, on_send_back_issues, on_submit_decisions, sent_back, on_update_content_item, file_manager, on_replacement_files, replaced_by_name, replaces_name, nesting_depth, view_button_variant, show_info_icon, task_resolved, sent_back_resolved, available_document_types, on_change_document_type, keep_selected, on_keep_change, show_keep_checkbox, }: FileBarProps): import("react/jsx-runtime").JSX.Element | null;
//# sourceMappingURL=file_bar.d.ts.map