/**
 * Task card — expandable card with checkbox, title, status, thread timeline.
 */
import type { ThreadTask } from '../types.js';
/**
 * Back-reference from a spawned clarification task to the file+issue it came
 * from. Rendered as an inline chip under the child task title; click scrolls
 * to and expands the parent task.
 */
export interface TaskParentRef {
    parent_task_id: string;
    parent_question_number: number;
    file_name?: string;
    /** One rule name per issue; the chip shows the first and counts the rest. */
    rule_names: string[];
}
export interface TaskCardProps {
    task: ThreadTask;
    role: 'agent' | 'client';
    expanded: boolean;
    /** 1-based number shown as a Q{n} pill before the title. */
    question_number?: number;
    /** When set, renders a back-reference chip under the title. */
    parent_ref?: TaskParentRef | null;
    /** Called when the parent-ref chip is clicked — consumer expands + scrolls. */
    on_navigate_to_task?: (task_id: string) => void;
    user_name?: string;
    user_id?: string;
    on_toggle: () => void;
    on_toggle_complete?: (task_id: string) => void;
    on_delete_task?: (task_id: string) => void;
    on_approve_task?: (task_id: string) => void;
    on_reopen_task?: (task_id: string) => void;
    /** Agent-only: rename the task title. Omit to hide the edit affordance. */
    on_rename_task?: (task_id: string, title: string) => void;
    on_send?: (task_id: string, text: string, files: File[]) => void;
    on_send_comment?: (task_id: string, text: string) => void;
    on_upload_files?: (task_id: string, files: File[]) => void;
    on_add_question?: (task_id: string) => void;
    on_view_file?: (item: import('../types.js').ContentItem) => void;
    on_remove_file?: (item: import('../types.js').ContentItem) => void;
    on_accept?: (content_ref: string) => void;
    on_dismiss?: (content_ref: string) => void;
    on_send_to_client?: (content_ref: string) => void;
    on_edit_message?: (task_id: string, message_id: string, updated: {
        content_text?: string;
        content_items?: import('../types.js').ContentItem[];
    }) => void;
    on_delete_message?: (task_id: string, message_id: string) => void;
    /** Upload a file via file_manager, returns ContentItem with real file_id */
    upload_file?: (file: File) => Promise<import('../types.js').ContentItem>;
    /** Agent sends back selected issues as a new task */
    on_send_back_issues?: (item: import('../types.js').ContentItem, issues: import('../types.js').SendBackIssue[], accepted_issue_keys: string[]) => void;
    /** Agent submits batch decisions from the Pending Review panel */
    on_submit_decisions?: (item: import('../types.js').ContentItem, decisions: import('../types.js').RuleDecision[]) => void;
    /** Persist updates to a ContentItem */
    on_update_content_item?: (content_id: string, updates: Partial<import('../types.js').ContentItem>) => void;
    /** Pipeline file statuses (status enum + optional rule progress metadata) */
    file_statuses?: Map<string, import('../hooks/use_file_pipeline.js').FileStatusEntry>;
    /** Classification results per content_id */
    classification_results?: Map<string, import('../types.js').ClassificationResult>;
    /** Validation results per content_id */
    validation_results?: Map<string, import('../../../types/validation.js').ValidationRuleResult[]>;
    /** File manager callbacks for upload in clarification response dropzone */
    file_manager?: import('../../../types/file_manager.js').FileManagerCallbacks;
    /** Callback when replacement files are submitted from a clarification response */
    on_replacement_files?: (source_content_id: string, files: import('../../../types/file_attachment.js').FormFileAttachment[]) => void;
    /** View action rendering — 'icon' (default) or 'text'. Forwarded to FileBar. */
    view_button_variant?: 'icon' | 'text';
    /** Override info-icon visibility. When omitted, defaults to agent-only. Forwarded to FileBar. */
    show_info_icon?: boolean;
    /**
     * Set of source_content_ids whose spawned send-back task is now resolved.
     * Used by FileBar to suppress the "Sent Back" pill on the parent file once
     * the child question has been completed.
     */
    sent_back_resolved_ids?: Set<string>;
    /** True while the aggregate resolver is in-flight for this task. */
    resolving?: boolean;
    /** Available document types — forwarded to FileBar's hover-pencil editor. */
    available_document_types?: import('../../shared/document_type_editor.js').DocumentTypeOption[];
    /** Called when the agent edits a file's document type — parent re-runs validation. */
    on_change_document_type?: (item: import('../types.js').ContentItem, new_type_id: string) => Promise<void> | void;
    /** Map of content_id → effective Keep state. Forwarded to ThreadTimeline → FileBar. */
    keep_selections?: Record<string, boolean>;
    /** Toggle handler for the Keep checkbox. */
    on_keep_change?: (selections: Record<string, boolean>) => void;
    /** Called when a user submits an inline reply on a send-back issue block. */
    on_reply_to_issue?: (task_id: string, source_content_id: string, file_name: string | undefined, rule_name: string | undefined, text: string) => void;
}
export declare function TaskCard({ task, role, expanded, question_number, parent_ref, on_navigate_to_task, user_name, user_id, on_toggle, on_toggle_complete, on_delete_task, on_approve_task, on_reopen_task, on_rename_task, on_send, on_send_comment, on_upload_files, on_add_question, on_view_file, on_remove_file, on_accept, on_dismiss, on_send_to_client, on_edit_message, on_delete_message, upload_file, on_send_back_issues, on_submit_decisions, on_update_content_item, file_statuses, classification_results, validation_results, file_manager, on_replacement_files, view_button_variant, show_info_icon, sent_back_resolved_ids, resolving, available_document_types, on_change_document_type, keep_selections, on_keep_change, on_reply_to_issue, }: TaskCardProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=task_card.d.ts.map